1 2 | 受不了xxxx恶心人的行为,遂搬迁至博客园。 始发: 2015 - 01 - 24 11 : 58 : 18 |
环境配置:
- 主机:XP
- QT:5.4.0
1、在Qt中使用串口,我们需要一个第三方的串口类:qextserialport。在其qextserialbase.h文件中,提供了如下常用的波特率:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | enum BaudRateType { BAUD50, //POSIX ONLY BAUD75, //POSIX ONLY BAUD110, BAUD134, //POSIX ONLY BAUD150, //POSIX ONLY BAUD200, //POSIX ONLY BAUD300, BAUD600, BAUD1200, BAUD1800, //POSIX ONLY BAUD2400, BAUD4800, BAUD9600, BAUD14400, //WINDOWS ONLY BAUD19200, BAUD38400, BAUD56000, //WINDOWS ONLY BAUD57600, BAUD76800, //POSIX ONLY BAUD115200, BAUD128000, //WINDOWS ONLY BAUD256000 //WINDOWS ONLY }; |
2、其实要做的简单来说就是添加一种我们需要的波特率,不需要特别的知识,考虑下从应用层到OS层再到硬件寄存器层串口的实现流程,我们只要按照这个流程,添加相应的数据—宏定义/枚举值即可。
3、那么,动手吧。以921600bps为例。
1)在Qt编程时,设置串口波特率调用BaudRateType里的枚举值,那么就在BaudRateType中添加921600的枚举值:
1 2 3 4 5 | enum BaudRateType { ...... BAUD921600 } |
2)BAUD921600底层的调用在win_qextserialport.cpp文件的void Win_QextSerialPort::setBaudRate(BaudRateType baudRate)中,那么我们就添加其对应的case语句:
1 2 3 4 5 6 7 8 9 | void Win_QextSerialPort::setBaudRate(BaudRateType baudRate) { ...... /* 921600 baud */ case BAUD921600: TTY_PORTABILITY_WARNING( "Win_QextSerialPort Portability Warning: POSIX does not support 921600 baud operation." ); Win_CommConfig.dcb.BaudRate=CBR_921600; break ; } |
3)现在,我们需要找到CBR_921600的底层调用,它在Qt安装目录C:\Qt\Qt5.4.0\Tools\mingw491_32\i686-w64-mingw32\include下面的winbase.h文件中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | C:\Qt\Qt5.4.0\Tools\mingw491_32\i686-w64-mingw32\include\winbase.h: #define CBR_110 110 #define CBR_300 300 #define CBR_600 600 #define CBR_1200 1200 #define CBR_2400 2400 #define CBR_4800 4800 #define CBR_9600 9600 #define CBR_14400 14400 #define CBR_19200 19200 #define CBR_38400 38400 #define CBR_56000 56000 #define CBR_57600 57600 #define CBR_115200 115200 #define CBR_128000 128000 #define CBR_256000 256000 #define CBR_460800 460800 #define CBR_921600 921600 |
我们只需要添加自己需要的波特率对应的CBR_921600即可。
4)大功告成
但是还未完。速率越高,电磁干扰越大,所以这么高的波特率下需要高质量的线材、硬件支撑,而且越短越好,而且PCB板上接口尽量做到强的抗干扰性。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2019-06-16 socket编程实战-bind端口占用问题
2019-06-16 socket编程实战-tcp_tw_recycle问题
2019-06-16 socket编程实战-connect超时问题