0

我有一個卡/ rfid閱讀器,我正在嘗試爲它創建一個測試應用程序。我確實有一個來自提供商的協議描述文檔,但之前我從來沒有寫過串口軟件,對我而言,一切看起來都很奇怪。我有編程技巧,但只是不知道我做錯了什麼。如何格式化命令以便在串口上寫入

所以,該設備的型號是CRT288。在規範的文檔,我有以下數據:

波特率(bps):9600

通信類型:異步通信

發送類型:半雙工

位細節:開始位1位

數據位:8位

校驗位:無

停止位:1位

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

傳輸控制代碼:

代碼值含義

STX 0X02開始數據包

的字符

ETX 0x03數據包的結束字符

ENQ 0x05發送要求c ommand(主機 - >讀卡器)

ACK 0×06正面回答(讀者主機)

NAK爲0x15否定的回答(讀者主機)

EOT 0X04取消通信

而且最重要的(我相信)命令的數據包格式:

STX(0×02)命令包ETX(0×03)BCC

BCC(塊檢驗字符)= S TX ^命令包^ ETX

(^是異或計算字符)

例如:復位命令:

BCC = 0×02^0×00^0×02 ^的0x30 ^的0x30^0×03

含義(STX^MSL^CMD^CMP^SDT^ETX)發送文本

(2)CMD指定一個命令的

(1)MSL長度。 (3)CMP命令參數。

(4)SDT指定發送數據,長度可變(0〜264字節)。

我已經安裝了一些稱爲串行端口監視器4.0(Eltima)的軟件,我試圖發送一個命令,但它似乎沒有工作。

0x02^0x00^0x02^0x30^0x30^0x03似乎是11或某物。

有沒有人有線索如何使用此規範發送適當的命令?

最重要的是,讀者吃了一張卡,我甚至不能拒絕這張卡。 它正在爲此指令:)

所以,如果你們有java或c#中的simpel代碼示例,或者如何正確格式化命令並將其發送到rs232,請幫助我。

一個

+2

我投票關閉此爲*太本地化*。您應該查閱手冊,瞭解您正在使用的任何硬件。 – Yuck

+0

我在看手冊,但沒有sofwtare的例子。我需要一個如何編寫手冊中指定的命令的代碼,如下所示:0x02^0x00^0x02^0x30^0x30^0x03。我只是選擇寫更多的細節來讓自己清楚。 Pelase不關閉它,因爲我真的需要som ehelp在這裏 –

+0

http://msdn.microsoft.com/en-us/library/system.io.ports.serialport%28v=vs.80%29.aspx –

回答

1

這種一般方法已經在過去的工作對我來說(Swipecard閱讀器,條形碼閱讀器等):

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

yourSerialPortObject.Write(commandNameHere, 0, commandNameHere.Length); 
+0

+1是一種將字節值組織爲可讀代碼的好方法 – Yuck

相關問題