《vc串口通讯dll》word版

《vc串口通讯dll》word版

ID:29351551

大小:130.00 KB

页数:36页

时间:2018-12-18

《vc串口通讯dll》word版_第1页
《vc串口通讯dll》word版_第2页
《vc串口通讯dll》word版_第3页
《vc串口通讯dll》word版_第4页
《vc串口通讯dll》word版_第5页
资源描述:

《《vc串口通讯dll》word版》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、VC串口通讯DLL串口在工业应用是极为普遍的,我用API封装了同步和异步的串口类,以及一个具有监视线程的异步串口类;使用简单高效,具有工业强度,我在BC,BCB,VC,BCBX,GCC下编译通过,相信足够应付大多数情况,而且还可以继承扩展,下面简单介绍使用方法库的层次结构:_base_com:虚基类,基本接口,可自行扩展自己的串口类_sync_com:_base_com的子类,同步应用,适合简单应用_asyn_com:_base_com的子类,异步应用(重叠I/O),适合较高效应用,NT平台_thr

2、ead_com:_asyn_com的子类,异步应用,监视线程,适合较复杂应用,窗口通知消息和继承扩展的使用方式;几个问题:结束线程如何从WaitCommEvent(pcom->_com_handle,&mask,&pcom->_wait_o)这个API退出以便顺利结束线程:方案1:SetCommMask(_com_handle,0);这个方法在MSDN有载,当在一些情况下并不完全有效,原因未知;方案2:SetEvent(_wait_o.hEvent);直接激活重叠IO结构中的事件句柄,绝对有效;这份

3、代码我两种都用;打开10以上的COM端口在NT/2000下打开编号10以上端口用_com_handle=CreateFile(“COM10“,GENERIC_READGENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMALFILE_FLAG_OVERLAPPED,//重叠I/ONULL);将提示错误,这样就OK:_com_handle=CreateFile(“\\.\COM10“,//对应的就是\.COM10GENERIC_READG

4、ENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMALFILE_FLAG_OVERLAPPED,//重叠I/ONULL);线程中循环的低效率问题使用SetCommMask(pcom->_com_handle,EV_RXCHAREV_ERR)监视接受字符和错误消息;一旦有个字符来就会激活WaitCommEvent通常作以下接受操作:if(!WaitCommEvent(pcom->_com_handle,&mask,&pcom->_wait_o))

5、{if(GetLastError()==ERROR_IO_PENDING){GetOverlappedResult(pcom->_com_handle,&pcom->_wait_o,&length,true);}}if(mask&EV_ERR)//==EV_ERRClearCommError(pcom->_com_handle,&error,&stat);if(mask&EV_RXCHAR)//==EV_RXCHAR{pcom->on_receive();//接收到字符//或发送到窗口消息}这样频繁

6、的函数调用或接受发送消息,效率低下,我添加扫描缓冲区的代码,当字符数超过设定的字符数才作接受字符的操作;if(mask&EV_RXCHAR)//==EV_RXCHAR{ClearCommError(pcom->_com_handle,&error,&stat);if(stat.cbInQue>pcom->_notify_num)//_notify_num是设定得字符数pcom->on_receive();}类似于流的输出方式我编了一个简单的写串口的方式,可以类似于流将简单的数据类型输出templat

7、e_asyn_com&operator<<(Tx){strstreams;s<

8、rt,intbaud_rate);boolopen(intport,char*set_str);//set_str:“9600,8,n,1“boolset_state(intBaudRate,intByteSize=8,intParity=NOPARITY,intStopBits=ONESTOPBIT)//设置内置结构串口参数:波特率,停止位boolset_state(char*set_str)boolis_open();HANDLEget_handle();virt

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。