Qt
这个搞嵌入式的,应该到一定程度,就会接触到了,其实就是一个UI+交互的开发软件。我们可以使用Qt来开发安卓,linux,mac等多个平台的软件,尤其是使用PyQt,这个跨平台能力更加夸张,可以一套代码,随意打包成不同平台的可执行软件。
嵌入式平台
我们可以选择在linux或者win等系统上面进行Qt软件的开发,然后通过提供的qmake+交叉编译链,实现对设备的,触摸屏+显示屏的控制,此时就可以实现交互,这种软件,一般都是固定大小的,也不需要缩放,进行点击和操作就行了,帧率也不高。说到底,大小不变,也不用兼容多个设备,只要自己这个屏幕可以健康使用就好了。本质上就是一个linux软件开发,只要设备驱动存在,就没啥问题的。
而且,现在qt都是mcu版本的了,其实也是一样的,就是留个接口,开发人员自己写一个屏幕驱动加进去而已。
上位机
上位机,就可能要玩的花一点了,难一点了咯,要考虑的也更多,不过上位机更多是串口、usb、网络调试等通信接口。
比如隐藏标题栏自定义一个标题栏,注意了隐藏标题栏会导致原本的鼠标缩放功能缺少,需要重新编写鼠标事件才能实现鼠标的拖动缩放。
而且要注意一点就是,控件都是像素大小,而不是屏幕实际大小,但是字体是实际大小,所以,在这个电脑上是正常显示的,但是换一个电脑,换一个屏幕缩放比,甚至只是一个副屏都可能直接出现异常,比如字体现实不全,字体覆盖,字体重叠等诸多问题。开发的时候,要注意时不时的获取一下当前屏幕的像素,重新刷新控件位置和触点、图画等。
有的时候,可能需要手动等比例缩放,可以选择布局,也可以自己根据情况和需求进行修改,果然还是固定大小好啊,不过就算固定代下,也会收到我的分辨率和缩放影响,比我的华为电脑3k 14寸 200%的缩放是异常的,但是公司1080p 24寸 100%缩放是正常的,主要还是因为字体问题,字体大小是实际物理的、是自动跟随系统的,而不是像素大小。
其次就是打包实现跨平台问题,这个是PyQt才能实现的,如果使用C++的打包是非常麻烦的,但是python的打包就非常轻松,不过python开发qt是我非常不看好的,还是c++万岁,虽然确实快。
总结
其实,都是使用控件,然后进行编译,来生成对应平台可执行文件,也都是调用现有的设备,不参与驱动设计,而是纯应用层开发。不过嵌入式软件,一般都是简单,而且屏幕的大小和触摸交互点的位置、大小等固定的,而我们开发的上位机是要兼容多平台,多屏幕,多设备的,交互其实是不难的,而是多多利用状态返回来判断设备和释放设备。