各位达人好,现在我想用USB HID来完成电脑对开发板外设的控制。板子是LPC1768的开发板。上位机是qt+win7,用的是github上一个hidapi的库。
现在单独发送HID输出报表和接收HID输入报表都没问题。但问题是我不知道该如何让上位机对板子的控制和板子程序的执行进行同步。就是说,比如我让上位机软件通过输出报表发命令给板子去执行功能A,板子执行完后把反馈信息数据写入端点缓冲区然后让上位机读回输入报表。可是,上位机该如何判断USB设备完成了其功能的执行并有反馈的数据读回呢?上位机该在什么时候向设备发出get inreport的请求?
我使用的usb hid库里有set_non_blocking的函数和hid_read_with_timeout这两个函数。但我搞不清楚什么时候读USB设备会认为是block状态。是不是只要我板子的USB用命令将缓冲区数据清空就是block呢?
现在我是用了端点0和1(芯片手册上说是控制端点),但在HID类报表描述符中将端点1定义为interrupt类型的报表输入端点。(这有错么?)
要实现上面的功能是不是应该使用同步端点?同步端点大概是怎样个用法?我的数据传输量不大,一次就32个字节的数据量。 |