qt程序中hid问题记录

本文记录了在嵌入式系统中处理HID设备的挑战,包括如何选择正确的设备打开方式,以及解决HID设备数据接收后导致的界面跳转问题。通过修改读取循环和设置界面焦点,避免了程序阻塞和不必要的界面切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:嵌入式下打开一个设备最好想好是那种方式打开(只读方式,读写方式,阻塞\非阻塞方式)。

有一个项目,用到一个串口,两个hid方式的usb口,大体代码如下

    FD_ZERO(&rd);
    FD_SET(cd_fd, &rd);
    printf("set cd fd\n");
    FD_SET(rf_fd, &rd);
        printf("set rf fd\n");
    FD_SET(button_fd,&rd);
        printf("set button fd\n");
    FD_SET(tl_fd,&rd);
    //FD_SET(usbRf_fd,&rd);
    printf("set usbrf fd\n");
    max_fd=((cd_fd>rf_fd)?cd_fd:rf_fd);
    //max_fd=((max_fd>usbRf_fd)?max_fd:usbRf_fd);
    max_fd=((max_fd>tl_fd)?max_fd:tl_fd);
    max_fd=(button_fd>max_fd)?button_fd:max_fd;
    printf("wait for serial\n");
    while(1)
    {
        //if(select(max_fd+1, &rd, NULL,NULL,&tv)<0)
        if(select(max_fd+1, &rd, NULL,NULL,NULL)<0)
        {
            perror("select fail ");
        }
        else
        {
            if(FD_ISSET(cd_fd, &rd))
            {
                //do
                        //{

                            nBytes = read(cd_fd, (char *) &ev, sizeof(struct input_event));
                            printf("---nBytes=%d----\n",nBytes);
                            if (nBytes > 0)
                            {
                                if (ev.type == 1)
                                {
                                //按键值
                                    if (ev.value == 0)
                                    {
                                        //放开的按键值
                             

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值