QT串口通信怎么发送十六进制字符串?
龚建伟老师编写的串口调试助手里面有个十六进制的发送和接收功能,不知道有没有哪位尝试过在QT里面实现同样的功能?就是对于类似“02e3a2f5d6”的字符串作为一个十六进制...
龚建伟老师编写的串口调试助手里面有个十六进制的发送和接收功能,不知道有没有哪位尝试过在QT里面实现同样的功能?就是对于类似“02e3a2f5d6”的字符串作为一个十六进制字符串发送,而不是作为普通的字符串发送,我看了他写的源代码,里面有一个字符串转换函数,这个函数可以直接拿过来用,但是使用qextserialport类进行发送的时候,出现了一点小问题,就是当字符的ASCII码值大于127时,会将最高位省略,比如发送"f5",收到的字符转换为十六进制后变成"75",如果你们有兴趣,可以帮我看看,十分感谢!!
展开
2个回答
展开全部
类似“02e3a2f5d6”的字符串,可以用字符拆分的方式进行分解,可以分解到QByteArray对象中
给你一个拆分类似 "12 35 AB 25 CD"字符串的函数,自己再稍加改动就可以用了
QByteArray HEXStringToArr(QString hexstr)
{
QByteArray qrst;
hexstr=hexstr.trimmed();
hexstr=hexstr.replace("",",");
QStringList sl=hexstr.split(",");
foreach(QString s,sl)
{
if(!s.isEmpty())
qrst.append((char)s.toInt(0,16)&0xFF);
}
return qrst;
}
给你一个拆分类似 "12 35 AB 25 CD"字符串的函数,自己再稍加改动就可以用了
QByteArray HEXStringToArr(QString hexstr)
{
QByteArray qrst;
hexstr=hexstr.trimmed();
hexstr=hexstr.replace("",",");
QStringList sl=hexstr.split(",");
foreach(QString s,sl)
{
if(!s.isEmpty())
qrst.append((char)s.toInt(0,16)&0xFF);
}
return qrst;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询