我有一个使用串行端口通信与某些硬件通信的程序。没问题。 然后我在图片中添加了两个GSM Modens。在VB中我使用一个协议(8个数据,无,1)打开调制解调器的COM端口,当调制解调器之间的通信打开并运行时,我关闭了端口并用新协议重新打开它(7个数据,偶校验,2停止)到我的硬件。几年前硬件已经标准化到这个速度,所以我不能改变它,大多数调制解调器都不支持7,e,2协议。
我想扩展调制解调器的支持,其中许多调制解调器在端口关闭时断开联系。我没有使用硬件握手。
所以这是我的问题。 如何在不关闭串口的情况下在协议之间进行最佳更改?
答案 0 :(得分:1)
要真正设置串行连接的所有选项,您应该使用Win32 API communication functions。据我所知,您无需关闭并重新打开端口即可激活这些设置。设置后它们会正常工作(如this example)。
您只需要注意,如果您只想更改一个或两个设置,则必须使用相应的GetX功能预先填充结构,进行更改并调用SetX功能。
可能与之前的句子形成鲜明对比,但不要依赖第一次 SetX调用的默认设置。我已经看到很多程序只是改变流行的设置(例如波特率,停止位等),但不是罕见的(如XoffChar等)。如果您只是这样做而另一个程序将更改这些设置,您就会开始想知道为什么您的程序突然无法与您的串行设备进行通信,因为您使用了另一个程序设置到串行端口的设置。
在我忘记之前,如果您想在C#中使用Win32 API函数,请查看PInvoke.net