MFC中怎么通过MSComm控件进行十六进制数据的收发

wangjinzhen 2009-08-18 04:48:59
本人在MFC中建了一个对话框,在其上添了一个MSComm控件,一个Button用于发送,两个Edit Box,一个用于输入待发送数据(十六进制),另一个用于接收数据并以十六进制显示出来,现在的问题就是如何将接收到的数据转换成十六进制?
...全文
259 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
thy38 2009-08-19
  • 打赏
  • 举报
回复
只有转换了
xumaojun 2009-08-19
  • 打赏
  • 举报
回复
看看下面的代码
//将字符转化为16进制
char HexChar(char c)
{
if((c>='0')&&(c<='9'))
return c-0x30;
else if((c>='A')&&(c<='F'))
return c-'A'+10;
else if((c>='a')&&(c<='f'))
return c-'a'+10;
else
return 0x10;
}


//将一个字符串作为十六进制串转化为一个字节数组,字节间可用空格分隔,
//返回转换后的字节数组长度,同时字节数组长度自动设置。
intStr2Hex(CString str, char* data)
{
int t,t1;
int rlen=0,len=str.GetLength();
//data.SetSize(len/2);
for(int i=0;i<len;)
{
char l,h=str[i];
if(h==' ')
{
i++;
continue;
}
i++;
if(i>=len)
break;
l=str[i];
t=HexChar(h);
t1=HexChar(l);
if((t==16)||(t1==16))
break;
else
t=t*16+t1;
i++;
data[rlen]=(char)t;
rlen++;
}
return rlen;

}
  • 打赏
  • 举报
回复
我曾做过同样的事情,把接收和发送的数据做一些简单处理就可以了.
CByteArray bindata;
COleVariant var;
unsigned char chdata[2];
chdata[0]=(unsigned char)(sendData/256);
chdata[1]=(unsigned char)(sendData%256);
bindata.RemoveAll();
for(i=0;i<2;i++)
bindata.Add(chdata[i]);
var=bindata;
m_commmcrl.SetOutput(COleVariant(var));
我试过是可以的,如果还有问题的话.那应该跟代码没什么关系.
如果有什么其它更好方法,请赐教!
xmrforever 2009-08-18
  • 打赏
  • 举报
回复
m_recvData.Format("%2X",ch);

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