我是python的新手,但有HID设备和evdev的经验.我有一个2D条形码扫描仪,它作为HID设备接口.目标是从QR码中获取字符串.我能够在Linux中识别扫描仪,甚至在/ dev/input中找到它的位置.
我找到了evdev并用我的扫描仪实现了下面的例子.这只是他们网站上的默认代码.它会读取值,但会打印带有向下和向下的长事件代码.我看不到将其变成字符串的简单方法.我想做的就是用Python中的HID扫描器读取一个字符串.任何帮助或方向将不胜感激(也许evdev不是答案).
这是我当前的python代码,带有一些示例输出:
from evdev import *
dev = InputDevice('/dev/input/event1')
print(dev)
for event in dev.read_loop():
if event.type == ecodes.EV_KEY:
print(categorize(event))
Run Code Online (Sandbox Code Playgroud)
以下是一些条形码的输出:
key event at 1383327570.147000, 2 (KEY_1), down
key event at 1383327570.147990, 2 (KEY_1), up
key event at 1383327570.148997, 3 (KEY_2), down
key event at 1383327570.150010, 3 (KEY_2), up
key event at 1383327570.151009, 29 (KEY_LEFTCTRL), down
key event at 1383327570.151009, 42 (KEY_LEFTSHIFT), down
key event at 1383327570.152017, 36 (KEY_J), down
key event at 1383327570.153005, 36 (KEY_J), up
key event …Run Code Online (Sandbox Code Playgroud) 我正在使用subprocess.Popen()的一个非常基本的设置,并将stdout指向一个变量,我稍后将其返回到我的python脚本的不同部分.
这是我的基本Popen代码:
process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# wait for the process to terminate
out, err = process.communicate()
errcode = process.returncode
print out
Run Code Online (Sandbox Code Playgroud)
这适用于许多类似ls -al或类似的基本用例.但是,我想知道如何处理从更长(或无限期)运行过程中定期和一致地获取输出,例如tail -f foo.log.有没有办法在循环中定期读取stdout?或者产生一个线程来检查并定期返回每个线程?这里最好的方法是什么?
谢谢!
我正在尝试使用他们的MQTT服务器将我的Arduino与以太网连接到Xively但是我在验证时遇到了麻烦.当我这样做时,client.connect("arduinoMQTT")我失败了.我尝试将API密钥作为用户名传递,client.connect("arduinoMQTT", "APIKEY")但代码将无法编译.
如何在arduino上对Xively MQTT服务器进行身份验证.
我正在使用python-mosquitto订阅支持文件类型上传的MQTT代理.从命令行的Mosquitto开始,我可以使用-f标志.但是,我无法弄清楚如何使用client.publish(topic,payload)来指定在我的python脚本中执行时要发布的文件.
Python mosquitto TypeError: payload must be a string, bytearray, int, float or None.在我尝试抛出奇怪的东西时给了我错误.我有一个存储在本地目录中的文件,我想指定它作为发布的有效负载.
我对MQTT很有经验,但我的python非常生疏,我假设我需要在这里做一些类型的文件流功能,但不知道该怎么做.
我想在这里指定图像: mqttc.publish("/v3/device/file", NEED_TO_SPECIFY_HERE)
我试过打开图像:
f = open("/home/pi/mosq/imagecap/imagefile.jpg", "rb")
imagebin = f.read()
mqttc.publish("/v3/device/file", imagebin)
Run Code Online (Sandbox Code Playgroud)
但这没有用,也没有用 mqttc.publish("/v3/device/file", bytearray(open('/tmp/test.png', 'r').read()))
client.publish不会引发错误,但代理无法正确接收该文件.有任何想法吗?
谢谢!!