2009-11-20 68 views
0

我有一个程序,它使用串口通讯与某些硬件通讯。没问题。 然后,我添加了两个GSM调制解调器的图片。在VB中,我使用一种协议(8数据,无,1)将调制解调器的COM端口打开到调制解调器,并且当调制解调器之间的通信处于打开状态并且正在运行时,我关闭了端口并重新打开了一个新协议(7个数据,偶校验,2停止)到我的硬件。几年前硬件已经标准化到这个速度,所以我不能改变这一点,大多数调制解调器不支持7,e,2协议。串行通讯

我想扩大调制解调器的支持,当端口关闭时,它们中的许多人会断开联系。我没有使用硬件握手。

所以这里是我的问题。 如何在不关闭串口的情况下最好地改变协议?

  • 有没有人有另一个想法如何做到这一点,而无需更改任何硬件设置?
  • 制作虚拟串口? (怎么样?)
  • 想法?
+0

的问题是,我也不清楚。你想以某种方式将不同的硬件连接到相同的端口? – Henrik

+0

不!这是相同的硬件。硬件连接是PC - >调制解调器 - >调制解调器 - > PLC。大多数现代调制解调器不支持7个数据,甚至奇偶校验和2个停止位。这就是我必须使用其他协议连接到调制解调器,然后我才能使用PLC来协调。 – TAT

回答

1

要真正设置串行连接的所有选项,应使用Win32 API communication functions。据我所知,你不需要关闭并重新打开一个端口来激活这些设置。在设置它们之后,它会正常工作(如在this example中)。

你只需要小心,如果你只想改变一个或两个设置,你必须预先填充你的结构和相应的GetX函数,进行修改并调用SetX函数。

也许与之前的句子相反,但不要依赖您的默认设置第一次 SetX调用。我看到很多程序只是改变了常用的设置(例如波特率,停止位等),但并不是罕见的(如XoffChar等)。如果你这样做了,另一个程序会改变这些设置,你开始想知道为什么你的程序突然不能和你的串口设备进行通信,因为你使用了另一个程序设置到串口的设置。

,我忘了之前,如果你想在C#中使用Win32 API函数来看看PInvoke.net

+0

感谢您的支持。它可能会有帮助!我会尽快查看它。还有其他一些事情要首先在其他项目中脱颖而出。 但谢谢你的帮助! :-) – TAT