一个基于Qt调参上位机.
邮箱: [email protected], 欢迎讨论交流.
这个项目是我在闲鱼接的单子, 客户让做一个用于电机控制器的参数调整软件, 并能显示一些曲线. 下面是客户需要的软件界面效果:
客户是做电机驱动开发的, 下位机部分已经做好了, 使用的是STM32F407的单片机, 但是需要设计一个上位机软件, 用于调整其中的一些参数并显示一些曲线.
由于客户要求有图像界面, 考虑到我学过的技术, 所以计划使用Qt来开发. 客户单片机上预留的用于调参的接口是串口, 所以要使用串口来与单片机通信. 如上图, 可以看到界面中大多数使用的都是按钮和文本框, 还有一些显示控件.
为了方便参数的调整, 还需要显示出来一些量的曲线. 这里我使用Qt自带的QChart来绘制曲线.
在做曲线显示部分的时候遇到了一个小bug, 就是曲线显示的效果很奇怪, 有时候显示, 有时候又没有反应. 后来我上网查了好大一会才找到问题所在, 就是由于使用的是Qt封装好的控制串口的接口, 其内部有缓冲区, 而这个缓冲区默认是是满缓冲的(而我没有设置), 所以当缓冲区不满时就不会将数据向上转送, 所以曲线不会有显示, 当缓冲区满了以后才会刷新一次到应用层, 才会有曲线显示.
这也给我提了一个醒, 以后在应用层使用串口, 就一般都会有缓冲区, 而缓冲区有缓冲模式可选: 无缓冲, 行缓冲, 满缓冲. 要学会自己去设置为自己需要的缓冲模式.
由于客户那里没有安装Qt的开发和运行环境, 所以他一定缺少了很多运行时所需的动态库, 所以如果直接把exe发送给客户, 在他的电脑上一定无法运行. 所以要对软件进行打包发布.
首先将编译模式改为release版本, 然后使用Qt自带的打包工具对可执行文件进行打包.
但在这之后还并不能让exe在没有Qt环境的PC上运行, 直接执行exe还会报找不到xxx.dll, 就是各种依赖.
这里我使用Dependencies工具来找到exe执行时需要的动态库, 然后把这些动态库放到exe所在的目录即可.
Dependencies工具在./assets/Dependencies_x64_Release
目录下了, 需要的朋友可以自取!
2023年8月20日23:26:00