小编cal*_*umb的帖子

如何使用evdev从Python中获取HID设备的字符串?

我是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)

python hid

6
推荐指数
2
解决办法
8960
查看次数

如何使用子进程和Popen从长时间运行的进程返回stdout?

我正在使用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?或者产生一个线程来检查并定期返回每个线程?这里最好的方法是什么?

谢谢!

python shell subprocess stdout

5
推荐指数
1
解决办法
2628
查看次数

如何在Arduino中使用Xively MQTT服务器?

我正在尝试使用他们的MQTT服务器将我的Arduino与以太网连接到Xively但是我在验证时遇到了麻烦.当我这样做时,client.connect("arduinoMQTT")我失败了.我尝试将API密钥作为用户名传递,client.connect("arduinoMQTT", "APIKEY")但代码将无法编译.

如何在arduino上对Xively MQTT服务器进行身份验证.

arduino mqtt xively

4
推荐指数
1
解决办法
810
查看次数

如何在python中使用Mosquitto发布文件?

我正在使用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不会引发错误,但代理无法正确接收该文件.有任何想法吗?

谢谢!!

python mqtt

4
推荐指数
2
解决办法
2万
查看次数

标签 统计

python ×3

mqtt ×2

arduino ×1

hid ×1

shell ×1

stdout ×1

subprocess ×1

xively ×1