我有一个VB6项目,我试图转换为c#。 该项目使用MSComm的属性myMSComm.SThreshold = 1,c#中serialPort的等价物是什么?
答案 0 :(得分:0)
没有直接的等价物,SerialPort没有TransmitBufferEmpty事件。在现代硬件上它是一种非常无意义的事件,UART有一个FIFO,它将缓冲输出并在发送缓冲区为空后继续发送字节。
您可以使用SerialPort.BaseStream.BeginWrite()方法在某种程度上模拟它。您指定的回调在写入完成时运行。然后,您可以再次调用BeginWrite()来编写更多数据。与SThreshold值1不完全相同,因为当BeginWrite完成时发送缓冲区将满。请注意回调在线程池线程上运行,因此您必须小心互锁。
答案 1 :(得分:-1)
MSComm和Serialport并没有太多共同之处。如果需要从MSComm迁移到Serialport但是避免更改软件的工作部分,则选择不多。一个众所周知的库SuperCom提供了一个MSComm兼容的ActiveX,可以与VB net和C#一起使用。这意味着几乎零变化。还包括NET class library,其行为与MSComm属性和方法非常相似。它完全兼容32位和64位Windows。 Windows XP,7,8,10。