在vs2017中配置和使用MSCOMM控件1.MFC项目
2 .在类视图中,添加类向导
使用ActiveX类向导
添加CMSCommm
5 .打开端口
voidbasebox :3360 open port (CMS comm * CMS _ comm ) {m_MsCommz=cms_comm; inti comn=getprivateprofileint (' config ',' comn ',1,'.\config.ini ' ); if(m_mscommz-getportopen () ) m_mscommz-setportopen () false ); } m _ mscommz-setinbuffersize (1024; 输入缓冲区大小m_mscommz-setoutbuffersize(512; 设置输出缓冲区大小CString ComSetting; comsetting.format(9600,n、8、1 ); m_mscommz-setcommport(ICOMN; comm_mscommz-setinputmode(1; 用二进制输入; m _ mscommz-set settings (com setting ); 传输设定if (! m_MsCommz-GetPortOpen () ) m_mscommz-setportopen(true ); 串行端口m_mscommz-setRthreshold(1; 1表示存在引起事件m_mscommz-setinputlen(0)的字符。 将当前接受区域的长度设置为0m_MsCommz-GetInput (; 删除受理区域的残留数据; if (! m_MsCommz-GetPortOpen () ({CString temp; temp.Format ('无法打开串行端口[%d]!' 、iComN; afxmessagebox (临时; } } c bytearray hex数据; CString strSend; strsend.format(x05xx0200 )、0、0、01 ); //010501070200字符串2 hex (str send,hexdata ); 添加检查2 hex (hex数据; m _ mscommz-set output (cole variant ) hex数据); } 6.在“资源”视图中添加ActiveX控件
7 .设置控件的数据处理函数
定义类
CMSComm m_MsCommz; 构造函数中的初始化类。 IDC_MSCOMM1是控件ID
dx_control(pdx,IDC_MSCOMM1,m_MsCommz ); 将触发事件绑定到控件
on_event(BoxParentDLG,IDC _ MSComm 1,1,boxparentdlg 33603360 oncomm MSComm 1,VTS_NONE ) ) boxparentdlg : one
voidboxparentdlg :3360 oncomm MSComm1() if(m_mscommz.getcommevent )==2) /要确定串行端口上是否存在数据,等于2 龙兰,k; 字节数据[ 1024 ]; BYTE数组an8-bitintegerthatisnotsigned.cstring strtemp设置; int iBufferCount; CByteArray m_ByteArrayComm; ibuffercount=m _ mscommz.getinbuffercount (; //接收缓冲区的字符数variant_inp=m_MsCommz.GetInput (; //读缓冲器safearray_inp=variant_inp; //VARIANT型变量是ColeSafeArray型变量len=safe array _ InP.getonedimsize (; //得到有效数据长度for (k=0; k len; k ) safearray_InP.getelement(k,rxdata k ); 转换为BYTE型序列for (k=0; k len; k ) ) byteBt=*(char* ) ) rxdata k ); //字符类型m_bytearraycomm.add(Bt; } if (true==m _ boxcomctrlbase-verification data (m _ bytearraycomm ) ) { m _ boxcomctrlbase-on data parsing }; }}然后,可以通过OnDataParsing方法实现与硬件交互的驱动程序。 如果有不明白的地方,欢迎留言