我买了一个能产生数据的设备(测斜仪),我想以一种可读的格式将这些数据附加到我的帖子上。我如何使用python来做这件事?
我有以下脚本:
import binascii
import serial
ser = serial.Serial('COM1', 9600)
s = ser.read()
hex_string = binascii.hexlify(s).decode('utf-8')
print(hex_string)我已经添加了一个关于倾斜仪如何通过COM端口发送数据的示例。

发布于 2019-03-21 19:23:43
由于并非所有信息都用于定制最佳答案,因此进行了一些假设以缩小可能答案的范围。
在这个例子中,假设倾斜仪给出的数据流不仅仅包括x轴和y轴坐标。为此,引入了while循环。还有一个内置的倾斜仪的数据请求暂停,以防止在您运行此python脚本(raspberry-pi?)的目标设备中发生数据泛滥。
也许这个脚本是在多进程模式下使用的?然后,您可能希望包含一个步骤,将当前的x,y坐标与定义的参考值进行比较(不包括,但应该在while循环的末尾)。
import binascii
import serial
import time
set_sloop = 0 # control flag for result
loop_checks = 0 # control flag to prevent data-flooding.
ser = serial.Serial('COM1', 9600)
while set_sloop == 0: # get hex-data from device every 2 seconds (see pause interval)
s = ser.read()
hex_string = binascii.hexlify(s).decode('utf-8')
print(hex_string)
if str(hex_string[0:9]) == '680D008400': # used (x,y) string identifier based on example 0x84.
xh = hex_string[10:13]
yh = hex_string[16:19]
x = '%s.%s' % xh[0:1], xh[2:3]
y = '%s.%s' % yh[0:1], yh[2:3]
xt = 'x = %s deg' % x
yt = 'y = %s deg' % y
print (xt, yt)
set_sloop = 1
loop_checks += 1
if loop_checks == 10:
time.sleep(2) # pause interval: wait 2 seconds before requesting new data.
loop_checks = 0
print ('got inclination: (%s , %s) deg' % x, y)
# ... remaining code to "auto-post inclination" goes here ...注意:考虑到搜索字符串'680D008400‘与示例中的描述不完全一致。缺少一组数字。公司文本中的拼写错误?
https://stackoverflow.com/questions/55243905
复制相似问题