该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
qt实现串口通信时候,把文本框的数据以16进制的形式发送的问题
1、我在网上找了函数,把数据转换为16进制,
//字符串转换成16进制数据0-F
void porttest::StringToHex(QString str, QByteArray & senddata)
{
int hexdata,lowhexdata;
int hexdatalen = 0;
int len = str.length(); senddata.resize(len/2); char lstr,hstr; for(int i=0; i= len) break; lstr = str[i].toLatin1();
hexdata = ConvertHexChar(hstr); lowhexdata = ConvertHexChar(lstr); if((hexdata == 16) || (lowhexdata == 16)) break; else hexdata = hexdata*16+lowhexdata; ++i; senddata[hexdatalen] = (char)hexdata; ++hexdatalen; } senddata.resize(hexdatalen);
}
char porttest::ConvertHexChar(char ch)
{
if((ch >= '0') && (ch <= '9')) return ch-0x30; else if((ch >= 'A') && (ch <= 'F')) return ch-'A'+10; else if((ch >= 'a') && (ch <= 'f')) return ch-'a'+10; else return (-1); // else return ch-ch;//不在0-f范围内的会发送成0
}
我现在文本框内输入‘w’,输出的不是16进制的w,但是如果我输出w的16进制77,单片机那边返回来的是w,
想请教一下有没有人遇到这样的问题