SerialPort的问题
在写串口通信的东西,拿我的COM1做实验,在ReadLine的时候程序就block了,我知道这个函数一直在轮询数据,读不到数据就一直Block。那是不是我的write没有把数据写到串口上?
static void Main(string[] args)
{
SerialPort port = new SerialPort();
port.BaudRate = 4800;
port.Parity = Parity.None;
port.DataBits = 8;
port.StopBits = StopBits.One;
port.PortName = "COM1 ";
port.Open();
port.WriteLine( "test ");
Console.WriteLine(port.ReadLine());
}
------解决方案--------------------我自己没做过Serial Port,但凭直觉 port.WriteLine( "test ")是向外发的,是发给外节设备的,不是发给自己的; 而port.ReadLine是读进来,也就是说收外来设备发给你的数据,这和你用port.WriteLine发出去的数据是不同的东西.
------解决方案--------------------COM1上没有接设备你想从serial port的inbuffer中读什么?!WriteLine和ReadLine作用的硬件区域是不一样的,一个是outbuffer一个是inbuffer。认真看看这个http://msdn2.microsoft.com/zh-cn/library/system.io.ports.serialport.readline(vs.80).aspx
设置ReadTimeout和WirteTimeout可以改善你的程序