我是C 的初学者,并尝试从读卡器中获取输出:为此,我使用DLL。我的问题是我的响应返回了旁观,我想将其转换为普通字符串。因此,我目前的实际代码是:
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位,未签名(Interne terminalnummer aus ct_init)
爸爸:整数,8位,未签名(目标 - 地址)
悲伤:整数,8位,未签名(源 - 地址)
Lenc:整数16位,未签名(längedes突击队)
突击队:BYTE-ARRAY,(KOMMANDO)
LENR:整数16位,未签名(LängeDer响应)
响应:字节阵列(Antwort)
nsuccess:整数,8位,签名(0 = erfolgreich,-1 = fehlerhaft)
nSuccess = CT_data(ctn,dad,sad,lenc,command[],lenr,response[])
wenn nsuccess = 0,dann响应[]prüfen。WENN响应= 9000 ODER 9500 WAR DAS CT_RESET ERFOLGREICH。alsnächstesdann die kartenanfordorung
typedef CHAR (WINAPI *CT_DATA) (USHORT, UCHAR*, UCHAR*, USHORT, UCHAR*, USHORT*, UCHAR*);
文档中提到的响应是否可以在十六进制中为2个字节?然后响应长度,即CT_DATA()调用的返回值,应为2;依据数组的第一个字节应为0x90或0x95,即144或149,而第二个字节应始终为0。不确定您的代码页面中的字节呈渲染器是什么。