使用python的pyserial包进行串口通信比较简单,但也有一些需要注意的事情,本文是为了让没有串口通信知识的朋友从零开始学用的笔记。

目录

  • 理论知识
    • 串口通信基础知识
      • 工作原理
  • Pyserial实现串口通信
    • pyserial包的安装
    • pyserial的基本函数
    • write函数
      • 传输格式

理论知识

串口通信基础知识

常见的四接线串口通信指通用异步收发器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种串行、异步、全双工的通信协议。

工作原理

工作原理是将传输数据的每个二进制位一位接一位地传输。在UART通信协议中信号线上的状态为高电平时代表‘1’,信号线上的状态为低电平时代表‘0’。比如使用UART通信协议进行一个字节数据的传输时就是在信号线上产生八个高低电平的组合。
串口通信使用二进制字节流进行,发送和接收缓冲区均为char型的数组。
这时候就需要在两个uart设备上指定相同的传输速率,以及空闲位、起始位、校验位、结束位,也就是遵循相同的协议。
*因此,波特率是必须要优先选择好的,两个设备应该以同样的波特率收发信息,否则串口不会工作。

Pyserial实现串口通信

pyserial包的安装

与其他python包相同,直接在window的cmd中使用以下命令即可
(具体我也不太懂,反正pip install就是可以用来方便的安装python包)

pip install pyserial

习惯使用anaconda的用户也可以在anaconda的powershell中用conda的安装命令。

pyserial的基本函数

pyserial的官方帮助文档
首先,要将pyserial包导入

import serial
  1. 串口初始化的函数
ser = serial.Serial('COM6',19200,timeout=timex)

serial.Serial是一个类,也是最基本的串口函数,我们通过实例化得到一个叫ser的实例。(具体请学习python的「类」)
下面是几个参数的说明。

1.'COM6’

'COM6’是window系统的串口设备名,可以在设备管理器中查看有哪些串口可供使用。

在linux系统中可以通过以下的指令来命令python查看所有可用的port

python -m serial.tools.list_ports

2.19200
是波特率,需要与串口所连接的另一个设备匹配。
3.timeout
我是指定了修改timeout参数,这是终止时间,用以终止串口操作。比如说我使用read函数读取串口数据,程序就会持续读取timeout的时长来读取数据

注:以下所有函数都是serial.Serial的方法,也就是使用

ser.function()

的格式来调用。(ser为刚刚创建的实例)

write函数

使用例子:

传输格式

串口通信只支持传输byte格式的数据,不能传递int型数据(就是不能直接传送数字,不管是什么进制都不行)
需要把字符型数据编码成byte格式进行传输(常用的是UTF-8编码方式)
python的encode和decode编码,以及常见编码类型

例如:
发送一个十六进制的数据
使用fromHex()函数来进行字符到byte的转换。
(业余人士用python一定要去找那些封包的函数,不要去用那些奇奇怪怪的代码。。自己心里也迷糊)

字符串’xxxxxxxx’的byte型数据用b’xxxxxxxx’表示。

Measure_tem_comand='55 AA 11 00 03 13'#要发送的十六进制字符串,两个数字(字母)一组,用空格隔开
byte_Measure_tem_comand=bytes.fromhex(Measure_tem_comand)#使用fromhex函数将16进制指令转换为byte类型
ser.write(byte_Measure_tem_comand)#使用write函数将命令写入串口
recive_sta = ser.readall()#从串口中读取数据if recive_sta!=b'':#判断是否有读取到数据。# 将接受的16进制数据格式如b'h\x12\x90xV5\x12h\x91\n4737E\xc3\xab\x89hE\xe0\x16'#                      转换成b'6812907856351268910a3437333745c3ab896845e016'#                      通过[]去除前后的b'',得到我们真正想要的数据 print("receive",str(binascii.b2a_hex(recive_sta))[2:-1])

这样子就可以对串口所连接的仪器进行操作啦!

