CSerialPort类发送十六进制数问题 在使用CSrialPort类通过串口与单片机通信时,默认的是以字符型发送,希望能以十六进制发送,比如上位机发送0x11,下位机能收到,而不是asc码值,小弟愚钝,初学vc,还望各位朋友指点下,最好详细些 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 "\x11\x12\x13"上面就是0x11 0x12 0x13 不知道你是不是在编辑框里输入一个字符串,然后按十六进制发送的,如果是的话下面的代码对你有帮助char hex(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;}void strhex(CString str,char *data){ int t,t1; int rlen=0,len=str.GetLength(); for(int i=0;i<len) { char l,h=str[i]; if(h==' ')去空格 { i++; continue; } i++ if(i>=len)break; l=str[i]; t=hex(h);高位 t1=hex(l);低位 if((t==16)||(t1==16)) break; else t=t*16+t1; i++; data[rlen]=(char)t; rlen++; }} 用BYTE或char数组,填充16进制数据,再发送即可。 你可以重载那个函数的,看下VC\tc 串口通讯编程实例。 CSrialPort类修改下,将发送的char改成BYTE,然后BYTE bSend[1]={0x11},直接发送就可以了 MFC 多文档程序已经做好了"保存文件"按钮,到底能保存文件的什么信息呀? 跪求源码或者类似,VC++在窗口中显示图片缩略图。 奇怪的问题,不知道是不是vc的bug 很简单又很奇怪的问题,找不到对话框的句柄 vc 中的this指针!! 怎樣可以設定靜態文本框裏的字體格式呢??? 如何将 _variant_t型的值转换int,和bool? 文件格式问题 CMFCPropertyGridProperty 重绘问题 CAsyncsocket 如何检测连接对象突然断线。请赐教! 如何在MFC中使用Shockwave Flash Object控件 怎么我感觉COM和DLL那么像
上面就是0x11 0x12 0x13
char hex(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;
}
void strhex(CString str,char *data)
{
int t,t1;
int rlen=0,len=str.GetLength();
for(int i=0;i<len)
{
char l,h=str[i];
if(h==' ')去空格
{
i++;
continue;
}
i++
if(i>=len)break;
l=str[i];
t=hex(h);高位
t1=hex(l);低位
if((t==16)||(t1==16))
break;
else
t=t*16+t1;
i++;
data[rlen]=(char)t;
rlen++;
}
}