首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python中将数字测斜仪的串行数据转换为可读格式?

如何在Python中将数字测斜仪的串行数据转换为可读格式?
EN

Stack Overflow用户
提问于 2019-03-19 22:55:14
回答 1查看 85关注 0票数 0

我买了一个能产生数据的设备(测斜仪),我想以一种可读的格式将这些数据附加到我的帖子上。我如何使用python来做这件事?

我有以下脚本:

代码语言:javascript
复制
import binascii
import serial

ser = serial.Serial('COM1', 9600)
s = ser.read()
hex_string = binascii.hexlify(s).decode('utf-8')
print(hex_string)

我已经添加了一个关于倾斜仪如何通过COM端口发送数据的示例。

EN

回答 1

Stack Overflow用户

发布于 2019-03-21 19:23:43

由于并非所有信息都用于定制最佳答案,因此进行了一些假设以缩小可能答案的范围。

在这个例子中,假设倾斜仪给出的数据流不仅仅包括x轴和y轴坐标。为此,引入了while循环。还有一个内置的倾斜仪的数据请求暂停,以防止在您运行此python脚本(raspberry-pi?)的目标设备中发生数据泛滥。

也许这个脚本是在多进程模式下使用的?然后,您可能希望包含一个步骤,将当前的x,y坐标与定义的参考值进行比较(不包括,但应该在while循环的末尾)。

代码语言:javascript
复制
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‘与示例中的描述不完全一致。缺少一组数字。公司文本中的拼写错误?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55243905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档