如何通过Python HIDAPI为一个廉价的称重传感器秤去皮?
时间:2022-10-03 19:30:00
好消息是厦门便宜ELANE.NET称重传感器在网站上USB上通电进入报告3模式;以克为单位不断显示当前重量。
这是它的数据表:
我可以用标准的pyusb调用阅读。这个样本可以读出刻度。
。。。如果将设备搜索替换为usb.core.find(idVendor=0x7b7c, idProduct=0x301)
(我还滥用sudo操作我的程序,bc我拒绝使用设备权限,sudo树莓派很容易
使用标准的pyusb调用,我可以这样读我的scale的spew:device.read(endpoint.bEndpointAddress, endpoint.wMaxPacketSize)
返回6字节数组:
^{pr2}$
现在,当我试图向秤发送命令时,乐趣开始了。将当前重量归零的命令(zero-weight,也叫皮重 4 2 0 0 0。在
假如我用类似的https://github.com/walac/pyusb/blob/master/docs/tutorial.rst找到这样的示例代码ENDPOINT_OUT ENDPOINT,并使用以下任一行对其进行写操作,不能计算皮重:# ep_out.write('\x07\x04\x02\x00\x00\x00', 6)
ep_out.write([0x07, 0x04, 0x02, 0x00, 0x00, 0x00], 6)
(症状是,我可以在我的称重传感器上放一个负载,使用上述负载.read()线称重,然后去皮,当我再次去皮时.read()时不会得到零。)
我们还没死。我们还没试过HIDAPI。所以我apt-get我一些libusbhid-common,一些cython-dev,一些libusb-dev,我升级了一些{}和一些{}HIDAPI C试着去皮示例代码:handle = hid_open(0x7b7c, 0x301, NULL);
buf[0] = 0x07;
buf[1] = 0x04;
buf[2] = 0x02;
res = hid_write(handle, buf, 3);
那是皮重
复制我在Python成功之一(尽管在C 重写我的应用程序的小层有多诱人!),我拿出了一些cythonhidapi(大概来自git://github.com/signal11/hidapi.git),并升级了它们的try.py示例代码:h = hid.device()
h.open(0x7b7c, 0x301)
print("Manufacturer: %s" % h.get_manufacturer_string())
print("Product: %s" % h.get_product_string())
print("Serial No: %s" % h.get_serial_number_string())
res = h.write([0x07, 0x04, 0x02, 0,0,0])
你猜怎么着?最后一行没有皮重。但是如果我跑三次,皮重!res = h.write([0x07, 0x04, 0x02, 0,0,0])
res = h.write([0x07, 0x04, 0x02, 0,0,0])
res = h.write([0x07, 0x04, 0x02, 0,0,0])
所以,在我写循环之前,反复调用皮重线,直到read在回到零级之前,有人能检查我的数学并给出捷径吗?一个原始的pyusb解决方案也会很有效。