从零开始学习使用Pyserial串口通信相关推荐

  1. 【STM32】标准库与HAL库对照学习教程八--串口通信详解

    [STM32]标准库与HAL库对照学习教程八--串口通信详解 一.前言 二.准备工作 三.通信的基本概念 1.通信方式 2.串行通信与并行通信 (1)串行通信 (2)并行通信 3.异步通信与同步通信 ...

  2. 【K210】K210学习笔记五——串口通信

    [K210]K210学习笔记五--串口通信 前言 K210如何进行串口通信 K210串口配置 K210串口发送相关定义 K210串口接收相关定义 K210串口发送接收测试 完整源码 前言 本人大四学生 ...

  3. 【Unity学习】关于串口通信插件SerialPortUtilityPro的简单使用个人案例

    [Unity学习]关于串口通信插件SerialPortUtilityPro的简单使用个人案例 前言 需求分析 串口发送数据 串口接收数据并解析 结语 前言 关于插件资源,请去资源商店购买或使用其试用版 ...

  4. 51单片机学习--定时器--中断--串口通信

    51单片机学习–定时器–中断–串口通信 定时器–中断–串口通信 中断分类 定时器中断 外部中断 串口中断 基本概念 对于单片机来讲, 中断是指 CPU 在处理某一事件 A 时, 发生了另一事件 B, ...

  5. 51单片机学习笔记-6串口通信

    6 串口通信 [toc] 注:笔记主要参考B站江科大自化协教学视频"51单片机入门教程-2020版 程序全程纯手打 从零开始入门". 注:工程及代码文件放在了本人的Github仓库 ...

  6. 嵌入式学习笔记7——串口通信

    并行通信和串行通信的区别: 并行通信通常是将数据字节的各位用多条数据线同时进行传送 . 串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送. 异步 不要求收发双方时钟的严格一致,实现容易, ...

  7. 51单片机学习笔记(串口通信 LED点阵屏 DS1302)

    四.串口通信 1.基本概念 通信中最重要的两个方面: 信息表示和解析方法: 信息的传输方法. 通信双方事先需要约定好信息的表示方法和解析方法,做到一致,否则信息不能有效传递. 信号的传输方法是指经过编 ...

  8. 【小月电子】安路国产FPGA开发板系统学习教程-LESSON7串口通信

    串口通信例程讲解 若要观看该博客配套的视频教程,可点击此链接 根据多年工作经验,总结出的FPGA的设计流程,概括起来总共有以上12步,其中根据项目难易度可省去其中一些步骤.比如非常简单的项目,我们可以 ...

  9. C51单片机学习笔记之串口通信

    简介 串口通信就是单片机和pc之间的一种通信方式. 通信方式:并行,串行,同步,异步(最常用的) 传输方向:单工,半双工(不同时间),全双工 基本结构 ​ 相关寄存器 SCON串口控制寄存器(主要用方 ...

最新文章

  1. 一文看懂docker容器技术架构及其中的各个模块
  2. python【数据结构与算法】程序设计:划分整数(DP)
  3. conda下载出现连接超时怎么办
  4. HTML IFRAME 用法小总结
  5. 如何保护企业网络免受勒索软件攻击 Vecloud微云
  6. VTK:图像方向用法实战
  7. Linux单磁盘根分区扩容(非LVM)
  8. 在php100 防恶意注册这个需要怎么填,WordPress防止恶意注册代码
  9. Fluent Design单选按钮,复选框,选择框,Java菜单
  10. python中的私有化
  11. 微软阵营企稳的利好消息:.NET开源、Visual Studio免费
  12. linux系统安装如何设置raid,在RAID磁盘阵列下如何搭建Linux系统
  13. QueryRunner类常用的方法
  14. 快速提取PPT文件里面的视频、音频素材
  15. mysql8 距离计算_MySQL创建根据经纬度计算距离的函数
  16. excel转置怎么操作_EXCEL/WPS如何快速将一行转置成一列,一列转置成一行?
  17. 404 not found是什么意思
  18. 银行流水、财报、年报、电费分割单等各类文档一键提取,达观表格提取工具再升级!
  19. 抖音去水印,快手去水印,皮皮虾去水印操作方法(2019.6.12有效)
  20. 织梦上传到服务器不显示图像,织梦dede源码前台会员发布文章带图片不显示怎么办?...

热门文章

  1. 医院数据库进行性能优化维护
  2. Flink SQL Gateway REST Endpoint 使用教程
  3. 426 Upgrade Required
  4. 标签输入框tag-input:仿QQ邮箱来增强你的组件交互与界面展示
  5. node.js 立即执行函数
  6. Linux开发板 - 02 - eop/uboot下载
  7. 简说django CBV执行流程,与部分源码分析
  8. 【面经攒人品】应急中心单位面经考前复习
  9. 闪光桐人の实习日记(2023年2月13-17日)
  10. mysql8 s开头函数学习