主界面每秒计算相关数据,并且接受外部一台主机的串口查询命令,如果数据达到告警状态就发送一条告警命令,主界面也会显示相关告警,但现在主界面有时候刷新,操作都很慢,估计是因为串口操作的关系,如何使得串口操作不影响界面的相关操作呢?是用异步操作还是用线程。具体怎么实现呢?等待!每秒是主动去取串口数据的。没有使用c# 数据接收事件!这样的话有时候外部主机复位的时候读取数据会超时!怎么处理呢,还是用数据接收事件来处理?

解决方案 »

  1.   

    在没看过你实现方法的前提下。只能让你看我的实现方法了。
    最近没心情。没有续写下去。先凑合看看前三章.
    C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子。 
    C# 串口操作系列(2) -- 入门篇,为什么我的串口程序在关闭串口时候会死锁 ? 
    C# 串口操作系列(3) -- 协议篇,二进制协议数据解析 
      

  2.   

    请问,你是不是指实时接收外部发送过来的数据,进行处理,这样的话,采用事件方式WaitCommEvent
      

  3.   

    刚才看到:
    /*串口通讯使用一般有两种模式:
    1 问答,就是你提到的定时读取.比如200豪秒返回不是我指定字节长度就当出错处理.开始下次通讯.
      否则就接收读取回来解析数据
    2 触发接收,缓冲区有数据就触发datarecive事件,你要不断接收处理,比较被动.你所提到的委托也可以,其实比较方便可以直接开启一个后台BackgroundWorker线程来完成通讯,只要将数据共享就可以了,不影响界面线程
    */我现在使用的是第一种方法,但是有时候会有超时异常,如何像上面所说的使用 委托,或者后台线程。。来实现???