找回密码
 立即注册

QT 编码转换 QByteArray至QString乱码

查看数: 6621 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-1-8 18:16

正文摘要:

已知QByteArray接收编码为/xCE/xD2/xCA/xC7/xD6...........(接收正确); 已知对方发送为: ("我是中国人"); 16进制码为: CE D2 CA C7 D6 D0 B9 FA C8 CB ; ==================================; 已知编译环境为: UTF-8 ...

回复

wlq19911021 发表于 2019-1-9 22:38:47
baizy77 发表于 2019-1-9 10:49
这能保证你收到完整的数据后再显示。不影响是否高速显示。使用报头、长度等设计是基本的通信设计原则。直 ...

C++运行在.Net之上, 处理数据也得是面对对象法, 而不是常规数据处理手段
wlq19911021 发表于 2019-1-9 22:37:06
baizy77 发表于 2019-1-9 10:49
这能保证你收到完整的数据后再显示。不影响是否高速显示。使用报头、长度等设计是基本的通信设计原则。直 ...

串口就是要实时显示, 1M字节以上的速度, 你确信不在底层,用的不是CPU周期能处理得过来
baizy77 发表于 2019-1-9 10:49:09
wlq19911021 发表于 2019-1-9 00:40
那有什么用, 我要做的是串口助手, 要高速显示

这能保证你收到完整的数据后再显示。不影响是否高速显示。使用报头、长度等设计是基本的通信设计原则。直接读取串口无法保证一次收集全部的发送数据,只能保证读取到现在串口中收到的数据,而这些未必是您期望的全部数据。
wlq19911021 发表于 2019-1-9 00:40:43
baizy77 发表于 2019-1-8 21:04
QByteArray arrayBuf = serialPort->readAll(); //读取所有字节
您确认这样能一次读取所有对方发来的数据吗 ...

那有什么用, 我要做的是串口助手, 要高速显示

点评

这能保证你收到完整的数据后再显示。不影响是否高速显示。使用报头、长度等设计是基本的通信设计原则。直接读取串口无法保证一次收集全部的发送数据,只能保证读取到现在串口中收到的数据,而这些未必是您期望的全部  详情 回复 发表于 2019-1-9 10:49
baizy77 发表于 2019-1-8 21:04:08
本帖最后由 baizy77 于 2019-1-8 21:05 编辑

QByteArray arrayBuf = serialPort->readAll(); //读取所有字节
您确认这样能一次读取所有对方发来的数据吗?建议在发送时进行组帧,接收时解帧。给数据加上报头、长度、校验码等通信常用的结构。
接收时对这些内容依次判断。完全通过验证的数据才能进行展示。

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了