「调试」使用python与单片机进行通信

liftword4个月前 (03-09)技术文章27

调试说明:

环境:usb转ttl线一根,通信协议一份,STC系列单片机一个,电脑一台。功能:使用python发送16进制数据转换成字节流数据发给单片机,单片机返回16进制数据后转10进制(本次测试是获取单片机的版本号)使用场景:可读取rs232、rs485数据,韦根数据、开关量信号等

代码:

import serial
import binascii,time
import codecs

def comTest(send_Adata,COM,BPS):
    try:
        # 配置串口基本参数并建立通信
        ser = serial.Serial(port=COM,baudrate= BPS,bytesize= 8, timeout=50,stopbits=1)

        print ('发送数据:',send_Adata)

        # 简单的发送16进制字符
        # ser.write(b'\xFE\xFE\xFE')
        send_Bdata=bytes.fromhex(send_Adata)

        print ('字节流发送数据:',send_Bdata)

        # 串口发送数据
        result=ser.write(send_Bdata)

        # 停止、等待数据
        time.sleep(1)
        count=ser.inWaiting()

        if count == 0:
            print('没有响应传回')
            print('等待......')


        # 数据的接收
        if count>0:
            data=ser.read(count)
            print ('字节流接收数据:',data)
            if data!=b'':

                str_hex = str(binascii.b2a_hex(data))[2:-1]
                print("接收数据:",str_hex)

                
                result_str = codecs.decode(str_hex[12:].encode('utf-8'), "hex").decode('utf-8')
                
                print ("%s转换成10进制数据:%s"%(str_hex[12:],result_str))

        #ser.flushInput() #清除缓存区数据。

        # 关闭串口
        ser.close()
    except Exception as e:
        print ('运行异常',e)
if __name__ == "__main__":

    send_Adata ='自己的通行协议'

    COM = "COM3"

    BPS = 9600

    comTest(send_Adata,COM,BPS)


执行:


使用python测试结果:



使用串口工具测试结果:

相关文章

Python实现整数的进制转换

任务要求将十进制整数分别转换为二进制、八进制和十六进制,并将结果在控制台打印输出。任务分析Python提供了bin()、oct()、hex()等内置函数直接完成进制转换,但输出结果包含前缀(如0b)。...

Python中的进制转换函数详解

左手编程,右手年华。大家好,我是一点,关注我,带你走入编程的世界。公众号:一点sir,关注领取python编程资料在编程中,经常需要在不同的进制之间转换数值,尤其是二进制、八进制、十进制和十六进制。P...

Python 趣味编程:我的压岁钱

题目压岁钱又名压祟钱。是除夕吃完年夜饭,由长辈将事前准备好的钱分给晚辈,是过年习俗之一。今年除夕页面,小明收到了妈妈的 600 元,爸爸的 800 元,奶奶的 800 元,爷爷的 1000 元,姥姥的...

跟我学Python(26)——Python中的数据类型转换

上篇文章小编已经给大家介绍了Python中基本数据类型的布尔类型,这篇文章小编将跟大家分享一下Python中数据类型如何转换。Python是动态类型的语言(也称为弱类型语言)所以是可以进行数据类型转换...

通过篡改cred结构体实现提权利用

前言作者利用任意地址读写分别改写modprobe_path以及cred结构体去实现提权的操作,由于改写modprobe_path的方法之前已经研究过了,因此现在详细记录一下如何修改cred结构体完成提...

python字符串格式化指南

在 Python 中,字符串格式化是一种常见且重要的操作,用于将变量或值插入到字符串中,并控制输出的格式。本文将介绍几种常见的字符串格式化方法,帮助大家掌握在 Python 中有效地处理字符串的技巧。...