485網絡讀卡器 工位機開發使用說明

 

                                         本說明適用於榮士IC、ID卡485協議的工控機、讀卡器,部份指令需硬件支持。

特性:

  1. RS-485通訊方式,通訊協議爲(19200,N,8,1):波特率19200,數據位8 位,停止位1位。讀頭接受上位機設備發來的控制指令進行發送卡號、驅動蜂鳴器響、查詢讀頭的設備號、更改讀頭的設備號等。

注意:此款讀頭不會主動向上位機設備發送卡號,而是在刷卡時把卡號先暫存進設備緩衝區,然後等待上位機設備來讀取。緩衝區只能存放一個卡號,在緩衝區爲空時刷卡將會嘀一聲,並把卡號存入緩衝區,緩衝區已滿時刷卡僅會指示燈閃而不會沖掉緩衝區裏的卡號。必須等到上位機設備讀卡才能清空緩衝區,使下一張卡刷卡有效。

 

  1. 支持機號從1~65535(兩個字節的機號),可通過在讀頭上菜單操作設定,也可以用調用動態庫函數設定。
  2. 外接12V電源,內置電源保護。
  3. 一個LED指示燈和一個可發命令控制的蜂鳴器。刷卡時指示燈閃一下,蜂鳴器則只能在卡號緩衝爲空時才“嘀”一聲。
  4. μEM4001、4100及其兼容的RFID卡,頻率125kHz,感應距離爲80-150mm。
  5. MifareOne S50/S70卡,頻率13.56MHz,感應距離爲0-50mm。
  6. 讀卡時間小於80ms,能自動檢測卡片是否仍在感應區。
  7. 採用抗干擾、快速輪詢的通訊算法,通訊更快更穩定。
  8. 在等待刷卡狀態下按1不放,再按9,等待幾秒種可出現功能菜單。

 

接線說明:

電纜線顏色

用途

紅色

+12V

黑色

GND地

灰色

485通訊的A+

黃色

485通訊的B-

 

 

直接串口的控制方法:

  1. 讀卡

發送: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

  1. 蜂鳴器響一聲

發送:0xAA,0xAA,機號低字節,機號高字節,0Xc3(命令字),響聲時長高字節,低字節,響聲時長高字節和低字節的異或和校驗碼。

如驅動2號機響一聲100毫秒,應發送0xAA,0xAA,0x02,0x00,0xC3,0x00,0x64,0x64。不需返回。

  1. 讀機號指令

電腦發送:aa aa 00 00 a5電腦接收:例如 69 A5 02 00 02,69 A5 不需要理會,02 00 爲機號,其中02爲低字節,最後一個02爲前面機會02 00 的異或和校驗

  1. 讀機號指令

電腦發送:aa aa 00 00 f0 02 00 fd ff 00 ,00 00 爲原機號,必須與和設備機號一致才能改成功,02 00 爲新機號,FD FF爲02 00 的反碼(如ff-02=fd)電腦接收:69 f0

  1. 顯示及聲音指令

0xaa,0xaa,機號低,機號高,0x5a,字符串編碼共30個字節,響聲長,響聲間隔,響聲循環次數,校驗碼 

校驗碼 =  字符串編碼共30個字節,響聲長,響聲間隔,響聲循環次數的異或和

0xaa,0xaa,機號低,機號高,0x69

 

 

 

      

電腦調用動態庫的控制方法:

本公司特提供本讀頭專用的高性能DLL動態庫sycomdll.dll,在VC6.0製作,其函數接口如下:

  1. 打開串口

函數原型: HANDLE  __stdcall PortOpen(int comport)

       輸入:comport爲串口號,如COM1爲1

返回:串口句柄,如果打開不成功,返回-1

 

  1. 關閉串口

函數原型: bool  __stdcall PortClose(HANDLE comport_handle)

程序關閉之前務必釋放串口,以便其他程序使用。

輸入:comport_handle打開串口時所返回的句柄

返回:關閉成功返回true,否則false

 

  1. 設定機號(機號爲兩個字節)

函數原型: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表示讀機號失敗

 

  1. 讀取機號

函數原型: int  __stdcall GetDeviceNo(HANDLE ComportHandle,LPSTR JihaoString)

輸入:comport_handl爲串口句柄,JihaoString 機號字符串緩衝區,至少需要6個字符的空間

返回:

       數字-1表示端口未打開

數字0表示讀機號成功,機號卡號已存發在JihaoString字符中

       數字1表示發送失敗

       數字2表示通訊超時

       數字3表示讀機號失敗

       數字4表示讀機號失敗

 

  1. 讀卡

(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表示沒尋到卡

 

  1. 驅動蜂鳴器響 x毫秒

int  __stdcall SetBeep(HANDLE ComportHandle,int Jihao,int BeepXms);

輸入:comport_handle串口句柄

       Jihao 機號

       BeepXms響鈴持續時間

返回:數字0表示成功

       數字1表示發送失敗

 

  1. 驅動蜂鳴器,循環z次:響x20毫秒,停y20毫秒

int  __stdcall SetBeepEx(HANDLE ComportHandle,int Jihao,int beeptimes,int beepinterval,int loopcount);

輸入:comport_handle串口句柄,在VB中爲Long類型

       Jihao 機號

       beeptimes 響鈴持續時間

       beepinterval停頓時間

       loopcount循環次數

返回::數字0表示成功

       數字1表示發送失敗

 

  1. 關閉蜂鳴器

int  __stdcall CloseBeep(HANDLE ComportHandle,int Jihao);

輸入:comport_handle串口句柄,在VB中爲Long類型

       Jihao 機號

返回:數字0表示成功

       數字1表示發送失敗

 

  1. 同時讀取卡號及鍵盤碼

int  __stdcall GetCARDNO_KeyInput(HANDLE ComportHandle,int Jihao,LPSTR CardNoString,LPSTR KeyInputString);

 

  1. 同時顯示

 int  __stdcall SetDispFull(HANDLE ComportHandle,int Jihao,LPSTR DispString);

 

  1. 精準的延時

__stdcall Delay_ms(DWORD xms);

 

  1. 同時顯示和響聲

int  __stdcall SetDispFull_BeepEx(HANDLE ComportHandle,int Jihao,LPSTR DispString,int beeptimes,int beepinterval,int loopcount);

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章