找回密码
 立即注册
收起左侧

串口接收中文字符显示乱码

6
回复
10285
查看
[复制链接]
累计签到:7 天
连续签到:1 天
来源: 2016-5-3 20:58:16 显示全部楼层 |阅读模式
1Qter豆
本帖最后由 娃娃鱼_NJUST 于 2016-5-3 20:59 编辑

void MainWindow::on_send_clicked()
{   
senddata=ui->textsend->toPlainText();   
QByteArray s=senddata.toLocal8Bit();   
myCom->write(s);
}

void MainWindow::RCV()
{   
QString s=QString::fromLocal8Bit(myCom->readAll());   
ui->textreceive->insertPlainText(s);
}
请教大神,我用QT5自带的QSerialPort类写的串口通信程序中,on_send_clicked()  发送程序可以成功发送中文字符,但是用串口调试助手向程序发送中文字符,RCV() 函数接收倒的却是乱码,这是什么原因呢?


回复

使用道具 举报

累计签到:410 天
连续签到:1 天
2016-5-3 21:43:46 显示全部楼层
QString::fromLocal8Bit
改为QString::fromUtf8呢?
回复

使用道具 举报

累计签到:615 天
连续签到:1 天
2016-5-3 22:00:55 显示全部楼层
能接受到东西说明串口已经调通了,但是如果有是乱码,一般都是  编码 的错误  你百度下 QString 和QByteArray的标准转换,就可以了。你的这个toLocal8Bit()不行吧,表示串口通信从来没用过这样的编码
回复

使用道具 举报

累计签到:7 天
连续签到:1 天
2016-5-4 10:21:42 显示全部楼层
a408815041 发表于 2016-5-3 21:43
QString::fromLocal8Bit
改为QString::fromUtf8呢?

试过QString::fromUtf8 ,不行,而且跟QString::fromLocal8Bit 显示的乱码是一样的额(⊙o⊙)…
回复

使用道具 举报

累计签到:7 天
连续签到:1 天
2016-5-4 10:23:13 显示全部楼层
qq1043068972 发表于 2016-5-3 22:00
能接受到东西说明串口已经调通了,但是如果有是乱码,一般都是  编码 的错误  你百度下 QString 和QByteArr ...

toLocal8Bit() 发送的结果是正常的,只是接收那边是乱码

点评

不要用8Bit了,用toLatin1() 这个  详情 回复 发表于 2016-5-4 14:17
回复

使用道具 举报

累计签到:615 天
连续签到:1 天
2016-5-4 14:17:31 显示全部楼层
娃娃鱼_NJUST 发表于 2016-5-4 10:23
toLocal8Bit() 发送的结果是正常的,只是接收那边是乱码

不要用8Bit了,用toLatin1() 这个
回复

使用道具 举报

累计签到:3 天
连续签到:1 天
2018-9-22 18:25:57 显示全部楼层
我靠,我遇到相同的问题的,朋友的你问题解决了吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

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