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

RS232 連線設定

缺席
dan2121
一般會員


發表:1
回覆:5
積分:1
註冊:2004-03-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-05-11 17:19:42 IP:61.224.xxx.xxx 訂閱
我要和外部設備透過RS232連線 但無法連上 說明書上只有寫 2400 , 10 , N ,1
可是我用 portmon 監看連線過程 應該是 2400,8,N,1

可是我還是無法連上此設備,傳入命令機器卻都無任何回應,我試了spcomm 及另一個mscomm 元件都一樣


原程式連線過程
IRP_MJ_CREATE Serial0 SUCCESS Options: Open
IOCTL_SERIAL_GET_BAUD_RATE Serial0 SUCCESS
IOCTL_SERIAL_GET_LINE_CONTROL Serial0 SUCCESS
IOCTL_SERIAL_GET_CHARS Serial0 SUCCESS
IOCTL_SERIAL_GET_HANDFLOW Serial0 SUCCESS
IOCTL_SERIAL_SET_BAUD_RATE Serial0 SUCCESS Rate: 2400 --------------------------2400
IOCTL_SERIAL_SET_RTS Serial0 SUCCESS ------------------------------------------------ handshaking: RTSDTS
IOCTL_SERIAL_SET_DTR Serial0 SUCCESS ------------------------------------------------ handshaking: RTSDTS
IOCTL_SERIAL_SET_LINE_CONTROL Serial0 SUCCESS StopBits: 1 Parity: NONE WordLength: 8 ---------------------8,N,1
IOCTL_SERIAL_SET_CHAR Serial0 SUCCESS EOF:0 ERR:0 BRK:0 EVT:0 XON:0 XOFF:0
IOCTL_SERIAL_SET_HANDFLOW Serial0 SUCCESS Shake:1 Replace:40 XonLimit:0 XoffLimit:0
IOCTL_SERIAL_SET_QUEUE_SIZE Serial0 SUCCESS InSize: 1024 OutSize: 1024
IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR
IOCTL_SERIAL_SET_TIMEOUTS Serial0 SUCCESS RI:-1 RM:0 RC:100 WM:10 WC:0
IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXCLEAR
IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: RXCLEAR




我的程式連線過程
IRP_MJ_CREATE Serial0 SUCCESS Options: Open
IOCTL_SERIAL_SET_QUEUE_SIZE Serial0 SUCCESS InSize: 4096 OutSize: 4096
IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR
IOCTL_SERIAL_GET_TIMEOUTS Serial0 SUCCESS
IOCTL_SERIAL_SET_TIMEOUTS Serial0 SUCCESS RI:100 RM:0 RC:0 WM:0 WC:0
IOCTL_SERIAL_GET_BAUD_RATE Serial0 SUCCESS
IOCTL_SERIAL_GET_LINE_CONTROL Serial0 SUCCESS
IOCTL_SERIAL_GET_CHARS Serial0 SUCCESS
IOCTL_SERIAL_GET_HANDFLOW Serial0 SUCCESS
IOCTL_SERIAL_GET_PROPERTIES Serial0 SUCCESS
IOCTL_SERIAL_GET_WAIT_MASK Serial0 SUCCESS
IOCTL_SERIAL_GET_BAUD_RATE Serial0 SUCCESS
IOCTL_SERIAL_GET_LINE_CONTROL Serial0 SUCCESS
IOCTL_SERIAL_GET_CHARS Serial0 SUCCESS
IOCTL_SERIAL_GET_HANDFLOW Serial0 SUCCESS
IOCTL_SERIAL_SET_BAUD_RATE Serial0 SUCCESS Rate: 2400
IOCTL_SERIAL_SET_RTS Serial0 SUCCESS
IOCTL_SERIAL_SET_LINE_CONTROL Serial0 SUCCESS StopBits: 1 Parity: NONE WordLength: 8
IOCTL_SERIAL_SET_CHAR Serial0 SUCCESS EOF:0 ERR:0 BRK:0 EVT:0 XON:30 XOFF:30
IOCTL_SERIAL_SET_HANDFLOW Serial0 SUCCESS Shake:2 Replace:80000043 XonLimit:0 XoffLimit:0
IOCTL_SERIAL_SET_WAIT_MASK Serial0 SUCCESS Mask: RLSD ERR RING
IOCTL_SERIAL_WAIT_ON_MASK Serial0 CANCELLED
IRP_MJ_READ Serial0 CANCELLED Length 2048

