線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2148
推到 Plurk!
推到 Facebook!

tcp/ip轉rs485讀卡機

缺席
nisliang
一般會員


發表:1
回覆:6
積分:1
註冊:2003-09-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-27 11:05:25 IP:211.75.xxx.xxx 未訂閱
各位大家好: 我是一個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:='303153WWXXYYZZ';   
Comm1.WriteCommData(PChar(s),Length(s));
end;    以下是我利用SPCOMM 測試讀取資料    procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
  BufferLength: Word);//接收資料
  var S:string;
begin
memo1.Clear;
SetLength(S,BufferLength); 
Move(Buffer^, PChar(S)^, BufferLength); 
Memo1.Lines.Add(S);
Memo1.Invalidate;
end;
我的設定是
baud rate: 9600
parity: none
data bits: 8
stop bits: 1
flow control: none
fifo: enable
interface: rs-485,2 wire
不知道是哪裡的設定有錯誤或是傳送、接收資料的方式不對, 希望各位幫忙,謝謝!!
brownshui
一般會員


發表:0
回覆:18
積分:3
註冊:2004-05-01

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-16 08:38:34 IP:60.248.xxx.xxx 未訂閱
小弟去年有用過 MOXA 系列的 RS-485 -- TCP/IP Converter 一般在 Converter 上都會去設定一個或兩個 delimiter 來做為結尾標示 不知您這台 Converter 是否有這個問題?? ※ 目前我只遇過研華的不必設 delimiter, 但非常不好用.
nisliang
一般會員


發表:1
回覆:6
積分:1
註冊:2003-09-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-16 15:27:45 IP:211.75.xxx.xxx 未訂閱
有啊…我看他的介面可以設定結尾標示 這個部份會有什麼樣子的影嚮呢?我不是 很了解說,不知道能不能說明一下,謝謝!!
nisliang
一般會員


發表:1
回覆:6
積分:1
註冊:2003-09-05

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-08-16 16:12:15 IP:211.75.xxx.xxx 未訂閱
我剛看了一下我的也是MOXA的,不知道你 能不能提供一個簡單的範例讓我參考呢? 謝謝!!
brownshui
一般會員


發表:0
回覆:18
積分:3
註冊:2004-05-01

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-08-16 17:22:31 IP:60.248.xxx.xxx 未訂閱
因為 TCP/IP 有封包分割的問題, Converter 必須等 Delimiter 收到後, 才能確定收完, 再一次送給 EtherNet 端或 RS-485 端    在你的例子裡, Delimiter 應該是 04, 也就是所謂的  必須進去 Converter 設定第一個 Delimiter 為 ASC('0') 第二個 Delimiter 為 ASC('4') 剛剛仔細看了一下你的 CODE, 似乎隱藏著一個問題
procedure TForm1.Button1Click(Sender: TObject);//讀取卡號總筆數
var s:string;
begin
s:='303153WWXXYYZZ';   
Comm1.WriteCommData(PChar(s),Length(s));
end;
你的 應該是 '01', 而 應該是 '04' 我在這裡大膽猜測你的 CODE 應該長這樣
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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-08-17 09:06:31 IP:211.75.xxx.xxx 未訂閱
謝謝brownshui的解說,我試試看先
nisliang
一般會員


發表:1
回覆:6
積分:1
註冊:2003-09-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-08-17 18:18:47 IP:211.75.xxx.xxx 未訂閱
不好意思,再請教一個問題 以下是我用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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-08-17 22:12:31 IP:211.20.xxx.xxx 未訂閱
引言: -----硬體設定---- 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
如果你的  是 '04', 那最後兩行應該是長這樣子
delimiter1 30
delimiter2 34 
nisliang
一般會員


發表:1
回覆:6
積分:1
註冊:2003-09-05

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-08-18 10:58:58 IP:211.75.xxx.xxx 未訂閱
謝謝brownshui肯花時間幫我看 不過問題還是沒解決說,我再繼續試 試看好了…總之謝謝了~~
nisliang
一般會員


發表:1
回覆:6
積分:1
註冊:2003-09-05

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-08-24 09:26:43 IP:211.75.xxx.xxx 未訂閱
問題已經解決了,程式可以run了,雖然跟brownshui說的沒關係,不過還是謝謝brownshui
系統時間:2024-05-17 14:47:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!