linux系统中条码如何识别的,如何(可靠地)在嵌入式(无头)Linux中读取USB条形码扫描仪?...
对于处于同样困境的人来说:
我找不到一个纯Python工作的解决方案。在
我求助于一个非常简单的“C”程序(大部分是表):#include
#include
#include
#include
#include
#include
void INThandler() {
exit(0);
}
char ttab[] = {
0, 27, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', '\b', /* Backspace */
'\t', 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']','\n', /* Enter key */
0, 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';','\'', '`', 0, /* Left shift */
'\\', 'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/', 0, /* Right shift */
'*',
0, /* Alt */
' ', /* Space bar */
0, /* Caps lock */
0, /* 59 - F1 key ... > */
0, 0, 0, 0, 0, 0, 0, 0,
0, /* < ... F10 */
0, /* 69 - Num lock*/
0, /* Scroll Lock */
0, /* Home key */
0, /* Up Arrow */
0, /* Page Up */
'-',
0, /* Left Arrow */
0,
0, /* Right Arrow */
'+',
0, /* 79 - End key*/
0, /* Down Arrow */
0, /* Page Down */
0, /* Insert Key */
0, /* Delete Key */
0, 0, 0,
0, /* F11 Key */
0, /* F12 Key */
0, /* All other keys are undefined */
};
char ntab[] = {
0, 27, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', '\b', /* Backspace */
'\t', 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']','\n', /* Enter key */
0, 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';','\'', '`', 0, /* Left shift */
'\\', 'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/', 0, /* Right shift */
'*',
0, /* Alt */
' ', /* Space bar */
0, /* Caps lock */
0, /* 59 - F1 key ... > */
0, 0, 0, 0, 0, 0, 0, 0,
0, /* < ... F10 */
0, /* 69 - Num lock*/
0, /* Scroll Lock */
0, /* Home key */
0, /* Up Arrow */
0, /* Page Up */
'-',
0, /* Left Arrow */
0,
0, /* Right Arrow */
'+',
0, /* 79 - End key*/
0, /* Down Arrow */
0, /* Page Down */
0, /* Insert Key */
0, /* Delete Key */
0, 0, 0,
0, /* F11 Key */
0, /* F12 Key */
0, /* All other keys are undefined */
};
char stab[] = {
0, 27, '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', 0, /* Backspace */
0, 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '{', '}', 0, /* Enter key */
0, 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', ':', '"', 0,'\n', /* Left shift */
0, 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '', '?', 0, /* Right shift */
'*',
0, /* Alt */
' ', /* Space bar */
0, /* Caps lock */
0, /* 59 - F1 key ... > */
0, 0, 0, 0, 0, 0, 0, 0,
0, /* < ... F10 */
0, /* 69 - Num lock*/
0, /* Scroll Lock */
0, /* Home key */
0, /* Up Arrow */
0, /* Page Up */
'-',
0, /* Left Arrow */
0,
0, /* Right Arrow */
'+',
0, /* 79 - End key*/
0, /* Down Arrow */
0, /* Page Down */
0, /* Insert Key */
0, /* Delete Key */
0, 0, 0,
0, /* F11 Key */
0, /* F12 Key */
0, /* All other keys are undefined */
};
int main() {
char devname[] = "/dev/input/event0";
int device = open(devname, O_RDONLY);
struct input_event ev;
int shift = 0;
char line[4096], *p = line;
signal(SIGINT, INThandler);
fputs("starting\n", stdout);
//fputs("starting\n", stderr);
while (1) {
read(device, &ev, sizeof(ev));
if (ev.type == 1) {
if (ev.code == 42)
shift = ev.value;
else if (ev.value) {
//printf("Key: %i State: %i\n", ev.code, ev.value);
char *t = shift? stab: ntab;
char ch = t[ev.code];
//printf("Key: %02d State: %d [%c]\n", ev.code, ev.value, ch);
if (ch == '\n') {
*p = '\0';
fputs(line, stdout); fputc('\n', stdout); fflush(stdout);
//fputs(line, stderr); fputc('\n', stderr); fflush(stderr);
p = line;
} else
*p++ = ch;
}
}
}
}
。。。从Python驱动:
^{pr2}$
我相信Python驱动程序可以简化。这是我(工作)申请表中的逐字记录。在
嗨!在
linux系统中条码如何识别的,如何(可靠地)在嵌入式(无头)Linux中读取USB条形码扫描仪?...相关推荐
- Linux系统下基于IO多路复用的大规模可靠UDP服务器的实现(三)
七.可靠性UDP的优化细节 4.5章节中,我们提到了KCP本身的优化提高,由于可靠性UDP是这个方案是否优秀的关键,而各种可靠UDP协议中都有TCP算法的影子,所以下面我们再仔细的谈一下这个部分.按照 ...
- linux系统python截图不显示中文_Linux运维知识之解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题...
本文主要向大家介绍了Linux运维知识之解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题,通过具体的内容向大家展现,希望对大家学习Linux运维知 ...
- e5运行Linux系统,CPU-Z 1.96更新介绍,可用Wine及deepin-wine5在Linux中运行
CPU-Z 1.96 发布了,提供 cpu-z_1.96-cn.zip 包下载,这款软件能用 Wine 或 deepin-wine5 在 Linux 操作系统中运行.当然,Linux 用户也可以改用 ...
- Linux系统的基本使用指南(速成,帮助快速上手使用Linux系统)
Linux 一.Linux背景知识 1.什么是linux Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次 ...
- linux系统需要备份吗,准备好了吗?请备份你的Linux系统
一.我们需要备份什么? 我的 Linux 系统是基于 Redhat 的Redhat Linux 9.0,同时配置了诸如 MySQL.PHP.Apache 等基础服务,同时又配有 Awstats.MRT ...
- linux系统运行application,[分享]分享曾经做过的一个嵌入式系统application框架 | 勤奋的小青蛙...
=================第一天================ 前言: 本文只是分享下自己曾经开发过的一个嵌入式Linux+Qt的系统应用层开发框架,只是分享出来,算不上什么高深的东西,希望 ...
- linux系统32和64的区别,32位和64位的Linux系统区别
区别之一:当初设计的定位不同 64位操作系统的设计定位是:满足机械设计和分析.三维动画.视频编辑和创作,以及科学计算和高性能计算应用程序等领域,这些应用领域的共同特点就是需要有大量的系统内存和浮点性能 ...
- linux怎么用命令打开wine,Linux系统运维:10分钟教你如何使用Wine在Linux下玩魔兽世界...
本文主要向大家介绍了Linux系统运维的如何使用Wine在Linux下玩魔兽世界,通过具体的步骤向大家展现,希望对大家学习Linux系统运维有所帮助. 目标:在 Linux 中运行魔兽世界 发行版:适 ...
- linux有趣程序视频,Linux系统下也玩视频编辑 10个非常流行的免费Linux视频软件
为了满足广大Linux爱好者的需要,我们为大家搜罗基于Linux操作系统的优秀应用软件.首先,让我们一起来认识一些面向Ubuntu Linux的免费的视频编辑工具. PiTiVi是一个使用Python ...
最新文章
- 每天2亿美元投入AI领域,1/10砸向自动驾驶,中国AI论文首超全欧洲 | 斯坦福全球AI年度报告...
- HTML5实例教程:OL标签的start属性和reversed属性
- [翻译]IE8下VML的变化
- Android记录24-WebView实现白天/夜间阅读模式
- s:iterator标签的使用
- Python operator.lt()函数与示例
- ONAP如何将Open-O和ECOMP数百万行代码合并?
- red hat 查看mysql密码_Red Hat 下 MySQL root密码恢复
- 简单学习Infopath
- 机器学习基石1 学习笔记
- CF1027D Mouse Hunt(topo总结)
- 如何给Mac挑选外接显示器?苹果外接显示器选购指南
- 接口测试平台代码实现2:本平台项目目录解析
- 查看oracle数据库(database)的版本命令
- psid mysql_mysql存储过程
- 手把手教你python实现校园网自动连接,零基础也可以轻松实现
- 51信用卡清退P2P业务,大量资金逾期!投资人或难保本金
- thinkphp5 配置多个数据库
- apue学习第九天——标准I/O库(第五章)
- Python初学者必会的3款代码编辑器