读书人

C#串口通讯

发布时间: 2013-09-05 16:02:07 作者: rapoo

C#串口通信
本帖最后由 BenBenBears 于 2013-08-26 08:39:11 编辑 最近在学习C#串口通信,调用C#的SerialPort类开发,编写接收程序时遇到如下的问题:

   
private void aTimer_Elapsed(object sender, ElapsedEventArgs s)
{
if (isOpen)
{
try
{
//SetPortProperty();
//ScreenBox.Text += sp.ReadExisting();

//string overWord="over";
//sp.NewLine = overWord;
//ScreenBox.Text += sp.ReadLine();
ChangeText CText = delegate()//声明和定义一个匿名代理
{
// ScreenBox.Text += sp.ReadExisting();

string dataRev;
byte[] byteRead=new byte[serialPort1.BytesToRead;
sp.Read(byteRead, 0, byteRead.Length);
dataRev = Encoding.Default.GetString(byteRead);
ScreenBox.Text += dataRev;


ScreenBox.Text += sp.ReadExisting();
};
ScreenBox.Invoke(CText);

}
catch (Exception)
{
return;
}
}

}


调试发现,每次调用BytetoRead成员时会抛出“端口以被关闭”的异常,请问该如何破,谢谢。 串口通信 c# 异常
[解决办法]
那你就检查一下是否在什么地方关闭了串口,serialPort1是否打开
[解决办法]
引用:
Quote: 引用:

那你就检查一下是否在什么地方关闭了串口,serialPort1是否打开

另外我使用的是VSDP的虚拟串口,这样会不会是造成BytesToRead(获取接收缓冲区中数据的字节数)抛出异常的原因?

这个不会。以前用过VSDP虚拟串口,一个虚拟串口发送数据,另一个虚拟数据模拟返回数据,没有你说的问题。
[解决办法]
为何要用代理?

为何不用 serialPort1.onreceive 事件?

读书人网 >C#

热点推荐