我想使用stream类来读取/写入串行端口的数据。我使用BaseStream来获取流(下面的链接)但是Length属性不起作用。有谁知道如何在不知道有多少字节的情况下读取完整缓冲区?
http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.basestream.aspx
答案 0 :(得分:2)
你做不到。也就是说,如果您拥有的只是BaseStream
,则无法保证已收到所有内容。
如果您收到了所有内容,有两种方法可以知道:
或者,根据您的应用程序,您可以进行某种计时。也就是说,如果你没有收到任何新的X秒(或毫秒?),你会认为你收到了所有东西。如果发件人特别慢,这有一个明显的缺点就是效果不好。
答案 1 :(得分:0)
也许您可以尝试使用SerialPort.BytesToRead属性。