各位大大好,
請問一下,若我用電腦將RS232的訊號接收進來,不斷地在接收,
假定0.3秒會收到一次訊號,
那麼在這個瞬間我若發一個訊號回去,
兩個之間會衝突嗎?
還是它們是分開的?或不一定,看機器?
譬如訊號可能延遲送出,
或是可能會被干擾,而訊號錯出有誤,或收接衝突兩邊訊號都出問題等等?
rx/tx腳位是分開的
除非你的電腦或是設備處理慢了
是的,會塞或出錯!
因為通常rs232硬體介面的cache/buffer只有幾bytes,
通訊量如果沒在這個緩存大小內和足夠的I/O次數可以完成的話,
就會發生問題!
使用專業的moxa則cache/buffer可以到32KB甚至更多於這方面可以改善
如果是直接控制RS232的I/O
最好雙方透過檢查DSR/CTS的狀態來進行recv/send
Null Modem則可以主動控制DSR/CTS狀態使其相容數據機的用法...
透過這種模式可以避免
一般來說也可看Baud Rate設多少,控制傳輸速度不可高過設定
如果是用COM元件開發要看那個COM元件本身的設計了~
例如Windows下要看使用同步還是非同步的方式,控制方式也會不一樣
如果要發送的信息很大,又使用同步的方式一次就送出,
那段程式就要等到資料全部送完才會執行下一個步驟了~
比如Baud Rate設9600bps,
那要發送1KB的資料大概就得超過1秒以上了...
也就是塞住的感覺!
如果使用非同步的方式又沒檢查CTS Low的狀態,
那麼資料直接一次送出去會送太快可能就丟失了哩!