本說明適用於榮士IC、ID卡485協議的工控機、讀卡器,部份指令需硬件支持。
特性:
- RS-485通訊方式,通訊協議爲(19200,N,8,1):波特率19200,數據位8 位,停止位1位。讀頭接受上位機設備發來的控制指令進行發送卡號、驅動蜂鳴器響、查詢讀頭的設備號、更改讀頭的設備號等。
注意:此款讀頭不會主動向上位機設備發送卡號,而是在刷卡時把卡號先暫存進設備緩衝區,然後等待上位機設備來讀取。緩衝區只能存放一個卡號,在緩衝區爲空時刷卡將會嘀一聲,並把卡號存入緩衝區,緩衝區已滿時刷卡僅會指示燈閃而不會沖掉緩衝區裏的卡號。必須等到上位機設備讀卡才能清空緩衝區,使下一張卡刷卡有效。
- 支持機號從1~65535(兩個字節的機號),可通過在讀頭上菜單操作設定,也可以用調用動態庫函數設定。
- 外接12V電源,內置電源保護。
- 一個LED指示燈和一個可發命令控制的蜂鳴器。刷卡時指示燈閃一下,蜂鳴器則只能在卡號緩衝爲空時才“嘀”一聲。
- μEM4001、4100及其兼容的RFID卡,頻率125kHz,感應距離爲80-150mm。
- MifareOne S50/S70卡,頻率13.56MHz,感應距離爲0-50mm。
- 讀卡時間小於80ms,能自動檢測卡片是否仍在感應區。
- 採用抗干擾、快速輪詢的通訊算法,通訊更快更穩定。
- 在等待刷卡狀態下按1不放,再按9,等待幾秒種可出現功能菜單。
接線說明:
電纜線顏色 |
用途 |
紅色 |
+12V |
黑色 |
GND地 |
灰色 |
485通訊的A+ |
黃色 |
485通訊的B- |
|
|
直接串口的控制方法:
- 讀卡
發送:0xAA,0xAA,機號低字節,機號高字節,0xD2(命令字)
如從2號機讀卡,應發送0xAA,0xAA,0x02,0x00,0xD2(命令字)
注:設備機號爲1~65535,每個設備都要設定成一個固定的機號,如何設定可運行我們提供的測試程序。“0x”表示十六進制數。
有卡時返回:0x69,0xD2,卡號字節0,字節1,字節2,字節3,字節4,5個卡號字節的異或和校驗碼。
如返回0x69, 0xD2, 0x38, 0x00, 0x51, 0xA2, 0x82, 0x49
其中0x49 應等於 0x38 ^ 0x00 ^ 0x51 ^ 0xA2 ^ 0x82,如果不等於表示通訊錯誤,
卡號字節0屬於廠商代碼,不需理會。真正的卡號爲字節1~字節4。一般ID卡表面上印的卡號爲
(字節1×256×256×256+字節2×256×256+字節3×256+字節4)轉換成十進前的結果
沒卡時返回:0x00
- 蜂鳴器響一聲
發送:0xAA,0xAA,機號低字節,機號高字節,0Xc3(命令字),響聲時長高字節,低字節,響聲時長高字節和低字節的異或和校驗碼。
如驅動2號機響一聲100毫秒,應發送0xAA,0xAA,0x02,0x00,0xC3,0x00,0x64,0x64。不需返回。
- 讀機號指令
電腦發送:aa aa 00 00 a5電腦接收:例如 69 A5 02 00 02,69 A5 不需要理會,02 00 爲機號,其中02爲低字節,最後一個02爲前面機會02 00 的異或和校驗
- 讀機號指令
電腦發送:aa aa 00 00 f0 02 00 fd ff 00 ,00 00 爲原機號,必須與和設備機號一致才能改成功,02 00 爲新機號,FD FF爲02 00 的反碼(如ff-02=fd)電腦接收:69 f0
- 顯示及聲音指令
0xaa,0xaa,機號低,機號高,0x5a,字符串編碼共30個字節,響聲長,響聲間隔,響聲循環次數,校驗碼
校驗碼 = 字符串編碼共30個字節,響聲長,響聲間隔,響聲循環次數的異或和
0xaa,0xaa,機號低,機號高,0x69
電腦調用動態庫的控制方法:
本公司特提供本讀頭專用的高性能DLL動態庫sycomdll.dll,在VC6.0製作,其函數接口如下:
- 打開串口
函數原型: HANDLE __stdcall PortOpen(int comport)
輸入:comport爲串口號,如COM1爲1
返回:串口句柄,如果打開不成功,返回-1
- 關閉串口
函數原型: bool __stdcall PortClose(HANDLE comport_handle)
程序關閉之前務必釋放串口,以便其他程序使用。
輸入:comport_handle打開串口時所返回的句柄
返回:關閉成功返回true,否則false
- 設定機號(機號爲兩個字節)
函數原型:int __stdcall SetDeviceNo(HANDLE ComportHandle,int Jihao_old,int Jihao_new);
輸入:comport_handle串口句柄,在VB中爲Long類型
Jihao_old 原機號,可先讀出原機號,必須知道原機號才能更改成新機號,機號範圍從1-65535
Jihao_new新機號
返回:
數字-1表示端口未打開
數字0表示讀機號成功,機號卡號已存發在JihaoString字符中
數字1表示發送失敗
數字2表示通訊超時
數字3表示讀機號失敗
數字4表示讀機號失敗
- 讀取機號
函數原型: int __stdcall GetDeviceNo(HANDLE ComportHandle,LPSTR JihaoString)
輸入:comport_handl爲串口句柄,JihaoString 機號字符串緩衝區,至少需要6個字符的空間
返回:
數字-1表示端口未打開
數字0表示讀機號成功,機號卡號已存發在JihaoString字符中
數字1表示發送失敗
數字2表示通訊超時
數字3表示讀機號失敗
數字4表示讀機號失敗
- 讀卡
(1)號並在形參中返回字符串
int __stdcall GetCardNoForString(HANDLE ComportHandle,int Jihao,LPSTR CardNoString);
輸入:comport_handle串口句柄,Jihao 原機號
CardNoString字符串緩衝區,至少需要10個字符的空間
返回:
數字-1表示端口未打開
數字0表示讀卡號成功,卡號已存發在JihaoString字符中
數字1表示發送失敗
數字2表示通訊超時
數字3表示讀機號失敗
數字4表示讀機號失敗
(2)讀取卡號並在形參中返回五字節unsigned char數組
int __stdcall GetCardNoForByte(HANDLE ComportHandle,int Jihao,unsigned char * CardNoBuf);
輸入:comport_handle串口句柄,Jihao 原機號
CardNoBuf卡號字節緩衝區,至少需要5個字節空間,在VB中爲byte型
返回:
數字-1表示端口未打開
數字0表示讀卡成功,卡號已存發在CardNoBuf中
數字1表示發送失敗
數字2表示通訊超時
數字3表示沒尋到卡
- 驅動蜂鳴器響 x毫秒
int __stdcall SetBeep(HANDLE ComportHandle,int Jihao,int BeepXms);
輸入:comport_handle串口句柄
Jihao 機號
BeepXms響鈴持續時間
返回:數字0表示成功
數字1表示發送失敗
- 驅動蜂鳴器,循環z次:響x個20毫秒,停y個20毫秒
int __stdcall SetBeepEx(HANDLE ComportHandle,int Jihao,int beeptimes,int beepinterval,int loopcount);
輸入:comport_handle串口句柄,在VB中爲Long類型
Jihao 機號
beeptimes 響鈴持續時間
beepinterval停頓時間
loopcount循環次數
返回::數字0表示成功
數字1表示發送失敗
- 關閉蜂鳴器
int __stdcall CloseBeep(HANDLE ComportHandle,int Jihao);
輸入:comport_handle串口句柄,在VB中爲Long類型
Jihao 機號
返回:數字0表示成功
數字1表示發送失敗
- 同時讀取卡號及鍵盤碼
int __stdcall GetCARDNO_KeyInput(HANDLE ComportHandle,int Jihao,LPSTR CardNoString,LPSTR KeyInputString);
- 同時顯示
int __stdcall SetDispFull(HANDLE ComportHandle,int Jihao,LPSTR DispString);
- 精準的延時
__stdcall Delay_ms(DWORD xms);
- 同時顯示和響聲
int __stdcall SetDispFull_BeepEx(HANDLE ComportHandle,int Jihao,LPSTR DispString,int beeptimes,int beepinterval,int loopcount);