搜索
bottom↓
回复: 29

qt写的串口调试软件中文乱码和无法自动检测串口号的问题

[复制链接]

出0入0汤圆

发表于 2014-11-2 09:21:20 | 显示全部楼层 |阅读模式
本帖最后由 Vampireyifeng 于 2014-11-2 10:50 编辑

rt,刚学了几天的c++和qt,参照网上开源串口调试软件写的一个串口调试软件,想着以后串口调试就用这个,不过遇到了中文乱码的问题,而且无法自动检测串口号用的是qextserialport开源串口类,串口接收发送什么的都正常。
开发环境Qt 5.3.1  在vs2010+qt creator上也会出现中文乱码。控件的名字如果是在gui开发环境下设定就不会乱码用tr()就会出现乱码。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2014-11-2 09:31:14 | 显示全部楼层
编码方式改成这个试试
QTextCodec *codec = QTextCodec::codecForName("system");

出0入0汤圆

发表于 2014-11-2 09:38:46 | 显示全部楼层
你用的qt的版本?Qt已经集成了串口库

出0入0汤圆

 楼主| 发表于 2014-11-2 11:05:04 | 显示全部楼层
didadida 发表于 2014-11-2 09:31
编码方式改成这个试试
QTextCodec *codec = QTextCodec::codecForName("system");


还 是不 行,不过谢谢

出0入0汤圆

发表于 2014-11-2 11:08:44 | 显示全部楼层
刚想学QT win下和linux都已搭好环境 楼主学了多长时间啊

出0入0汤圆

发表于 2014-11-2 11:10:44 | 显示全部楼层
本帖最后由 ysu533 于 2014-11-2 11:34 编辑
Vampireyifeng 发表于 2014-11-2 11:05
还 是不 行,不过谢谢


QString::fromLoacal8bit("波特率"); 这样应该是中文. 但是这样在非中文的系统下可能会有问题. 更好的做法, 参见楼下

出0入0汤圆

 楼主| 发表于 2014-11-2 11:16:33 | 显示全部楼层
lyxer 发表于 2014-11-2 11:08
刚想学QT win下和linux都已搭好环境 楼主学了多长时间啊

刚开始也就4,5天

出0入0汤圆

发表于 2014-11-2 11:18:19 | 显示全部楼层

你这是要逆天啊

出0入0汤圆

发表于 2014-11-2 11:31:59 | 显示全部楼层
乱码很好解决. 几条思路.
1: tr() 如果你不想国际化(多语言), 那么就不要用tr, 使用QString::fromLocal8Bit()(如果源文件是ANSI编码), QString::fromUtf8()(如果源文件是UTF-8编码, 推荐这个). QStringLiteral()之类的.
2: 如果要国际化, 即使用了tr, 那么强烈推荐源文件中不要使用中文, 只使用英文. 由英文翻译成别的语言是更多通用的做法. 而且这样做还有一个问题由Desinger, ui文件自己生成的源文件里面的中文字符是转义字符. 翻译很麻烦(类似\0x85\0x86之类的).
3: 鉴于以上两点, 不管您用不用tr, 考不考虑国际化. 推荐使用utf-8编码. 但是MS对utf的支持不太好.
VC2010 的话, 需要文件保存为带BOM 的utf-8编码. 然后源文件中包含杂注 #pragma execution_character_set("utf-8")
vc2013的话, 只需要保存为带bom的UTF-8编码即可. 无需包含杂注.
vc2012的话. 以上两种都不行, 我的做法就是不用vc2012, 或者是全英文代码, 然后ANSI编码
其它版本的vc没用过, 具体未知.

出0入0汤圆

 楼主| 发表于 2014-11-2 11:37:32 | 显示全部楼层
ysu533 发表于 2014-11-2 11:31
乱码很好解决. 几条思路.
1: tr() 如果你不想国际化(多语言), 那么就不要用tr, 使用QString::fromLocal8Bit ...

谢谢,本来不想用QString::fromLocal8Bit,看来我还是老老实实的用 QString::fromLocal8Bit()吧

出0入0汤圆

