最近一个项目里面需要用到USB接口条码枪设备。
市面上通用的USB条码枪都是标准USB接口,不需要驱动,USB条码枪得到的数据会向USB键盘一样处理。
通过dmesg命令查看你的linux是否支持条码枪,另外支持的话插入条码枪可以在输入设备中找到他映射的虚拟设备。
通过命令查看你linux里面的设备:cat /proc/bus/input/devices,通过里面的数据分析出你的条码枪中对应的虚拟设备。
然后通过读取/dev/input/event*里面的数据来获取条码枪扫描的数据。
linux系统通过结构体struct input_event存储输入数据,具体数值定义可以在linux头文件linux/input.h中找到
struct input_event {
struct timeval time;
__u16 type;//类型
__u16 code;//代号
__s32 value;//值
};
支持条码枪的demo代码如下
/*
* bacode.c
*
* Created on: 2015-3-3
* Author: hp
*/
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <ctype.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <linux/input.h>
#i