您当前的位置: 首页 > 

txwtech

暂无认证

  • 1浏览

    0关注

    813博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

VS2010基于Mscomm组件的MFC串口通信实例

txwtech 发布时间:2019-05-15 17:46:33 ,浏览量:1

VS2010基于对话框的MFC串口通信实例

测试提前安装虚拟串口

工程文件源代码与虚拟串口软件在Q-Q群文件里面,见底部。

 

 

部分代码供参考

void CmscommExampleDlg::OnCbnSelchangeCombo1()
{
	// TODO: 在此添加控件通知处理程序代码
	int nSel;
	nSel=m_comboCom.GetCurSel();//获取组合框控件的列表框中选中项的索引
	m_ctrlComm.put_CommPort(nSel+1);///选择串口号(这里因为列表框的索引号是从0开始
	m_ctrlComm.put_PortOpen(TRUE);//打开串口
	/*MessageBox("端口已经打开");
	else
	MessageBox("打开失败");*/
	m_ctrlComm.put_RThreshold(2);//收到两个字节引发OnComm事件
	m_ctrlComm.put_InputMode(1);//输入模式选为二进制	
	m_ctrlComm.put_Settings("9600,n,8,1");//设置串口参数,波特率,无奇偶校验,位停止位,位数
	m_ctrlComm.put_InputMode(1);// 以二进制方式检取数据 
	m_ctrlComm.put_RThreshold(1);//参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm
	m_ctrlComm.put_InputLen(0);//设置当前接收区数据长度为0 
	m_ctrlComm.get_Input();//先预读缓冲区以清除残留数据  
	m_setOk=true;//标记串口设置OK
	//m_ctrlComm.SetWindowTextA("22");
	m_comboCom.EnableWindow(FALSE);
	m_Log="串口连接成功";
	UpdateData(FALSE);
	
}
BEGIN_EVENTSINK_MAP(CmscommExampleDlg, CDialogEx)
	ON_EVENT(CmscommExampleDlg, IDC_MSCOMM1, 1, CmscommExampleDlg::OnCommMscomm1, VTS_NONE)
END_EVENTSINK_MAP()


void CmscommExampleDlg::OnCommMscomm1()
{
	// TODO: 在此处添加消息处理程序代码
 VARIANT variant_inp;//Variant 是一种特殊的数据类型,除了定长String数据及用户定义类型外,可以包含任何种类的数据
 COleSafeArray safearray_inp;
 LONG len,k;
 BYTE rxdata[2048];//设置BYTE数组 An 8-bit integer that is not signed.     
 CString strtemp,strtemp1;
 strtemp1="";
 if(m_ctrlComm.get_CommEvent()==2)//事件值为2表示接收缓冲区内有字符   
 {
	 variant_inp=m_ctrlComm.get_Input();//读缓冲区  
	 safearray_inp=variant_inp;//VARIANT型变量转换为
	 len=safearray_inp.GetOneDimSize();//得到有效数据长度      
	 for(k=0;k            
关注
打赏
1665060526
查看更多评论
0.0391s