VC++中文本框中的数字数据,怎么以十六进制发送出去?如输入50发送32出去。
答案:2 悬赏:10 手机版
解决时间 2021-02-25 01:22
- 提问者网友:椧運幽默
- 2021-02-24 21:59
VC++中文本框中的数字数据,怎么以十六进制发送出去?如输入50发送32出去。
最佳答案
- 五星知识达人网友:独行浪子会拥风
- 2021-02-24 23:33
CString cs("");
cs.format("%x",50);//或者你需求的变量名,或者("%x %x %x",x1,x2,x3);
char *snd=(LPSTR)(LPCSTR)cs;
然后你自己发送吧追问额,能不能具体点,,感觉看不懂,你这个能让文本框里的东西发送出去么?追答晕,刚才没注意,你是写串口,你只需要把上面的4个数据用atoi转换成int类型就可以了,
如
先从文本框读出字符串,然后用atoi转换成数字 char c1=(char)( atoi((LPSTR)(LPCSTR)cs));
然后发送,
int len=StrToHex(m_StrTempAndRh,data);//这个函数是自己写的吧,data返回的是什么?
m_SerialPort.WriteToPort(data,len);//这个没学过,是这里出的错误吗?你用断点调试下看看追问对我自己写的,但是我的达不到要求,,,,虽然能发送文本框的内容,但是不能加上头/数据位/设备类型/设备编号这几位,
我想这样把头/数据位/设备类型/设备编号这几位,加进去,但是。。。我觉得这样不科学
追答你的StrToHex里的str是一个cstring类
怎么能用str[i]-'0',用下标i去访问?你的编译器没有报错吗?
你的错误提示框提示的是内存访问越界了,
你先用断点调试,一步步跟踪到底是哪里出现的这个问题
这个问题,完全可以用debug的调试模式找出问题出在哪里.你如果不会调试,可以百度一下,有不少完整的教程
cs.format("%x",50);//或者你需求的变量名,或者("%x %x %x",x1,x2,x3);
char *snd=(LPSTR)(LPCSTR)cs;
然后你自己发送吧追问额,能不能具体点,,感觉看不懂,你这个能让文本框里的东西发送出去么?追答晕,刚才没注意,你是写串口,你只需要把上面的4个数据用atoi转换成int类型就可以了,
如
先从文本框读出字符串,然后用atoi转换成数字 char c1=(char)( atoi((LPSTR)(LPCSTR)cs));
然后发送,
int len=StrToHex(m_StrTempAndRh,data);//这个函数是自己写的吧,data返回的是什么?
m_SerialPort.WriteToPort(data,len);//这个没学过,是这里出的错误吗?你用断点调试下看看追问对我自己写的,但是我的达不到要求,,,,虽然能发送文本框的内容,但是不能加上头/数据位/设备类型/设备编号这几位,
我想这样把头/数据位/设备类型/设备编号这几位,加进去,但是。。。我觉得这样不科学
追答你的StrToHex里的str是一个cstring类
怎么能用str[i]-'0',用下标i去访问?你的编译器没有报错吗?
你的错误提示框提示的是内存访问越界了,
你先用断点调试,一步步跟踪到底是哪里出现的这个问题
这个问题,完全可以用debug的调试模式找出问题出在哪里.你如果不会调试,可以百度一下,有不少完整的教程
全部回答
- 1楼网友:长青诗
- 2021-02-24 23:42
为什么要转换,硬件只识别二进制,不需要任何转换
数据包就像堆砖,想想怎样堆砖,很简单的
你的贴的代码就算不出错,数据也不能还原
出错原因是数据长度大于4
数据包就像堆砖,想想怎样堆砖,很简单的
你的贴的代码就算不出错,数据也不能还原
出错原因是数据长度大于4
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