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

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

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。