• NetSerialComm的基本使用方法


    近期搞一个com口传输的小项目,原来认为是一个挺简单的一个小功能,结果生产商发来com以后直接傻眼了,还要对相关的硬件流进行处理 如下

      // 硬件流控制设置

    dcb.fOutxCtsFlow = FALSE;

    dcb.fRtsControl = FALSE;

    // XON/XOFF流控制设置

    dcb.fInX = TRUE;  

    //发送端(DEV)FALSE,接收端(PC):TRUE

    dcb.fOutX = FALSE;  //发送端(DEV)TRUE,接收端(PC):FALSE

    dcb.XonChar = XON;

    dcb.XoffChar = XOFF;

    dcb.XonLim = 3000;  //接收(输入)缓冲区未用空间大于3000,发送XON,允许发送。

    dcb.XoffLim =1000;  //接收(输入)缓冲区已接收字符大于1000,发送XOFF,禁止发送。

    然后看了以后发现c#里面根本就没有这一块的设计,看到网上有一个NetSerialComm的控件,应该是微软自己封装的com口接受程序,感觉还不错,比较符合我们自己的需求,但是跟我们平时使用的方式不太一样,所以在此写一下

        public class BaseTerm : CommBase
              //需要自己写一个类来继承,否则的话commbase是抽象类无法处理
    {
    public static BaseTerm term; public static CommBaseSettings settings; //settings是必须要的,在设置的时候,使用重载来加载数据的基本设置
    public void initCom() { if (settings==null) { settings = new CommBaseSettings(); } if (term==null) { term = new BaseTerm(); } //设置波特率等 BaseTerm.settings.SetStandard("COM1", 115200, CommBase.Handshake.XonXoff); BaseTerm.settings.rxFlowX = false; BaseTerm.settings.useDTR = HSOutput.none; BaseTerm.settings.useRTS = HSOutput.none; if (BaseTerm.term.Open()) { Console.WriteLine("串口打开了"); } else { Console.WriteLine("串口打失败"); } } //收取到的数据将在OnRxChar的里面增加 protected override void OnRxChar(byte c) { string s; bool nl = false; ASCII v = (ASCII)c; Console.WriteLine(c.ToString("X")); } //这个地方的设置最重要,否则数据将不会返回
    protected override CommBaseSettings CommSettings() { return settings; } }

     当时处理的时候,卡到了几个地方,一个就是重载数据获取这块,另外一个就是设置的处理,需要重载那个CommSettings

    这样处理完了就可以直接使用了!

  • 相关阅读:
    列表页无限滚动翻页组件--解决性能问题
    UI组件化介绍
    js请求数据的例子
    移动端bug和优化
    利用字符串路径获取对象集合的值
    n个骰子的和,组成数字m的可能
    算法-回形路径
    学习python-跨平台获取键盘事件
    获取数组中多个相加等于0的一组数字 javascript
    一个矩阵 JavaScript
  • 原文地址:https://www.cnblogs.com/lizhaoduo/p/3944467.html
Copyright © 2020-2023  润新知