有沒有 rs232的高手能為我解惑 為何我送一樣的命令機器卻都沒回應 連線上的設定有何錯誤?
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-05-11 18:25:59 IP:218.170.xxx.xxx 未訂閱
你要不要試看看去條個線,跳接一下。
我覺得,你對原廠有看到硬體交握。可是在你寫的並沒看到。
沒交握。你自然就不會傳下一段,甚至第二個BYTE都無法丟了。

如果你去搞一條線,交握就直接先跳線解決。只管你的 TX - RX, RX - TX
這樣子可以動作了。那我們來找問題就會簡單多了。
而不會像你現在變因太多,不知道怎麼解決。
dan2121
一般會員


發表:1
回覆:5
積分:1
註冊:2004-03-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-05-14 11:06:36 IP:59.112.xxx.xxx 訂閱
我有試過   在spcomm 元件設定DTR:DtrHandshake RTScontrol:RtsHandshake 結果還是一樣
在mscomm 元件設定 handshanking : RTSCTS 結果還是一樣
機器都無回應

還有沒有其他可能? 這兩個元件上的設定我幾乎都試過。

暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-05-14 11:23:33 IP:61.225.xxx.xxx 未訂閱
想辦法讓這兩個出現的監視是一樣的。
大家手上沒你的設備。能幫的也有限。
dan2121
一般會員


發表:1
回覆:5
積分:1
註冊:2004-03-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-05-14 11:41:11 IP:59.112.xxx.xxx 訂閱
機器連線時 rs232  轉成RJ11  六線   只用到  DB9 的 2  3  5  三條線      
用RS485連線時 只接了兩條線 沒有其他線路可跳線
看起來根本沒用到 RTS CTS 或 DTR 的線路
dan2121
一般會員


發表:1
回覆:5
積分:1
註冊:2004-03-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-05-14 11:53:13 IP:59.112.xxx.xxx 訂閱
    IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXCLEAR  
IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: RXCLEAR

我主要的問題應該是出在這裡 我的元件設定改來改去都不會出現這個部份
好像沒辦法清空 TX 和 RX , spcomm 有沒有方法做到這個部份
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-05-14 12:11:48 IP:61.225.xxx.xxx 未訂閱
2,3,5 那就是只有 TX, RX, 跟接地吧。
我沒去看定義。不過三支腳應是這樣。
===================引 用 dan2121 文 章===================
機器連線時 rs232 轉成RJ11 六線 只用到 DB9 的 2 3 5 三條線
用RS485連線時 只接了兩條線 沒有其他線路可跳線
看起來根本沒用到 RTS CTS或 DTR的線路
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-05-14 12:18:11 IP:61.225.xxx.xxx 未訂閱
你要不要在另一個 com port 也搞個 485 用 hyper term 去看看它會不會這樣?
PS。一邊用超級終端機。一邊用你的程式。
如果這樣還不知道問題。
那既然你的是RS485,那就更好查了。
把COM2接上485,去看看你的 COM1<->device 在原廠程式跟你的程式間有什麼不同。
因為485可以多點連線。你用這樣去查應可以查出來。
不必用你的這種 monitor 的方式。也許會更快。
一個 rs232- 485 不到一千元。
你的工資搞不定一天下來。對老闆的損失。可不止這樣。^_^
花老闆的錢。把事情搞定,慢慢哈茶。爽的是自己。 hahahaaa
加油。進一步消息。我們再討論。

===================引 用 dan2121 文 章===================
IOCTL_SERIAL_PURGESerial0SUCCESSPurge: TXCLEAR
IOCTL_SERIAL_PURGESerial0SUCCESSPurge: RXCLEAR

我主要的問題應該是出在這裡 我的元件設定改來改去都不會出現這個部份
好像沒辦法清空 TX 和 RX , spcomm 有沒有方法做到這個部份
dan2121
一般會員


發表:1
回覆:5
積分:1
註冊:2004-03-08

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-05-14 14:28:43 IP:59.112.xxx.xxx 訂閱
我ㄧ共有五個裝置要連線     每個都不一樣      我都用RS485 (因為距離遠)    到pc端再轉回 RS232
有一個是連續傳回文字 這個好解決
有一個是數位電錶 用modbus 協定 我用別人寫好的元件 也搞定了
有一個是campell 的紀錄器 用pakbus 協定 還好他有工具 也搞定了
再來一台 只會傳送及接收 0101的位元組 不是文字 可是連線沒問題 9600,8,N,1 也搞定了

