Я новичок в C ++ и пытаюсь получить вывод от кард-ридер:
Для этого я использую DLL. Моя проблема в том, что мой ответ возвращает byteArray, и я хотел бы преобразовать его в обычную строку. Итак, мой настоящий код в настоящее время:
res = CT_data(ctn, &dad, &sad, 5, command, &lenr, response);
printf("\nThe Response: %s", response);
Это выводит на мою консоль:
The Response: ò
Но в документации сказано, что если соединение с устройством работает, оно должно вернуться 9500
или же 9000
!
Так что я думаю, что я должен преобразовать response
! Как я могу это сделать? Благодарю.
Из документации:
nSuccess = CT_data(CT_data(ctn,dad,sad,lenc,commando,lenr,response)
ctn: целое число, 16 бит, без знака (internn Terminalnummer aus CT_INIT)
папа: целое число, 8 бит, без знака (адрес назначения)
sad: целое число, 8 бит, без знака (источник-адрес)
lenc: целое число 16 бит, без знака (Länge des Commandos)
коммандос: байт-массив, (коммандо)
lenr: целое число 16 бит, без знака (Länge der Response)
ответ: Byte-Array (Antwort)
nSuccess: целое число, 8 бит, со знаком (0 = Erfolgreich, -1 = Fehlerhaft)
nSuccess = CT_data(ctn,dad,sad,lenc,command[],lenr,response[])
Wenn nSuccess = 0, dann response [] prüfen. Ответ Wenn = 9000 или 9500 войны CT_Reset erfolgreich. Als nächstes dann die Kartenanforderung
typedef CHAR (WINAPI *CT_DATA) (USHORT, UCHAR*, UCHAR*, USHORT, UCHAR*, USHORT*, UCHAR*);
Может ли ответ, упомянутый в документации, быть 2 байта в шестнадцатеричном формате? Тогда длина ответа, то есть возвращаемое значение вызова CT_data (), должна быть 2; и первый байт массива ответа должен быть 0x90 или 0x95, то есть 144 или 149, тогда как второй байт всегда должен быть 0. Не уверен, какой байт отображается на вашей кодовой странице.
Других решений пока нет …