讀卡器的函式說明在下列,打開埠的函式呼叫一切正常,但是呼叫發卡資訊的函式一直報錯,我怎么寫都不對,有哪位大神能夠指點一下。最好能詳細一點。謝謝。
//社保卡開放資訊
typedef struct TPublicInfoTag
{
char cCardNo[9]; /* 卡號*/
char cName[30]; /* 姓名 */
char cSex[1]; /* 性別*/
char cPersonalID[18]; /* 身份證號*/
char cPhone[15]; /* 聯系電話 */
char cAddress[80]; /* 通信地址*/
char cPostCode[6]; /* 郵政編碼*/
}TPublicInfo;
函式說明
yibao.dll 內函式說明
//打開串口,
如 handle=ICC_Reader_Open(“COM1”);
STDAPI ICC_Reader_Open(BYTE *pCOM);
//關閉串口 yibao.dll
STDAPI ICC_Reader_Close(int ReaderHandle);
iccdll.dll 內函式說明
//讀取社保卡開放資訊
STDAPI ReadPublicInfo(int ReaderHandle,TPublicInfo *pInfo); // iccdll.dll
以上函式回傳為 int 型 大于 0 正確 小于0 錯誤
uj5u.com熱心網友回復:
我的寫法是這樣的,函式申明:Function int ReadPublicInfo(int ReaderHandle,ref string pInfo) library "iccdll.dll"string cCardNo,cName,cSex,cPersonalID,cPhone,cAddress,cPostCode
li_i = ICC_Reader_open("COM4")
cCardNo = space(9)
ReadPublicInfo(256,cCardNo)
但是報對應函式型別錯
uj5u.com熱心網友回復:
前面那句li_i = ICC_Reader_open("COM4") 是貼錯的,不用看。uj5u.com熱心網友回復:
//這樣宣告試試,不行的話就用blob 另外pb10以后要加alias ansiFunction int ReadPublicInfo(int ReaderHandle,ref char pInfo[159]) library "iccdll.dll"
string cCardNo,cName,cSex,cPersonalID,cPhone,cAddress,cPostCode
li_i = ICC_Reader_open("COM4")
char cCardNo[159]
ReadPublicInfo(li_i,cCardNo)
uj5u.com熱心網友回復:
先謝謝上面的大哥回答,我研究了一下發現報錯都是報句柄錯誤,我用 ICC_Reader_Close(int ReaderHandle)來試還是報相同錯誤,我是PB8.0難道也要加alias ansi?
例如:
int li_i
string ls_com
ls_com = "com4"
ii_handle = ICC_Reader_open(ls_com)
ICC_Reader_close(ii_handle)
ii_handle是全域函式
任然報錯
bad runtime function reference
uj5u.com熱心網友回復:
應該主要是結構的宣告,建議你用byte試試uj5u.com熱心網友回復:
謝謝您的回答,我開始懷疑API使用說明是不是錯了,說明中
//關閉串口 yibao.dll
STDAPI ICC_Reader_Close(int ReaderHandle);
那么只要我申明了
Function int ICC_Reader_close(int ReaderHandle) library "yibao.dll"
呼叫 li_i = ICC_Reader_close(123)
只會反饋小于0的數字,而不會報bad runtime function reference 的錯誤呀!
uj5u.com熱心網友回復:
第二個引數是結構型別的轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/28186.html
標籤:API 調用
