2014-05-09 62 views
1

我使用this library與Java串口通訊。此外,我正在使用USB轉串口轉換器連接到設備。 下面是有關該設備的文檔:RS232串口通訊設置

2.1 物理接口 主機之間所需的物理接口和VGM是EIA-232接口。

2.2 邏輯接口 串行數據鏈路應以每秒(BPS)19,200位的速度運行,其中一個 起始位,8位數據位,喚醒位和一個停止位。喚醒位應在消息的第一個字節中設置爲 ;對於 消息的其餘部分,應該清除喚醒位。當響應主機時,VGM應清除喚醒位。

我有點困惑如何設置連接到串行端口時的rs232庫設置。有波特率設置,數據位長度(5,6,7,8),停止位(1,2)和奇偶校驗設置。當我搞砸這些設置時,我當然會得到不同的輸出(大部分時間看起來像垃圾)。你能幫我猜一下關於引用文檔的設置嗎?

+0

根據該規範,簡單的解決方案是使用能夠支持9位數據幀的USART來容納喚醒位。這裏有一些[9位串口購物建議](http://superuser.com/questions/411386/seeking-9-bit-serial-port-card-for-windows-pc/411438#411438)。否則,您需要使用8位數據長度加奇偶校驗,並配置奇偶校驗以標記第一個字節,然後重新配置爲剩餘字節的空間。奇偶校驗位(具有8位數據)將佔用幀中與喚醒位相同的位位置。 – sawdust

+0

@sawdust嗯,我玩的設置和8位數據,19.2kbit boud,1停止位和奇偶校驗集,甚至我覺得我正在得到一些東西。例如,當我用這個設置加載Java中的字節數組時,如果我通過使用每個新字節的前4位和後4位來將每個字節分成2個字節,我想我會按照文檔的意圖得到正確的消息。我必須在週一再玩一次。這聽起來對你而言似乎合理嗎? –

+0

否。將每個字節拆分爲半字節是錯誤的和不必要的。嘗試重新配置奇偶校驗位的Java可能會遇到問題。 – sawdust

回答

0

根據我的理解,您的協議需要額外的第9位數據,用於一些特殊應用,如Multidrop bus(另請參閱Stackoverflow 14212660)。在你的情況下,這第9位被稱爲「喚醒位」,但是你不會在你的java庫或標準RS232應用程序中找到這樣的事情或名稱。

有一種使用標準USB轉串口轉換器的解決方法。這是Stackoverflow 14212660正是通過使用奇偶校驗位叫

沒有捏造爲第9位數據

所以,除非你想購買專門的硬件 - 我建議「捏造':

使用奇偶校驗設置MARK和SPACE應該對應於您想要的設置「喚醒位設置」,分別爲「 「清醒醒來」。我們的Docklight Scripting軟件允許您在免費評估中已經可以做到這種temporary parity switching,但我認爲還有其他工具或代碼示例。 MDB /多點總線應該是很好的谷歌關鍵字。