Qt HID通信上位机界面设计总结

    项目主要是做单片机的BootLoader的升级,单片机和上位机程序通过USB通信传输bin文件进行更新,QT工具主要负责上位机程序的开发。

    主要窗口有两个,为了使用nativeEvent事件监测USB设备的拔插,两个窗口都使用的继承QWidget的类型。

    1、Detect窗口

        程序一运行首先显示的是Detect窗口,这个窗口主要的功能就是使用nativeEvent监听USB设备的拔插,当监测到USB设备的插入,且识别其VID、PID与单片机设置的USB设备ID相同时才可进行更新操作,进入Upgrade窗口。

    2、Upgrade窗口

        进行更新的相关操作,根据选项选择写MCU、读MCU、写SPI Flash或者读SPI Flash,进行写操作时,需要加载提前编译好的.bin文件;进行读操作时,相应的MCU信息和Flash ID会读取到“Receive data”编辑框中。

开发过程中遇到的问题记录:

1、监听事件nativeEvent是基于QWidget类的函数,因此窗口类型的基类应该是QWidget

2、在Detect窗口的构造函数中应该先进行HID设备是否连接的检测(根据VID PID用hid_open进行检测),防止在上位机程序运行之前USB设备已提前插入而检测不到。

3、新建Upgrade窗口应该是在Upgrade BootLoader Button的click槽函数中实现,通过实例化新窗口类实现

4、Load Button加载bin文件时,采用file.readall进行读取文件操作,且应该用QByteArray数组存取读取的二进制文件

5、在调用hid_read和hid_write函数进行HID的读写通信时,InReport和OutReport的第一位应该是硬件设置好的Report ID,如果没有设置则为0,实际读取和写入的数据长度也应该是“data+1位ID”的长度

6、在窗口关闭时可调用CloseEvent函数完成关闭时的一些工作,例如hid_close等

7、TextEdit显示十六进制的操作 参考https://blog.csdn.net/maowendi/article/details/52149272

猜你喜欢

转载自blog.csdn.net/yhl_sophia/article/details/83148353