zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    windows下大数据开发环境搭建(3)——Scala环境搭建
    windows下大数据开发环境搭建(1)——Java环境搭建
    windows下大数据开发环境搭建(2)——Hadoop环境搭建
    I/O复用
    SuRF : Practical Range Query Filtering with Fast Succinct Tries
    信号处理
    进程间通信
    简易内存分配器的实现
    socket编程(C++)
    C++—程序的内存分区
  • 原文地址:https://www.cnblogs.com/lizhaoduo/p/3944467.html
Copyright © 2011-2022 走看看