2014-05-09 64 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 /多点总线应该是很好的谷歌关键字。