python串口接收函数,python操作串口

1-python库之-serial串口操作

python里面使用serial库来操作串口,serial的使用流程跟平常的类似,也是打开、关闭、读、写

我们提供的服务有:成都网站制作、网站建设、微信公众号开发、网站优化、网站认证、察哈尔右翼后ssl等。为成百上千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的察哈尔右翼后网站制作公司

一般就是设置端口,波特率。

使用serial.Serial创建实体的时候会去打开串口,之后可以使用is_open开判断下是否串口是否打开正常。

使用ser.close即可关闭串口

数据的写使用ser.write接口,如果写的是十六进制的数据使用bytearray来定义,如 writebuf = bytearray([0x55, 0xaa, 0x00, 0x01, 0x00, 0x00])

读数据使用ser.read接口,一般会先使用in_waiting来判断下是否有数据,然后开始读

下面举一个例子,说明下我们在实际的使用情况。

一般会单独创建一个进程来作为数据的接收,然后再配合上标记位或者信号量来处理逻辑

串口发送16进制1234,用python接收的是'\x01\x01\x03\x04'但用python再怎么转换成原来的数据1234呢?

1、首先要引用Python的第三方库:serial,打开pycharm。

2、点击file,里面有一个setting。进入setting后点击“progect”下的Project Interpreter,如图。

3、然后在页面中,点击右边的加号,如图。

4、然后在左上角的搜索框搜索pyserial并选中pyserial,如图。

5、最后点击Install Package,然后等上一会就好了。

如何用python写个串口通信的程序

使用 pyserial 就可以处理串口通信,这个包是跨平台的。

示例程序在这里:

import serial

# 创建serial实例

serialport = serial.Serial()

serialport.port = 'COM1'

serialport.baudrate = 9600

serialport.parity = 'N'

serialport.bytesize = 8

serialport.stopbits = 1

serialport.timeout = 0.6

try:

serialport.open()

serialport.setDTR(True)

serialport.setRTS(True)

except Exception, ex:

print ex

# 发送数据

serialport.write(raw_data)

# 根据项目要求,可以开一个线程扫描接收数据

python对串口蓝牙模块的操作

python提供了丰富的module 对串口的操作同样有对应的module:serial

环境:python3.5 蓝牙模块:HC-05 波特率38400

首先导入serial模块(通过pip install serial 安装)

获取串口ser 通过serial.Serial(地址,波特率,超时时间)

创建线程监听串口数据

使用 ser.in_waiting() 获知数据量 这个函数返回当前串口收到的数据长度

收取数据后进行详细操作

串口发送16进制1234,用python接收的是'\x01\x01\x03\x04'但用python再怎么转换成原来的数据1234呢

假设你接收到的'\x01\x02\x03\x04'储存在a变量中,

你想要转换为1234储存在b变量中,那么可以参考进行如下操作:

a='\x01\x02\x03\x04'

b=''

for i in s:

b=b + str(ord(i))

b

'1234'

b = int(b) #如果要将b转为数值变量,则使用int()

b。

扩展资料:

十六进制的转换

数学的计算方法

主条目:进制转换

十进制转十六进制

采余数定理分解,例如将487710转成十六进制:

4877÷16=304....13(D)

304÷16=19....0

19÷16=1....3

1÷16=0....1

这样就计到487710=130D16

编程中的函式

Visual Basic

十六进制转换为十进制:十进制(Long型)=CLng("H" 十六进制数(String型))

十进制转换为十六进制:十六进制数(String型)=Hex$(十进制)

Javascript

Javascript 能以 toString() 函数来将十进制数字转为其他任意进制格式(String类型)

Python

调用Python内置int()函数把该字串转为数字。

参考资料来源:百度百科—十六进制的转换

如何用python实现串口通信

Python非常适合写一些测试的脚本,如快速的串口通信测试等。如果使用VC++ QT开发,可能用时较多,使用python,如果掌握使用方法,可以直接读写测试,配合设备或是串口助手,很快验证与实现。

Python有没有现成的串口API直接调用呢?经过实践验证,需要安装一个叫 Pyserial的组件即可。这个可以在github上下载。

在windows 7 64bit 上可以使用吗?当然可以使用,我安装的python3.5为64位的。把下载后的文件,其中有一个serial的文件夹,拷贝到python35安装路径, C:\Python35\Lib\site-packages\serial

网上可以搜一下windows的安装包,安装完也是:C:\Python35\Lib\site-packages\serial ,可以用最新的版本,替换即可。

测试的方法:在python IDE里测试:

import serial

这里如果报错,是python版本与pyserial版本没有配合好。如果正常,不返回,即可以导入serial模块。

ser=serial.Serial("COM5",115200)

这里为COM5,115200的波特率。如果打不开,请检查安装环境。

ser.write('hello,serial test'.encode())

17

发送测试(如果返回字节数,说明返回成功),这里需要转换一个编码为字节。

以上测试,可以使用现在的设备或是串口助手,如安装Virtual Serial Port Driver 7.2 虚拟串口软件,设置一对串口,进行自发自收的测试。

print(ser.readline())

b'abcdefg\r\n'

这里是串口接收,有接收的超时。设备或是串口助手发送一个字符串,以回车换行结束,这里就可以收到打印出来。

也可以用ser.read(),这里只接收一个字符来实现。

上面已经实现了基本的串口操作。

关闭串口为:

ser.close()

如果使用python,一般写个py文件,就像windows bat 批处理一样,这是python强大的地方。如果写一个py脚本呢?其实只要把上面的命令,一条条写下来,就是一个脚本,测试如下:

import serialser=serial.Serial("COM5",115200,timeout=0.5)for i in range(0,100-1):ser.write('hello\r\n'.encode())print(ser.readline());ser.close()


本文题目:python串口接收函数,python操作串口
当前网址:http://pwwzsj.com/article/dsioego.html