关于CnComm的一点总结

CnComm是国人llbird所编写的一个串口通信开源库,详细介绍请查看:https://blog.csdn.net/wujian53/article/category/336981,最新的讨论博客请查看:http://www.cppblog.com/llbird/archive/2009/05/15/CnComm.html,最新的版本为1.51(事实上已多年没更新的说。。)。

(PS:月更博客又来了,差点忘记更新了)

今天来讨论一下CnComm在windows下的异步读取和同步读取用法,这些都只是我在工作上使用这个库时用法的总结,如有错误,请在评论区指出来,谢谢。

首先是异步读取的用法:

首先我们创建一个CnComm对象,例如

    CnComm cncomm;

然后打开串口

    if(!cncomm.open(1,115200))
    {
        //打开串口失败
    }

上面代码的作用为以115200的波特率打开串口1。在这里我们先去看看CnComm的默认构造函数和Open函数

//默认构造函数
#ifdef CN_COMM_FOR_CE
	//! WINCE:默认打开串口时启动监视线程 启用写独立线程 启用写缓冲
	CnComm(DWORD dwOption = EN_THREAD ) 
#else 
	//! WIN32:默认打开串口时启动监视线程 异步重叠方式 
	CnComm(DWORD dwOption = EN_THREAD | EN_OVERLAPPED)
#endif
	{
		Init(); 
		SetOption(dwOption);
	}

//Open函数
/*! \param[in] dwPort 串口序号 1~1024 \param[in] dwBaudRate 波特率 \param[in] btParity  奇偶校验 \param[in] btByteSize 数据位数	\param[in] btStopBits 停止位数	*/
	//! 打开串口 缺省 9600, n, 8, 1 \sa bool Open(DWORD dwPort, LPCTSTR szSetStr)
	bool Open(DWORD dwPort, DWORD dwBaudRate, BYTE btParity = NOPARITY, BYTE btByteSize = 8, BYTE btStopBits = ONESTOPBIT)
	{
		if (!CN_ASSERT(dwPort>=1 && dwPort<=1024))
			return false;
		
		BindPort(dwPort);
		
		if (!CN_ASSERT(OpenPort()))
			return false;
		
		if (!CN_ASSERT(SetState(dwBaudRate, btParity, btByteSize, btStopBits)))
			return Close(), false;

		if (!CN_ASSERT(SetupPort()))
			return Close(), false;

		if ((dwOption_ & (EN_THREAD|EN_RX_THREAD|EN_TX_THREAD)) && !CN_ASSERT(BeginThread()))
			return Close(), false;

		return true;
	}

可以看出,CnComm默认开启了监视线程,而监视线程运行的代码如下

#if defined(_MT) && !defined(CN_COMM_FOR_
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值