只剩下最後一台 我都連不上他 看到是 2400,8,N,1 可是送命令都沒回應 (傳送及接收都是位元組,不是字串)

應該是連線設定上跟機器端不同才連不上, 可是看它附的軟體連線過程又很簡短,沒看出有什麼特別

實體線路 RS232 只接了 2(rx) 3(tx) 5(gnd) RS485 也只接 兩線而已
所以應該沒有交握的問題 用原廠軟體 都能連線 但是我自己嘗試連線 232及485都不成功 機器都沒回應
salo0610
高階會員


發表:42
回覆:120
積分:107
註冊:2003-02-18

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-05-14 16:02:42 IP:220.132.xxx.xxx 未訂閱

你好:

有原程式連線過程及我的程式連線過程,那表示pc 與 硬体的連線沒問題囉,就是說你用 原程式連線 可以正常 work !!

若是這樣,那表示程式上有問題,你在用 spcomm 或 mscomm 時,使用上有那邊設定錯誤吧。

若是這樣,可以去尋找 spcomm 或 mscomm 的相關文章參考吧,或者 把程式 PO 上來 看看吧!!

呵,是這樣子嗎?? 我亂猜的。 :p


暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#11 引用回覆 回覆 發表時間:2007-05-14 16:35:37 IP:61.225.xxx.xxx 未訂閱
所以我才會建議你直接去看看它在”線上”到底傳送了什麼東西。
就算是交握。你也可以由那邊看出些個端倪。
這樣也比較有利你的問題分析。

===================引 用 dan2121 文 章===================
我ㄧ共有五個裝置要連線 每個都不一樣 我都用RS485 (因為距離遠) 到pc端再轉回 RS232
有一個是連續傳回文字 這個好解決
有一個是數位電錶 用modbus 協定 我用別人寫好的元件 也搞定了
有一個是campell 的紀錄器 用pakbus 協定 還好他有工具 也搞定了
再來一台 只會傳送及接收0101的位元組 不是文字可是連線沒問題 9600,8,N,1也搞定了

只剩下最後一台 我都連不上他 看到是 2400,8,N,1可是送命令都沒回應 (傳送及接收都是位元組,不是字串)

應該是連線設定上跟機器端不同才連不上, 可是看它附的軟體連線過程又很簡短,沒看出有什麼特別

實體線路 RS232 只接了 2(rx) 3(tx) 5(gnd) RS485 也只接 兩線而已
所以應該沒有交握的問題 用原廠軟體 都能連線 但是我自己嘗試連線 232及485都不成功 機器都沒回應
shunchia63
高階會員


發表:26
回覆:141
積分:198
註冊:2007-05-22

發送簡訊給我
#12 引用回覆 回覆 發表時間:2007-06-01 15:11:23 IP:61.62.xxx.xxx 訂閱
請參考WIN32 API
BOOL PurgeComm(
HANDLE hFile, // handle of communications resource
DWORD dwFlags // action to perform
);

Parameters
hFile
Identifies the communications resource. The CreateFile function returns this handle.
dwFlags
Specifies the action to take. This parameter can be a combination of the following values:
Value Meaning
PURGE_TXABORT Terminates all outstanding write operations and returns immediately, even if the write operations have not been completed.
PURGE_RXABORT Terminates all outstanding read operations and returns immediately, even if the read operations have not been completed.
PURGE_TXCLEAR Clears the output buffer (if the device driver has one).
PURGE_RXCLEAR Clears the input buffer (if the device driver has one).


===================引 用 dan2121 文 章===================
????IOCTL_SERIAL_PURGE?Serial0?SUCCESS?Purge: TXCLEAR ?
?? ?IOCTL_SERIAL_PURGE?Serial0?SUCCESS?Purge: RXCLEAR

??? 我主要的問題應該是出在這裡?????? 我的元件設定改來改去都不會出現這個部份
?? 好像沒辦法清空? TX 和 RX? ,?? spcomm?? 有沒有方法做到這個部份
dan2121
一般會員


發表:1
回覆:5
積分:1
註冊:2004-03-08

發送簡訊給我
#13 引用回覆 回覆 發表時間:2007-06-15 12:35:39 IP:59.121.xxx.xxx 訂閱
  感謝大家幫忙,我還是跟原廠要到說明文件,這台原來是用改過的 modbus 協定,
我用modbus元件已跟機器連上線了,他命令部分使用modbus,資料接收部分又有修改,
我只好自行修改modbus元件來配合他了。
系統時間:2017-12-12 20:20:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!