文名 2023-03-28 08:35 采纳率: 60%
浏览 35
已结题

python从串口接收到数据后解析

python从串口接收到数据后解析
python从串口接收数据,数据长度固定
数据示例如下02 24 30 20 30 30 31 31 32 39 30 30 30 30 31 30 0D
接收到的是16进制ascii码
请问如何将粗体部分的数据解析成一个数。(接收到数据的第11位到第16位)
30 30 30 30 31 30
分别对应0-0-0-0-1-0,分别对应十万,万,千,百,十,个
解析到的就是10
目前代码如下
用chr转换data[10],直接转换失败。求解

import serial
from time import sleep

def recv(serial):
    while True:
        data = serial.read_all().decode()  # str
        if data == '':
            continue
        else:
            break
        sleep(2.1)
    return data

if __name__ == '__main__':
    serial = serial.Serial('COM19', 9600, timeout=10)
    if serial.isOpen():
        print("serial open success")
    else:
        print("serial open failed")
    while True:
        data = recv(serial)
        print(data)  # str

展开全部

  • 写回答

2条回答 默认 最新

  • apples_kk 2023-03-28 09:25
    关注
    16进制的ascii转换成10进制数字可以使用python的内置函数 int(x, 16) x为16进制的ascii字符,16表示16进制,返回10进制数字。示例: int('30',16) 返回48 所以上面的可以写成如下代码: data="02 24 30 20 30 30 31 31 32 39 30 30 30 30 31 30 0D" first_num = data[10:12] # "30" second_num = data[12:14] # "30" third_num = data[14:16] # "30" fourth_num = data[16:18] # "30" fifth_num = data[18:20] # "31" sixth_num = data[20:22] # "30" num=int(first_num, 16)*100000+int(second_num, 16)*10000+int(third_num, 16)*1000+ int(fourth_num, 16)*100+int(fifth_num, 16)*10+int(sixth_num, 16) num=int(num) print(num) # 10
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    文名 2023-03-30 03:01

    一定是我打开方式不对。int(x,16)时候报错了

    回复
    文名 2023-03-31 07:59

    空格也占了位置。

    回复
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 4月7日
  • 已采纳回答 3月31日
  • 修改了问题 3月28日
  • 创建了问题 3月28日

悬赏问题

  • ¥15 传人记程序做的plc 485从机程序该如何写
  • ¥15 已知手指抓握过程中掌指关节、手指各关节和指尖每一帧的坐标,用贝塞尔曲线可以拟合手指抓握的运动轨迹吗?
  • ¥50 libwebsockets 如何添加其他socket事件回调
  • ¥50 实现画布拖拽算子排布,通过flink实现算子编排计算,请提供思路
  • ¥15 esium自定义材质拉伸问题
  • ¥15 cmake+mingw使用<mysqlx/xdevapi.h>报错
  • ¥15 eNSP中防火墙的使用
  • ¥15 关于#mlnet#的问题:mlnet相关请求(语言-c#)
  • ¥15 lvgl7.11怎么做出文字被选中的效果
  • ¥50 如何快速查看手机目标app的主要服务器ip
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部