我需要通过RS232以115200 bps的速度连接设备。距离很短(不到一米)。没有硬件或软件握手。交换的消息也很短:10 - 50个字节。消息交换的频率 - 每秒最多10次。
我曾经使用相应的Win API在C / C ++中可靠地处理这种环境中的通信。但是,这次我想在.NET / C#中这样做。
前段时间我遇到了一篇关于.NET串口的文章。据我所知,作者不建议使用SerialPort
类。相反,他选择了托管代码中的非托管Win API。我不确定该文章是否涉及.NET 1.1。
有人知道用SerialPort
进行管理是否安全?
答案 0 :(得分:4)
SerialPort工作正常。可以说它本来可以更好地实现,但是115k每秒50个字节的10个消息对于现代PC来说是一个微不足道的工作负载(为了比较,请记住PC能够从10G以太网链路接收数据)。在引擎盖下,OS /驱动程序缓冲数据,因此无论您是从C ++还是C#读取该缓冲区,都不会产生太多(如果有的话)差异。
SerialPort不能很好地与USB串口配合使用....但这是因为USB出了名的不可靠。插入PCI串行卡或通过以太网连接到终端服务器,SerialPort工作正常。使用C ++程序中的USB-to-RS232转换器并返回故障。得出你自己的结论......
我们运行的系统有18个串口以不同的速度运行(数量为115k和10hz,数百个字节的数据包),并且从未遇到任何SerialPort问题(仅限USB-to-RS232转换器!)
尝试一下......原型不应该花费很长时间......
答案 1 :(得分:0)
值得注意的是,重要的一点不是代码或计算机是否可以以115kbps的速度工作,而是您的电缆,串行硬件,外部设备和环境是否可以接受以这样的速度工作。
如果您在电气安静的地方使用良好的屏蔽电缆短时间运行,那么您可能很好。如果你在高功率的工业机器附近工作,产生大量的电噪声和劣质电缆,那么你肯定不会好。我在使用高速RS-232通信的电噪声工业环境中遇到了问题。在这些情况下,必须使用高质量的电缆并降低传输速率,直到通信变得稳定和无差错。如果这是一个问题,除了自己测试并看到之外没有什么可做的。