该API在PowerBuilder中可以成功执行,如下所示Function long ICC_tsi_api(ulong fd,char len, char comm[200],ref char lenr, ref char resp[200]) library "crwicc.dll"然后调用
long fd,li_result;
char ic_resp[200]
string ls_portchar lc_command[100]
char lc_command_lenlc_command[1] = char(0)
lc_command[2] = char(164)
lc_command[3] = char(0)
lc_command[4] = char(0)
lc_command[5] = char(2)
lc_command[6] = char(0)
lc_command[7] = char(22)
lc_command[8] = char(0)
lc_command_len = char(8)
messageno=icc_tsi_api(ff,lc_command_len,lc_command,lc_command_len,ic_resp)我在VB中定义如下
Declare Function ICC_tsi_api Lib "CRWICC.dll" (ByVal fd As Long, ByVal s_len As Byte, ByRef comm As String, ByRef lenr As Byte, ByRef resp As String) As Integer
ic_resp = Space(200)
lc_command =space(200)
lenr = 8
lenc = 8
lc_command = Chr(0) + Chr(164) + Chr(0) + Chr(0) + Chr(2) + Chr(0) + Chr(22) + Chr(0) messageno=ICC_tsi_api(ff, lenc, lc_command, lenr, ic_resp)
执行后却无法得到正确结果,我猜大概是传入参数类型有问题,望大家指教
long fd,li_result;
char ic_resp[200]
string ls_portchar lc_command[100]
char lc_command_lenlc_command[1] = char(0)
lc_command[2] = char(164)
lc_command[3] = char(0)
lc_command[4] = char(0)
lc_command[5] = char(2)
lc_command[6] = char(0)
lc_command[7] = char(22)
lc_command[8] = char(0)
lc_command_len = char(8)
messageno=icc_tsi_api(ff,lc_command_len,lc_command,lc_command_len,ic_resp)我在VB中定义如下
Declare Function ICC_tsi_api Lib "CRWICC.dll" (ByVal fd As Long, ByVal s_len As Byte, ByRef comm As String, ByRef lenr As Byte, ByRef resp As String) As Integer
ic_resp = Space(200)
lc_command =space(200)
lenr = 8
lenc = 8
lc_command = Chr(0) + Chr(164) + Chr(0) + Chr(0) + Chr(2) + Chr(0) + Chr(22) + Chr(0) messageno=ICC_tsi_api(ff, lenc, lc_command, lenr, ic_resp)
执行后却无法得到正确结果,我猜大概是传入参数类型有问题,望大家指教
一般情况楼上给出的代码就可行,不行的话就手动“凑”出传入参数的长度吧,尤其是那个char comm[200]和char resp[200],最好生成一个同样满足长度条件的数组参数传入
尤其要注意的是不能使用lc_command = Chr(0) + Chr(164) + Chr(0) + Chr(0) + Chr(2) + Chr(0) + Chr(22) + Chr(0)这样的代码,会覆盖原来lc_command的长度