发表于 2014-11-2 11:37:43 | 显示全部楼层
lyxer 发表于 2014-11-2 11:18
你这是要逆天啊

Qt很好学.如果你基本功扎实(C++, 操作系统本身编程相关的概念比较了解), 看Qt,1-3天完全能写出一个看起来比较像样的程序. Qt文档相当的不错

出0入0汤圆

发表于 2014-11-2 11:40:24 | 显示全部楼层
Vampireyifeng 发表于 2014-11-2 11:37
谢谢,本来不想用QString::fromLocal8Bit,看来我还是老老实实的用 QString::fromLocal8Bit()吧{:biggr ...

还是utf-8更方便. 更具移植性. 转换很方便的. 如果有不明的地方可以问下. 我可以简单写个教程. 推广Qt

出0入0汤圆

发表于 2014-11-2 12:56:12 | 显示全部楼层
楼上就做个QT推广大使吧:)期待!

出0入0汤圆

 楼主| 发表于 2014-11-2 12:59:09 | 显示全部楼层
ysu533 发表于 2014-11-2 11:37
Qt很好学.如果你基本功扎实(C++, 操作系统本身编程相关的概念比较了解), 看Qt,1-3天完全能写出一个看起来 ...

是的,

出0入0汤圆

 楼主| 发表于 2014-11-2 13:00:28 | 显示全部楼层
ysu533 发表于 2014-11-2 11:40
还是utf-8更方便. 更具移植性. 转换很方便的. 如果有不明的地方可以问下. 我可以简单写个教程. 推广Qt{:l ...

支持,用QString::fromLocal8Bit的话,qmessage里的中文还是乱码的

出0入0汤圆

发表于 2014-11-2 14:00:51 | 显示全部楼层
既然都用了Qt5.3.2,
就直接用库里的标准串口类吧,
QSerialPort,好用多了。

qextserialport都是多少年前的东西了。

出0入0汤圆

发表于 2014-11-2 14:21:45 | 显示全部楼层
simonxiao 发表于 2014-11-2 12:56
楼上就做个QT推广大使吧:)期待!


录了两个短视频, 第一次录, 不怎么会用. 结果第一个工程录完, 录第二个工程, 录完,发现第一个工程的视频没了, 又重新录了一遍第一个工程






后面两个附件分卷压缩了, 请去掉001 002后面的.zip再解压

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-11-2 14:24:50 | 显示全部楼层
Vampireyifeng 发表于 2014-11-2 13:00
支持,用QString::fromLocal8Bit的话,qmessage里的中文还是乱码的

可能你其它有不对的地方. 参看我17楼的视频

出0入0汤圆

 楼主| 发表于 2014-11-2 16:00:50 | 显示全部楼层
ysu533 发表于 2014-11-2 14:21
录了两个短视频, 第一次录, 不怎么会用. 结果第一个工程录完, 录第二个工程, 录完,发现第一个工程的视频 ...

谢谢,非常感谢,解决了,教程录的很好。话说你是怎么找到方法的呢?我 没有查官方文档。在网上搜都解决不了

出0入0汤圆

发表于 2014-11-2 20:51:50 | 显示全部楼层
直接使用英文,然后用多语言文件来解决。这样就没有乱码了,原因的话,上面的9楼的 很详细。
使用QTranslator类,QCoreApplication::installTranslator加载翻译文件,qt带的工具Linguist来制作翻译文件。

出0入0汤圆

发表于 2014-11-3 08:37:27 | 显示全部楼层
本帖最后由 ysu533 于 2014-11-3 08:38 编辑
Vampireyifeng 发表于 2014-11-2 16:00
谢谢,非常感谢,解决了,教程录的很好。话说你是怎么找到方法的呢?我 没有查官方文档。在网上搜都解决 ...


这个一个靠知识的系统性(这个对于大多数人都, 包括我自己都是欠缺的). 另一个就是积累. 同样的一个问题, 大家在网上搜索到的同一个答案. 有的人马上就能解决手中问题, 而且以后相同或相类似的问题都能解决. 有的能解决当前问题, 但是以后碰到相类似问题又不知道怎么解决了.
有的根本就无解. 这个和自身积累(趋向系统性)有关. 不过这个都没关系. 慢慢来碰到的问题都会解决的. 慢慢的也会知其所以然.

