0

我有一个读卡器/rfid 阅读器,我正在尝试为它创建一个测试应用程序。我确实有来自提供商的协议描述文档,但我以前从未编写过串口软件,一切对我来说看起来都很奇怪。我确实有编程技能,但只是不知道我做错了什么。

所以,设备的型号是CRT288。在规范文档中,我有以下数据:

波特率(BPS):9600

通讯类型:异步通讯

传输类型:半双工

位细节:起始位:1位

数据位:8位

奇偶校验位:无

停止位:1位

起始位 D0 D1 D2 D3 D4 D5 D6 D7 停止位

传输控制代码:

代码 值 含义

STX 0x02 数据包起始字符

ETX 0x03 数据包结束符

ENQ 0x05 发送要求命令(主机 -> 阅读器)

ACK 0x06 肯定回答(读者主机)

NAK 0x15 否定答案(读者主机)

EOT 0x04 取消通讯

最重要的(我相信)命令的数据包格式:

STX(0x02) 命令包 ETX (0x03) BCC

BCC(块校验字符)= STX ^ 命令包 ^ ETX

(^ 是异或计算字符)

例如: 重置命令:

密件抄送=0x02 ^ 0x00 ^ 0x02 ^ 0x30 ^ 0x30 ^ 0x03

含义(STX ^ MSL ^ CMD ^ CMP ^ SDT ^ ETX)

(1) 发送文本的 MSL 长度

(2)CMD 指定一个命令。

(3)CMP命令参数。

(4)SDT 指定发送数据,长度可变(0~264bytes)。

我安装了一些名为 Serial Port Monitor 4.0 (Eltima) 的软件,我正在尝试发送命令,但它似乎不起作用。

0x02 ^ 0x00 ^ 0x02 ^ 0x30 ^ 0x30 ^ 0x03 好像是11什么的。

有人知道如何使用此规范发送正确的命令吗?

最重要的是,读者吃了一张卡,我什至不能拒绝这张卡。它正在为此发出一个命令:)

因此,如果你们有 java 或 c# 中的简单代码示例,或者如何正确格式化命令并将其发送到 rs232,请帮助我。

一个

4

1 回答 1

1

这种通用方法过去对我有用(刷卡阅读器、条形码阅读器等):

byte[] commandNameHere = { 0x02, 0x00, 0x02, 0x30, 0x30, 0x03 };

yourSerialPortObject.Write(commandNameHere, 0, commandNameHere.Length);
于 2013-04-01T21:59:32.413 回答