|
yafeilinux 发表于 2014-8-4 22:32
这个在程序中没有实现。
折腾了一段时间,发现发送中文是没有问题的,用另一个串口助手可以接收到用这个发送的中文数据,然后就发现了问题,在发送数据时最后有一句
#if QT_VERSION < 0x050000
buf = ui->sendMsgLineEdit->text().toAscii();
#else
buf = ui->sendMsgLineEdit->text().toLocal8Bit();
我用的是QT5.3,就是在.toLocal8Bit();出了问题,中文字符编码unicode一般要两个字节(并且都大于127,属于不可打印字符),.toLocal8Bit()在这将一个中文汉字拆分成了两个独立的8位字节,然后发送出去,在解码的时候由于没有处理大于127的字符格式的数据,所以就发送中文显示成问号了.然后就在读取数据函数readMyCom()折腾了一宿,一个个试验,终于发现QString类有个fromLocal8Bit方法,所以就在readMyCom()下加了一句
buff = buff.fromLocal8Bit(temp); 然后一编译发现竟然能显示中文了.
不知我说的对不对,还请老师指导 |
|