日期:2014-05-17  浏览次数:21768 次

C# 根据rs485通讯协议 编写API
第一次接触这些 完全不知道从哪里入手
公司要开发幼儿接送系统,从网上购买的485ID读卡器只提供了RS485传输协议,以前开发都是直接调用API,现在连API都要自己编写了,不知道从那里入手了。
完全看不懂
标准只读型感应式卡片阅读机









通讯协议(Protocol)
卡片阅读机模块(Reader Module)的通讯协议(Protocol)皆出自于SYRIS的一种标准通讯协议,这种协议格式如下表:

HEAD DATA BCC CHECK
8 BITS BCC END
SOH TYPE ID FC
0x09 BCC1 BCC2 0x0D
起始码 模块型式 模块型式 功能码 资料 错误检查码 结束码


1. SOH 和 END 都是一个字节的控制字符:
   SOH 控制器端定义为 <0x09>
        模块端定义为   <0x0A>
   END 控制器及模块端均固定为 <0x0D>
   其中 <0x> 为十六进制表示法.

2. TYPE 为模块型式编号,固定为一个字节,本型式编号固定为 “A”.

3. ID为模块端的识别代码,这一字节的 ASCII 字符必须是在 1 <0x31> 到8 <0x38> 的范围内,假如控制器端传送之ID值与模块地址编号相同时,则该模块将会接收控制器端所传送的数据,而模块响应时,也会传回相同的地址编号.

4. FC是通讯功能码(Function Code)和资料(DATA)有相关性,固定为一个字节,这些资料请参考通讯协议表及相关说明.

5. 错误讯息判断代码(Error Code)为两个字节,第一个字节为固定为 <0x0E> ,第二个字节为错误代码,请参考错误讯息代码表.

6. 8 BITS BCC是所有字符的检查字段,为二个字节,有关 8 BITS BCC 的信息和范例程序,请参考附录A.

7. RS485传输协议请设定为 ”E,8,1”,速率为 ”19200”.



错误讯息代码表(Error Code Table)
Data Field
Error Code #2 Error Description
A 无效句柄(Invalid Function Code Received)
B 资料或讯息格式错误(Data or Message Format Error)
C 数据库错误讯息(Database Error Message)
D 同位检查码错误(Check Sum Error)
E 内存错误(Memory Error)
F 设定或读取保护中资料(Set or Get Protection Data)
G 其它错误讯息(Other Error Message)

Error Code #1固定为 <0x0E>.


控制器与模块通讯协议表
Controller & Module Protocol Table


FC

DESCRIPTION
NOTE
B 读取模块出厂序号
Get Module Factory Code 读取模块出厂序号
C 设定模块地址编号
Set Module ID Code 系统公司设定模块地址编号
D 读取模块地址编号
Get Module ID Code 读取模块地址编号
F 读取卡片内码资料
Read Card ID Data 读取模块感应之卡片内码资料
G 重新读取卡片内码资料
Read Card ID Data 重新读取模块感应之卡片内码资料


读取模块出厂序号(Get Module Factory Code)
FC: B

说明(COMMENTS):
此功能为读取卡片阅读机模块出厂序号,共有8码,第1码至第2码至出厂年份,第3码至第4码为出厂周别,第5码至第8码为该型号流水号码.

控制器发送讯息(Controller Transceiver Message):
  模块代码(ID):<1> ~ <8>
  资料(DATA):<None>
HEAD DATA BCC CHECK
8 BITS BCC END
SOH TYPE ID FC
0x09 A 1 B BCC1 BCC2 0x0D


模块响应讯息(Module Response Message):
  资料(DATA):<98030001>
HEAD DATA BCC CHECK
8 BITS BCC END
SOH TYPE ID FC
0x0A A 1 B 98030001 BCC1 BCC2 0x0D


设定模块地址编号(Set Module ID Code)
FC: C

说明(COMMENTS):
  此功能为设定地址编号,使用模块出厂序号.

控制器发送讯息(Controller Transceiver Message):
  模块代码(ID):固定为 <X>
  资料(DATA):出厂序号 <98030001> , 模块代码 <1>
HEAD DATA BCC CHECK
8 BITS BCC END
SOH TYPE ID FC
0x09 A X C 980300011 BCC1 BCC2 0x0D

模块响应讯息(Module Response Message):
  资料(DATA):<None>
HEAD DATA BCC CHECK
8 BITS BCC END
SOH TYPE ID FC
0x0A A X C BCC1 BCC2 0x0D


读取模块地址编号(Get Module ID Code)
FC: D

说明(COMMENTS):