python串口协议

简介: 串口协议案例
importserialimportserial.tools.list_portsclassCommunication():
#初始化def__init__(self,com,bps,timeout):
self.port=comself.bps=bpsself.timeout=timeoutglobalRettry:
# 打开串口,并得到串口对象self.main_engine=serial.Serial(self.port,self.bps,timeout=self.timeout)
# 判断是否打开成功if (self.main_engine.is_open):
Ret=TrueexceptExceptionase:
print("---异常---:", e)
# 打印设备基本信息defPrint_Name(self):
print(self.main_engine.name) #设备名字print(self.main_engine.port)#读或者写端口print(self.main_engine.baudrate)#波特率print(self.main_engine.bytesize)#字节大小print(self.main_engine.parity)#校验位print(self.main_engine.stopbits)#停止位print(self.main_engine.timeout)#读超时设置print(self.main_engine.writeTimeout)#写超时print(self.main_engine.xonxoff)#软件流控print(self.main_engine.rtscts)#软件流控print(self.main_engine.dsrdtr)#硬件流控print(self.main_engine.interCharTimeout)#字符间隔超时#打开串口defOpen_Engine(self):
self.main_engine.open()
#关闭串口defClose_Engine(self):
self.main_engine.close()
print(self.main_engine.is_open)  # 检验串口是否打开# 打印可用串口列表@staticmethoddefPrint_Used_Com():
port_list=list(serial.tools.list_ports.comports())
print(port_list)
#接收指定大小的数据#从串口读size个字节。如果指定超时,则可能在超时后返回较少的字节;如果没有指定超时,则会一直等到收完指定的字节数。defRead_Size(self,size):
returnself.main_engine.read(size=size)
#接收一行数据# 使用readline()时应该注意:打开串口时应该指定超时,否则如果串口没有收到新行,则会一直等待。# 如果没有超时,readline会报异常。defRead_Line(self):
returnself.main_engine.readline()
#发数据defSend_data(self,data):
self.main_engine.write(data)
#更多示例# self.main_engine.write(chr(0x06).encode("utf-8"))  # 十六制发送一个数据# print(self.main_engine.read().hex())  #  # 十六进制的读取读一个字节# print(self.main_engine.read())#读一个字节# print(self.main_engine.read(10).decode("gbk"))#读十个字节# print(self.main_engine.readline().decode("gbk"))#读一行# print(self.main_engine.readlines())#读取多行,返回列表,必须匹配超时(timeout)使用# print(self.main_engine.in_waiting)#获取输入缓冲区的剩余字节数# print(self.main_engine.out_waiting)#获取输出缓冲区的字节数# print(self.main_engine.readall())#读取全部字符。#接收数据#一个整型数据占两个字节#一个字符占一个字节defRecive_data(self,way):
# 循环接收数据,此为死循环,可用线程实现print("开始接收数据:")
whileTrue:
try:
# 一个字节一个字节的接收ifself.main_engine.in_waiting:
if(way==0):
foriinrange(self.main_engine.in_waiting):
print("接收ascii数据:"+str(self.Read_Size(1)))
data1=self.Read_Size(1).hex()#转为十六进制data2=int(data1,16)#转为十进制print("收到数据十六进制:"+data1+"  收到数据十进制:"+str(data2))if(way==1):
#整体接收# data = self.main_engine.read(self.main_engine.in_waiting).decode("utf-8")#方式一data=self.main_engine.read_all()#方式二print("接收ascii数据:", data)exceptExceptionase:
print("异常报错:",e)
Communication.Print_Used_Com()
Ret=False#是否创建成功标志Engine1=Communication("com12",115200,0.5)
if (Ret):
Engine1.Recive_data(0)
目录
相关文章
|
5月前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
【7月更文挑战第31天】在网络数据的海洋中,使用Python的`requests`库构建网络爬虫就像探索未知的航船。HTTP协议指导爬虫与服务器交流,收集信息。HTTP请求包括请求行、头和体,响应则含状态行、头和体。`requests`简化了发送各种HTTP请求的过程。
86 4
|
2月前
|
测试技术 网络安全 数据安全/隐私保护
Paramiko是一个用于处理SSHv2协议的Python库
Paramiko是一个用于处理SSHv2协议的Python库
35 3
|
3月前
|
数据采集 JSON API
🎓Python网络请求新手指南:requests库带你轻松玩转HTTP协议
本文介绍Python网络编程中不可或缺的HTTP协议基础,并以requests库为例,详细讲解如何执行GET与POST请求、处理响应及自定义请求头等操作。通过简洁易懂的代码示例,帮助初学者快速掌握网络爬虫与API开发所需的关键技能。无论是安装配置还是会话管理,requests库均提供了强大而直观的接口,助力读者轻松应对各类网络编程任务。
122 3
|
3月前
|
机器学习/深度学习 JSON API
HTTP协议实战演练场:Python requests库助你成为网络数据抓取大师
在数据驱动的时代,网络数据抓取对于数据分析、机器学习等至关重要。HTTP协议作为互联网通信的基石,其重要性不言而喻。Python的`requests`库凭借简洁的API和强大的功能,成为网络数据抓取的利器。本文将通过实战演练展示如何使用`requests`库进行数据抓取,包括发送GET/POST请求、处理JSON响应及添加自定义请求头等。首先,请确保已安装`requests`库,可通过`pip install requests`进行安装。接下来,我们将逐一介绍如何利用`requests`库探索网络世界,助你成为数据抓取大师。在实践过程中,务必遵守相关法律法规和网站使用条款,做到技术与道德并重。
55 2
|
3月前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
在网络数据的海洋中,网络爬虫遵循HTTP协议,穿梭于互联网各处,收集宝贵信息。本文将从零开始,使用Python的requests库,深入解析HTTP协议,助你构建自己的网络爬虫帝国。首先介绍HTTP协议基础,包括请求与响应结构;然后详细介绍requests库的安装与使用,演示如何发送GET和POST请求并处理响应;最后概述爬虫构建流程及挑战,帮助你逐步掌握核心技术,畅游数据海洋。
73 3
|
3月前
|
数据采集 网络协议 API
HTTP协议大揭秘!Python requests库实战,让网络请求变得简单高效
【9月更文挑战第13天】在数字化时代,互联网成为信息传输的核心平台,HTTP协议作为基石,定义了客户端与服务器间的数据传输规则。直接处理HTTP请求复杂繁琐,但Python的`requests`库提供了一个简洁强大的接口,简化了这一过程。HTTP协议采用请求与响应模式,无状态且结构化设计,使其能灵活处理各种数据交换。
86 8
|
2月前
|
缓存 网络协议 Linux
Python渗透测试之ARP毒化和协议应用
Python渗透测试之ARP毒化和协议应用
36 0
|
3月前
|
Python
HTTP协议不再是迷!Python网络请求实战,带你走进网络世界的奥秘
本文介绍了HTTP协议,它是互联网信息传递的核心。作为客户端与服务器通信的基础,HTTP请求包括请求行、头和体三部分。通过Python的`requests`库,我们可以轻松实现HTTP请求。本文将指导你安装`requests`库,并通过实战示例演示如何发送GET和POST请求。无论你是想获取网页内容还是提交表单数据,都能通过简单的代码实现。希望本文能帮助你在Python网络请求的道路上迈出坚实的一步。
67 0
|
4月前
|
安全 数据库连接 数据库
Python深度解析:上下文协议设计与应用技巧
在Python编程中,资源管理是一个常见且重要的问题。无论是文件操作、网络连接还是数据库事务,都需要确保资源在使用后能够正确地释放或恢复到初始状态。Python通过上下文管理器提供了一种优雅的方式来处理资源的获取与释放,使得代码更加简洁、安全。