Brecknell 量表的多个可重现错误
Multiple reproducible errors with a Brecknell Scale
我正在使用 python 和 PyUSB 从 USB 秤获取重量。这是我的代码
import sys
import usb.core
import usb.util
from reports import \
ReportFactory, STATUSES, ZERO_WEIGHT, STABLE_WEIGHT, DATA_REPORT
device = usb.core.find(idVendor=0x67b, idProduct=0x2303)
if device is None:
raise ValueError('Device Not Found')
if device.is_kernel_driver_active(0) is True:
device.detach_kernel_driver(0)
usb.util.claim_interface(device, 0)
device.set_configuration()
collected = 0
attempts = 50
while collected < attempts:
ret = device.read(0x2,0x0040)
sret=''.join([chr(x) for x in ret])
print "Return Raw: ",ret
print "Return : ", sret
print ReportFactory.build(ret)
# release the device
usb.util.release_interface(device, 0)
device.attach_kernel_driver(0)
我第一次运行这个程序时出现资源繁忙错误
第二个 运行 我在第 5 个转储上得到操作超时。
之后的 运行 秒会导致立即超时。
这里发生了几件事
为什么我在第一个 运行 时收到资源繁忙错误?我认为 kernel_driver
if 语句应该处理它。
为什么我得到的数据看起来不像 USB 秤应该产生的数据?
- 为什么转储4次数据后超时?每次!
设备信息为
如有任何帮助,我们将不胜感激!
好的,任何正在努力使用 PyUSB 从 GP100 Brecknell 秤获取任何东西的人,请切换到 PySerial。由于这是市场上最便宜的 USB 秤之一,我猜这些信息会对很多人有所帮助。
我通过电子邮件向制造商索取文档,他们向我发送了一些有价值的串行协议信息。
如果您将秤的协议设置为 7010,您可以使用 python 如下所示的代码
import time
import serial
ser = serial.Serial(
port='/dev/ttyUSB0',
baudrate=2400,
bytesize=8,
parity='N',
stopbits=2
)
while 1:
x = ser.read(100)
print(x)
这将流式传输 8 个字节的数据。
第一个字节是状态信息,可以这样解释
- 第 2-4 位
- 第 5-8 位
可以安全地忽略字节 2 和 3。
字节 4-8 有重量信息,用字符 0-9 表示(例如 00023 = 2.3 磅)。该秤的精确度仅为 +- 0.6 磅,不适用于盎司,也许使用相同串行控制器的其他型号使用盎司功能。 PG100没有。
我正在使用 python 和 PyUSB 从 USB 秤获取重量。这是我的代码
import sys
import usb.core
import usb.util
from reports import \
ReportFactory, STATUSES, ZERO_WEIGHT, STABLE_WEIGHT, DATA_REPORT
device = usb.core.find(idVendor=0x67b, idProduct=0x2303)
if device is None:
raise ValueError('Device Not Found')
if device.is_kernel_driver_active(0) is True:
device.detach_kernel_driver(0)
usb.util.claim_interface(device, 0)
device.set_configuration()
collected = 0
attempts = 50
while collected < attempts:
ret = device.read(0x2,0x0040)
sret=''.join([chr(x) for x in ret])
print "Return Raw: ",ret
print "Return : ", sret
print ReportFactory.build(ret)
# release the device
usb.util.release_interface(device, 0)
device.attach_kernel_driver(0)
我第一次运行这个程序时出现资源繁忙错误
第二个 运行 我在第 5 个转储上得到操作超时。
之后的 运行 秒会导致立即超时。
这里发生了几件事
为什么我在第一个 运行 时收到资源繁忙错误?我认为
kernel_driver
if 语句应该处理它。为什么我得到的数据看起来不像 USB 秤应该产生的数据?
- 为什么转储4次数据后超时?每次!
设备信息为
如有任何帮助,我们将不胜感激!
好的,任何正在努力使用 PyUSB 从 GP100 Brecknell 秤获取任何东西的人,请切换到 PySerial。由于这是市场上最便宜的 USB 秤之一,我猜这些信息会对很多人有所帮助。
我通过电子邮件向制造商索取文档,他们向我发送了一些有价值的串行协议信息。
如果您将秤的协议设置为 7010,您可以使用 python 如下所示的代码
import time
import serial
ser = serial.Serial(
port='/dev/ttyUSB0',
baudrate=2400,
bytesize=8,
parity='N',
stopbits=2
)
while 1:
x = ser.read(100)
print(x)
这将流式传输 8 个字节的数据。
第一个字节是状态信息,可以这样解释
- 第 2-4 位
- 第 5-8 位
- 第 2-4 位
可以安全地忽略字节 2 和 3。
字节 4-8 有重量信息,用字符 0-9 表示(例如 00023 = 2.3 磅)。该秤的精确度仅为 +- 0.6 磅,不适用于盎司,也许使用相同串行控制器的其他型号使用盎司功能。 PG100没有。