tcp/ip轉rs485讀卡機 |
缺席
|
nisliang
一般會員 發表:1 回覆:6 積分:1 註冊:2003-09-05 發送簡訊給我 |
各位大家好:
我是一個delphi新手,前一陣子公司買了一台讀卡機是rs485的可以利用轉換器轉成tcp/ip網路的介面,買的時後只有給通訊協定而已沒有給其它的範例程式,我試了好久都沒有辦法使用,我也有試過virtual comport的方式然後用spcomm來測試結果也是沒辦法得到正確的回應,以下是廠商給的通訊協定 讀取卡號總筆數
送出:SOH ARDS S CheckSum16 EOT
送出:01 3031 53 WWXXYYZZ 04 正確回應:ACK ADRS S TotalRecord CheckSum16 EOT
06 3031 53 30334538 WWXXYYZZ 04 錯誤回應:NAK ADRS S CheckSum16 EOT
15 3031 53 WWXXYYZZ 04 註:TotalRecord是4個bytes,假設卡號筆數是1000筆,轉換16進位為03E8,資料為30334538
以下是我利用SPCOMM 測試送出資料 procedure TForm1.Button1Click(Sender: TObject);//讀取卡號總筆數 var s:string; begin s:='不知道是哪裡的設定有錯誤或是傳送、接收資料的方式不對, 希望各位幫忙,謝謝!! |
brownshui
一般會員 發表:0 回覆:18 積分:3 註冊:2004-05-01 發送簡訊給我 |
|
nisliang
一般會員 發表:1 回覆:6 積分:1 註冊:2003-09-05 發送簡訊給我 |
|
nisliang
一般會員 發表:1 回覆:6 積分:1 註冊:2003-09-05 發送簡訊給我 |
|
brownshui
一般會員 發表:0 回覆:18 積分:3 註冊:2004-05-01 發送簡訊給我 |
因為 TCP/IP 有封包分割的問題, Converter 必須等 Delimiter 收到後, 才能確定收完, 再一次送給 EtherNet 端或 RS-485 端 在你的例子裡, Delimiter 應該是 04, 也就是所謂的
procedure TForm1.Button1Click(Sender: TObject);//讀取卡號總筆數 var s:string; begin s:='你的 procedure TForm1.Button1Click(Sender: TObject);//讀取卡號總筆數 var s:string; begin s:='01303153WWXXYYZZ04'; Comm1.WriteCommData(PChar(s),Length(s)); end; |
nisliang
一般會員 發表:1 回覆:6 積分:1 註冊:2003-09-05 發送簡訊給我 |
|
nisliang
一般會員 發表:1 回覆:6 積分:1 註冊:2003-09-05 發送簡訊給我 |
不好意思,再請教一個問題
以下是我用spcomm的設定和硬體的設定,不知道為什麼
資料送出後總是沒有任何回應連錯誤的回應也沒有,
因為我試了很久了一直是這樣子的情況,因此想請各位
幫我看看是不是哪個部份需要做什麼特別的設定,還是
我設定錯了 -----SPCOMM 設定----
CommName = 'COM4'
BaudRate = 9600
ParityCheck = False
Outx_CtsFlow = False
Outx_DsrFlow = False
DtrControl = DtrDisable
DsrSensitivity = False
TxContinueOnXoff = False
Outx_XonXoffFlow = False
Inx_XonXoffFlow = False
ReplaceWhenParityError = False
IgnoreNullChar = False
RtsControl = RtsDisable
XonLimit = 500
XoffLimit = 500
ByteSize = _8
Parity = None
StopBits = _1
XonChar = #17
XoffChar = #19
ReplacedChar = #0
ReadIntervalTimeout = 100
ReadTotalTimeoutMultiplier = 0
ReadTotalTimeoutConstant = 0
WriteTotalTimeoutMultiplier = 0
WriteTotalTimeoutConstant = 0
OnReceiveData = Comm1ReceiveData
OnReceiveError = Comm1ReceiveError -----硬體設定----
BAUD RATE 9600
data bit 8
stop bit 1
parity none
flow control RTS/CTS
fifo enable
interface rs-485 2Wire
delimiter1 0
delimiter2 4
|
brownshui
一般會員 發表:0 回覆:18 積分:3 註冊:2004-05-01 發送簡訊給我 |
|
nisliang
一般會員 發表:1 回覆:6 積分:1 註冊:2003-09-05 發送簡訊給我 |
|
nisliang
一般會員 發表:1 回覆:6 積分:1 註冊:2003-09-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |