读书人

SerialPort的有关问题

发布时间: 2012-01-06 22:55:18 作者: rapoo

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可以改善你的程序

读书人网 >C#

热点推荐