还记得自己第一次发布Qt程序, 折腾了一晚上, 最后在别的机子上能够成功运行(公司其它测试机, 一开始只能在自己机子上运行). 结果到客户那, 有运行不了了. 最后不得已在客户的机子上安装了个qt的开发环境. 不过后面也知道到底是为什么了, 出现类似问题怎么解决.

你刚开始就写这么完整的程序. 比我那时候厉害多了.

出0入0汤圆

发表于 2014-11-3 08:47:54 | 显示全部楼层
eye 发表于 2014-11-2 14:00
既然都用了Qt5.3.2,
就直接用库里的标准串口类吧,
QSerialPort,好用多了。

今天才知道QT5.3.2有标准串口类,赶紧装个试试看。

出0入0汤圆

发表于 2014-11-3 09:10:28 | 显示全部楼层
ysu533 发表于 2014-11-3 08:37
这个一个靠知识的系统性(这个对于大多数人都, 包括我自己都是欠缺的). 另一个就是积累. 同样的一个问题,  ...

搞Qt的还挺多的啊

出0入0汤圆

发表于 2014-11-3 09:24:36 | 显示全部楼层
yangwc 发表于 2014-11-3 08:47
今天才知道QT5.3.2有标准串口类,赶紧装个试试看。

这个其实qt4就有了, 其前身就是QtSerialDevice, 在www.qt-apps.org, 有这个项目. 快出qt5的时候(还没有推出时), 作者说要合并进Qt5, 所以以后不会更新了.

其实他和qextserialport是有一定的渊源的. 我觉得如果硬实时性比较高, 要分(断)包的还是自己写合适些.

出0入0汤圆

发表于 2014-11-3 11:22:38 | 显示全部楼层
ysu533 发表于 2014-11-2 14:21
录了两个短视频, 第一次录, 不怎么会用. 结果第一个工程录完, 录第二个工程, 录完,发现第一个工程的视频 ...

ysu533是个热心人啊,谢谢!

顺便问一下楼主,ARM9 240M左右的主频,跑QT4是否合适?会不会比较慢?当然系统对实时性要求不是太高,主要就是串口数据9600bps能及时处理就可以了。

再次感谢哦:)

出0入0汤圆

发表于 2014-11-3 11:28:30 | 显示全部楼层
simonxiao 发表于 2014-11-3 11:22
ysu533是个热心人啊,谢谢!

顺便问一下楼主,ARM9 240M左右的主频,跑QT4是否合适?会不会比较慢?当然 ...

ARM9 没玩过. 我这几年工作主要是软件. PC平台的那种. 嵌入式平台不熟. 但是你的问题, 处理串口数据本身是没有问题的, 如果有问题那是代码写的有问题. 这个是和Qt无关的. 至于Qt的UI能否跑流畅, 没玩过不敢乱说.

出0入0汤圆

 楼主| 发表于 2014-11-3 11:56:24 | 显示全部楼层
ysu533 发表于 2014-11-3 11:28
ARM9 没玩过. 我这几年工作主要是软件. PC平台的那种. 嵌入式平台不熟. 但是你的问题, 处理串口数据本身 ...

arm9如果跑gui的话,跑qt还是不错的,我手上的一块zlg的imx283就被我刷成了qt的,我学qt也是为了 在arm9上运行的。

出0入0汤圆

发表于 2014-11-3 12:40:19 | 显示全部楼层
我也用QserialPort
很好用呢。

出0入0汤圆

发表于 2014-11-3 14:36:11 | 显示全部楼层
Vampireyifeng 发表于 2014-11-3 11:56
arm9如果跑gui的话,跑qt还是不错的,我手上的一块zlg的imx283就被我刷成了qt的,我学qt也是为了 在arm9 ...

恩,楼主你现在的QT5就是跑在i.mx283上的吧。i.mx283的主频过400M,应该是没有问题。我手上的新唐板子最高才200多

出0入0汤圆

发表于 2015-9-25 13:45:07 | 显示全部楼层
都是大神啊
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 17:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表