Python读取串口数据的实现方法

 更新时间:2024年02月29日 15:45:00   作者:怎么才能看名字  
本文主要介绍了Python读取串口数据的实现方法,可以使用pySerial库来读取串口数据,具有一定的参考价值,感兴趣的可以了解一下

1.编程流程

串口数据流程为,

1.实例化串口连接,
2.初始化设置连接属性,
3.连接串口硬件,
4.读取传输缓存区的串口数据。

使用Python的serial库进行读写串口数据。

pip3 install serial

技巧:重复运行上述pip指令,可输出当前serial依赖库的存放位置。

参考教程:https://www.jb51.net/article/170801.htm.

2.应用serial库

分析1中功能流程,进行如下汇总:

  • 串口连接配置1:实例化串口连接
  • 串口连接配置2:配置串口参数,并连接串口
  • 串口连接配置3:读取串口数据
  • 加上功能:核验接收数据

3.编码设计

将上面的功能,进行如下进行设计:

  • 串口参数配置设为变量,初始化串口连接时进行调用
  • 读取串口数据,写入文件
  • 判断:串口数据数据格式,每包数据长度

4.编程实现

编写函数,实现读取串口操作

def msg_list():
	# 新建一个列表,返回该串口数据,做后续数据处理使用
	msg_list = list()
	# 准备一个文件,保存数据
	r = r'E:\py\0.txt'
	write_file = open(r, 'wb')
	# 配置串口名称、比特率、超时时间
	port = 'COM3'
	bps = 1152000
	timex = 1
	# 连接串口
	ser = serial.Serial(port, bps, timeout=timex)
	print(ser)
	# 等下时间,去启动串口发送程序。不然,程序会直接进入判断串口数据直接结束
	time.sleep(3)
	# 进入读写过程
	while True:
		# 判断当前写入区有没有串口数据
		if ser.in_waiting:
			# 读数据
			msg = ser.readall()
			# 写入数据到文件里
			write_file.write(msg)
			# 将数据转成16进制数,存入列表中
			msg_list = list(msg.hex)
		else:
			# 当串口写入缓存区没数据,关闭串口和文件,结束读写操作
			ser.close()
			write_file.close()
			break
	# 保存的串口数据列表做这次函数的返回值
	return msg_list

有了一组串口数据,后续就可以自定义发挥了。

if __name__ == '__main__':
	a = msg_list()
	# 由于我的发串口程序是发16进制的固定长度为160的数据包,所以进行按固定长度分割列表。列表里的索引就为每一个数据包的次序。
	# 补充,串口配置默认是按每8bit位读取(可配置),所以在数据里,一包总长度为160 * 2 = 320
	a1 = [a[i:i+162*2]] for i in range(0, len(items), 162*2)
	# 判断下,每帧串口数据头是否正确
	# 由于缓存区存在内存大小限制。预估在结尾容易发生丢包,所以加个长度判断
	for i in range(0, len(a1)):
		if a1[i][0:4] = ['a', 'b', 'c', 'd'] and len(a[i]) == 160*2:
			pass
		else:
			# 输出第一次不正确的上下行数据
			print('到了', i)
			print(a1[i-1])
			print(a1[i])
			break

到此这篇关于Python读取串口数据的实现方法的文章就介绍到这了,更多相关Python读取串口数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • python矩阵的转置和逆转实例

    python矩阵的转置和逆转实例

    今天小编就为大家分享一篇python矩阵的转置和逆转实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • 使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例

    使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例

    这篇文章主要介绍了使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • 浅析Python中的套接字编程

    浅析Python中的套接字编程

    不可否认,互联网已成为“存在之魂”,其活动以“连接”或“网络”为特征。使用套接字的最关键的基础之一,使这些网络成为可能。本文涵盖了有关使用Python进行套接字编程的所有领域。套接字可以帮助您建立这些连接,而Python无疑可以简化连接
    2021-06-06
  • 浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器

    浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器

    这篇文章主要介绍了Python中的可迭代对象、迭代器、For循环工作机制、生成器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Python3基于plotly模块保存图片表格

    Python3基于plotly模块保存图片表格

    这篇文章主要介绍了Python3基于plotly模块保存图片表格,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • python字典遍历数据的具体做法

    python字典遍历数据的具体做法

    在本篇文章里小编给大家整理了一篇关于python字典遍历数据的具体做法及相关代码,有需要的朋友们可以跟着学习下。
    2021-07-07
  • 利用python对月饼数据进行可视化(看看哪家最划算)

    利用python对月饼数据进行可视化(看看哪家最划算)

    通过python对数据进行可视化展示,可直观地展示数据之间的关系,为用户提供更多的信息,这篇文章主要给大家介绍了关于利用python对月饼数据进行可视化的相关资料,看看哪家最划算,需要的朋友可以参考下
    2022-09-09
  • 教你如何利用Python批量翻译英文Word文档并保留格式

    教你如何利用Python批量翻译英文Word文档并保留格式

    本文将给大家分享一个实用的Python办公自动化脚本 利用Python批量翻译英文Word文档并保留格式,最终效果甚至比部分收费的软件还要好!文中有非常详细的代码示例.需要的朋友可以参考下
    2021-05-05
  • Python 实现二叉查找树的示例代码

    Python 实现二叉查找树的示例代码

    这篇文章主要介绍了Python 实现二叉查找树的示例代码,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • python整小时 整天时间戳获取算法示例

    python整小时 整天时间戳获取算法示例

    今天小编就为大家分享一篇python整小时 整天时间戳获取算法示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02

最新评论