主题:EM335x开发板Linux系统中usb设备自动检测问题

  共有23995人关注过本帖    
帅哥哟,离线,有人找我吗?
fqjboy
1楼 信息 | 搜索 | 邮箱


加好友 发短信
EM335x开发板Linux系统中usb设备自动检测问题  发帖心情 Post By:2016-5-9 16:41:00   [只看该作者]

 我这里有贵公司给的一个小程序,test_hotplug,是用来检测是否有usb设备插入的,如果有就将其挂载到某个目录下。程序里当接收到Linux内核的消息后,会判断这个信息里是否有字符串“sda1”,有的话就挂载;没有的话继续循环;部分代码如下:
          /* Netlink message buffer */
         char buf[UEVENT_BUFFER_SIZE * 2] = {0};
         recv(hotplug_sock, &buf, sizeof(buf), 0);
         //printf("%s\n", buf);
         /* USB 设备的插拔会出现字符信息,通过比较不同的信息确定特定设备的插拔,在这添加比较代码 */
         if( strncmp(buf, "add", 3 )==0 )
         {
                  p = strstr( buf, "sda1");
             if ( (p!=NULL ) && (add1==0) )
             {
                 sleep(1);
                 system( "umount  /mnt/usb1/" );
                 system( "mount -t vfat -o iocharset=cp936 /dev/sda1 /mnt/usb1" );
                 add1 = 1;
             }
             else
             {
                 p = strstr( buf, "sdb1");
  我的问题是当我插上usb后,输出的信息buf中并没有“sda1”的子字符串,但实际情况是程序却进入了第二层if语句中,为什么?

  单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
hzc
2楼 信息 | 搜索 | 邮箱


加好友 发短信 员工
  发帖心情 Post By:2016-5-9 17:42:00   [只看该作者]

你好,进入到判断中说明肯定有这个字符串,查看打印信息可以把屏蔽的printf打开看看buf里面的内容。

  单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
fqjboy
3楼 信息 | 搜索 | 邮箱


加好友 发短信
  发帖心情 Post By:2016-5-10 13:00:00   [只看该作者]

 如何打开屏蔽的printf呢?

  单帖管理 | 引用 | 回复 回到顶部
x10
4楼


  发帖心情 Post By:2016-5-10 13:02:00   [只看该作者]

就是uncomment //。

  单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
fqjboy
5楼 信息 | 搜索 | 邮箱


加好友 发短信
  发帖心情 Post By:2016-5-10 13:10:00   [只看该作者]

 原来是这个意思,其实我贴的这段代码是原版的,我实际用的代码里在第二层的if那有printf("%s\n", buf)的语句。其实我的疑惑就是buf里肯定有sda的字符,但在输出的buf里却看不到

  单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
hzc
6楼 信息 | 搜索 | 邮箱


加好友 发短信 员工
  发帖心情 Post By:2016-5-10 15:04:00   [只看该作者]

你好,我测试了一下,打印信息中有这一句:
add@/devices/soc0/80080000.ahb/80090000.usb/ci_hdrc.1/usb1/1-1/1-1.4/1-1.4:1.0/host1/target1:0:0/1:0:0:0/block/sda

  单帖管理 | 引用 | 回复 回到顶部

返回首页

EM335x开发板Linux系统中usb设备自动检测问题

用户名:
            验证码: 验证码,看不清楚?请点击刷新验证码
内容: