VS2017串口收发MFC程序,十六进制和字符发送,字符串显示与hex显示(二)-代码(附链接)

运行界面:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

步骤

这里是双击控件后生成的所有函数,以及我们为Active控件添加的事件处理函数,定时函数等
在这里插入图片描述
在这里也可以看到我们创建的变量
在这里插入图片描述
首先是串口

void CMFCcktestDlg::OnCommMscomm3()
{
   
	// TODO: 在此处添加消息处理程序代码
	VARIANT variant_inp;
	COleSafeArray safearray_inp;
	long len, k;
	byte rxdata[2048]; //设置BYTE 数组
	CString strtemp, buffer;

	if (m_mscomm.get_CommEvent() == 2) //值为2表示接收缓冲区内有字符
	{
   
		if (BST_UNCHECKED == ((CButton*)GetDlgItem(IDC_CHECK16RECEIVE))->GetCheck())
		{
   
			//以下是正常显示效果处理代码,十六进制显示 
			variant_inp = m_mscomm.get_Input(); //读缓冲区  
			safearray_inp = variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
			len = safearray_inp.GetOneDimSize(); //得到有效数据长度        
			for (k = 0; k < len; k++)
				safearray_inp.GetElement(&k, rxdata + k);//转换为BYTE型数组         
			for (k = 0; k < len; k++)                    //将数组转换为Cstring型变量    
			{
   
				BYTE bt = *(char*)(rxdata + k);//字符型      
				strtemp.Format(_T("%c"), bt); //将字符送入临时变量strtemp存放   
				if (strtemp == '\n' || strtemp == '\r')
				{
   
					strtemp = "\r\n";
				}
				//此处编译有错误,可在项目属性->配置属性->常规里将“字符集”改为使用多字节字符集即可
				m_EditReceive += strtemp; //加入接收编辑框对应字符串      
			}

			//UpdateData(FALSE); //更新编辑框内容
			SetDlgItemText(IDC_EDIT2, m_EditReceive);
			/*IDC_RECEIVE_EDIT1->ReplaceSel(m_strRXDATA, FALSE);*/
			//m_mscomm.LineScroll(m_mscomm.GetLineCount());//clw注释
		}
		else//字符串显示
		{
   
			variant_inp = m_mscomm.get_Input(); //读缓冲区  
			safearray_inp = variant_inp; //VARIA NT型变量转换为ColeSafeArray型变量
			len = safearray_inp.GetOneDimSize(); //得到有效数据长度        
			for (k = 0; k < len; k++)
			{
   
				safearray_inp.GetElement(&k, rxdata + k);//转换为BYTE型数组 
		/*		strtemp.Format(_T("%02X"), *(rxdata + k));
				buffer += strtemp;*/
			}
			//buffer.TrimLeft();
			//buffer.TrimRight();
			//CByteArray receivedata;
			//int receivedatalen;
			//receivedatalen = Str2Hex(buffer, receivedata);
			for (k = 0; k < len; k++)
			{
   
				switch (rxdata[k] / 16)
				
  • 4
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淮杨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值