Существует два основных способа решения этой проблемы:
не используют интерфейс PC / SC, используемый в java.smartcardio
, а используют собственные проприетарные библиотеки от производителя устройства чтения карт, например, использование оболочки (на основе JNI, но есть альтернативы лучшего / более высокого уровня);
продолжают использовать APDU, но используют байт CLA, установленный в шестнадцатеричное значение FF
, открывая подключение к читателю. FF
зарезервировано, но, как правило, зарезервировано для такого типа доступа к устройству чтения карт, например, для доступа к картам памяти без уровня ISO / IEC 7816-4, которые поддерживаются производителем считывателя.
из двух (только для полноты): многие устройства считывания карт были созданы с использованием чипа USB-последовательный интерфейс, что означает, что вы можете напрямую подключаться к (виртуальному) последовательному интерфейсу; Само собой разумеется, вы должны будете знать, какие команды отправлять и программировать все самостоятельно, если этот интерфейс вообще присутствует (Omnikey 3121 является относительно новым, поэтому я был бы удивлен).
Обе опции основаны на определенных функциях устройства чтения карт, поэтому вам нужно будет найти информацию для читателя, чтобы узнать, что это возможно. Насколько мне известно, нет способа запросить, какие функции предоставляются. Не ожидайте слишком многого от стандартизации для такого рода функциональности.
Вы проверили документацию вашего кард-ридера?
Вы спрашиваете, как сделать это в Excel или как это сделать в приложении VBA? Если вы просто хотите сделать это в Excel, здесь один из способов.
Put the number you want to multiply by in a cell that is not in your range. Select the cell and "Copy" it to the clipboard. Next, select the Range A1:D5, and from the menu choose Edit|Paste Special. A dialog box will appear. In the "Operation" area, select "Multiply" and click "OK".
(Excel 2003 or earlier) Choose Edit | Paste Special | Multiply
(Excel 2007 or later) Click on the Paste down arrow | Paste Special | Multiply
Если это не обязательно должен быть макрос, просто поместите = A1 * 1.1
в (скажем) D7, затем перетащите маркер заполнения формулы вниз, затем вниз.