首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#串口通讯

2013-09-05 
C#串口通信本帖最后由 BenBenBears 于 2013-08-26 08:39:11 编辑最近在学习C#串口通信,调用C#的SerialPort

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 事件?

热点排行