zoukankan      html  css  js  c++  java
  • serialport DataReceived事件

    serialport DataReceived事件, 默认是收到一个byte就触发事件.

                lock (thisLock)
                {
                    int len = sp.BytesToRead;
                    if (len > 0)
                    {
                        Byte[] data = new Byte[len];
                        try
                        {
                            sp.Read(data, 0, len);
                        }
                        catch (System.Exception)
                        {
    
                        }
                        SerialPortEventArgs args = new SerialPortEventArgs();
                        args.receivedBytes = data;
                        Debug.WriteLine("**** port1_DataReceived=" + Encoding.Default.GetString(data));
                        if (comReceiveDataEvent != null)
                        {
                            comReceiveDataEvent.Invoke(this, args);
                        }
                    }
    
                }

    举个例子,实际上返回的数据是*IDN?, 但每次触发的次数都不一样

    **** port1_DataReceived=*
    **** port1_DataReceived=IDN?
    
    **** port1_DataReceived=*
    **** port1_DataReceived=I
    **** port1_DataReceived=DN?
    
    **** port1_DataReceived=*
    **** port1_DataReceived=I
    **** port1_DataReceived=D
    **** port1_DataReceived=N?
    
    **** port1_DataReceived=*
    **** port1_DataReceived=I
    **** port1_DataReceived=D
    **** port1_DataReceived=N
    **** port1_DataReceived=?
    
    **** port1_DataReceived=*
    **** port1_DataReceived=IDN
    **** port1_DataReceived=?
    
    **** port1_DataReceived=*
    **** port1_DataReceived=I
    **** port1_DataReceived=DN?

     DataReceived 事件的处理,本质上是用线程来处理接收数据.

    SerialPort类,请勿定义为局部变量, 因为局部变量在函数结束后就释放了.而线程还没结束,端口还没释放. 就会产生下面2种异常

    System.ObjectDisposedException was unhandled
    Message: An unhandled exception of type 'System.ObjectDisposedException' occurred in mscorlib.dll
    Additional 
    
    information: 已关闭 Safe handle

    或者

    System.UnauthorizedAccessException was unhandled
      HResult=-2147024891
      Message=对端口“COM5”的访问被拒绝。
  • 相关阅读:
    各个基础学习模型超参数调节
    集成学习算法模板
    数据分析关键代码汇总
    数据预处理以及探索性分析(EDA)
    python pandas相关知识点(练习)
    错误 1 未能找到类型或命名空间名称“”, 引入DLL文件出现提示文件不存在问题
    TCPIP学习笔记
    Aforge.net识别简易数字验证码问题
    访问家庭路由器下的主机-路由设置
    python--8、socket网络编程
  • 原文地址:https://www.cnblogs.com/zitjubiz/p/12268451.html
Copyright © 2011-2022 走看看