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是否打开
[解决办法]
这个不会。以前用过VSDP虚拟串口,一个虚拟串口发送数据,另一个虚拟数据模拟返回数据,没有你说的问题。
[解决办法]
为何要用代理?
为何不用 serialPort1.onreceive 事件?