0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何将Python与串行端口配合使用

454398 来源:工程师吴畏 2019-07-31 08:56 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

原理图

如何将Python与串行端口配合使用

的 电路 的

获取PySerial

Python的许多优秀功能之一是在使用PIP工具时安装库是多么容易。在您的计算机上,打开终端或命令提示符并键入“PIP”。如果您收到无法识别的错误,那么您的PIP无法正确安装。安装Python时,请确保选中“添加到环境变量”选项。 PIP工作后,运行下面显示的命令安装PySerial:

pip install PySerial

我们的项目中包含PySerial,是时候打开Python IDLE并创建我们的串口项目了!

PySerial

使用PySerial时,需要配置一些参数(在与在微控制器上设置UART外设类似的方式),包括。..。..

波特率 - COM端口的运行速度。 Arduino项目倾向于在115200运行

端口 - 正在使用的端口名称(在设备管理器中查找)

奇偶校验位 - 这些用于错误纠正但通常不使用

停止位 - 除非存在时序问题,否则只使用一个停止位

超时 - 用于防止串行挂起的端口

除了定义上面显示的参数外,还需要导入串口模块。下面的代码摘录显示了如何导入串行模块并配置UART端口以使用115200波特的COM3,没有奇偶校验,一个停止位和两秒的超时。

import serial

serialPort = serial.Serial(port = “COM4”, baudrate=115200,

bytesize=8, timeout=2, stopbits=serial.STOPBITS_ONE)

这很容易使用设备管理器时,找到USB到串行设备所在的COM端口。打开开始菜单,然后键入“设备管理器”。加载设备管理器时,查找名为“ports”的部分并展开它。默认情况下,大多数Windows计算机都有一个用于内部通信的COM1端口,因此请勿使用该COM端口。假设您只连接了一个COM设备,则第二个COM端口将是您的微控制器。

使用串口非常简单,只需要一些功能,包括。..。..

open() - 这将打开串口

close() - 这将关闭串口

readline () - 这将从串口读取一个字符串

read(size) - 这将从串口读取n个字节

write(data) - 这将把传递给函数的数据写入串口

in_waiting - 这个变量保存缓冲区中的字节数

在我们的简单程序中,我们首先打开串口先前已定义。必须调用open()函数,因为它允许我们的程序“声明”端口并阻止任何其他进程访问它。如果尚未打开端口,也无法访问该端口。

下一段代码是一个无限循环,它做了一些事情。..。..

检查缓冲区中是否有任何数据等待

/li》

当数据到达时,将数据传输到变量“serialString”

打印“serialString”的值

写一个字符串回到发送数据的设备,通知它我们收到了字符串

serialString = “” # Used to hold data coming over UART

while(1):

# Wait until there is data waiting in the serial buffer

if(serialPort.in_waiting 》 0):

# Read data out of the buffer until a carraige return / new line is found

serialString = serialPort.readline()

# Print the contents of the serial data

print(serialString.decode(‘Ascii’))

# Tell the device connected over the serial port that we recevied the data!

# The b at the beginning is used to indicate bytes!

serialPort.write(b“Thank you for sending data ”)

我们的微控制器电路/代码

为了测试我们的Python串口程序,我们将使用一个非常小的PIC芯片,PIC16F1825 ,将使用XC8编码。该芯片具有UART端口,这意味着我们可以将其直接连接到USB转串口转换器(例如FTDI 232R)。幸运的是,这里使用的FTDI模块从USB端口提供电源,因此我们不需要任何电源电路(更容易构建)。

PIC的代码由三个主要区域组成:

配置位 - 这些配置核心寄存器,如PLL和振荡器

主要代码 - 主要执行代码(在main()中找到)

功能 - 包括将字符串写入UART并配置UART

配置位不会被深入介绍,但它们确保PIC不使用PLL,而是使用内部振荡器模块作为其时钟源。

// CONFIG1

#pragma config FOSC = INTOSC pin)

#pragma config WDTE = OFF

#pragma config PWRTE = OFF

#pragma config MCLRE = ON

#pragma config CP = OFF

#pragma config CPD = OFF

#pragma config BOREN = OFF

#pragma config CLKOUTEN = OFF

#pragma config IESO =

#pragma config FCMEN = ON

// CONFIG2

#pragma config WRT = OFF

#pragma config PLLEN = OFF

#pragma config STVREN = ON

#pragma config BORV = LO

#pragma config LVP = ON

主要功能PIC可以做三件事:将器件配置为使用8MHz的时钟频率(对于UART模块),配置UART外设;然后通过UART端口发送/接收字符串。读取和写入字符串的实际函数已在函数中定义,这使得在主代码中更容易使用UART端口,但我们不会介绍此代码的说明。

void main(void)

{

// Configure pins as digital

ANSELA = 0;

ANSELC = 0;

OSCCONbits.IRCF = 0b1110;

configUART();

while(1)

{

sendStringUART(“Hello, this is the PIC16F1825”);

readStringUART(stringBuffer);

}

}

这些函数提供了有用的功能,下面是函数原型:

void configUART(void);

void sendByteUART(char data);

void sendStringUART(const char *string);

void readStringUART(char *buffer);

结果

如果一切都按计划进行,当Python程序运行并且PIC设备打开时,我们应该会看到类似于下面显示的窗口的内容。如果是这样,那么我们的PIC程序和Python程序就能完美地相互通信。虽然这个例子非常简单,但它表明Python可以很容易地集成到微控制器项目中,包括PIC,AVR,STM,Arduino甚至Raspberry Pi!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    57

    文章

    4858

    浏览量

    89597
  • 串行端口
    +关注

    关注

    0

    文章

    36

    浏览量

    12031
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何将GCC项目导入NuEclipse?

    如何将GCC项目导入NuEclipse?
    发表于 09-01 07:04

    请问如何将ISP写入Nuvoton 8051 MCU系列?

    如何将ISP写入Nuvoton 8051 MCU系列?
    发表于 08-18 07:34

    如何将K230 image转成jpg?

    如何将K230image转成jpg,我想获取图片,传回我自己的系统 你好,可以使用img.to_jpeg()来对其进行压缩。
    发表于 06-12 06:41

    如何将CYPD3125用于DRP USB端口

    我正在尝试 CYPD3125 用于 DRP USB 端口。 当我的 5V 电源(当我的端口充当 DFP 和电源时)通电时,我无法从我的 PD 充电器吸收电力。 在 PD 充电器的电源切断之前,我
    发表于 05-06 11:02

    如何将Linux安装包快速转成玲珑包

    本篇将以 motrix 为例为大家展示如何将 Linux 安装包快速转成玲珑包。
    的头像 发表于 03-12 16:01 1264次阅读
    <b class='flag-5'>如何将</b>Linux安装包快速转成玲珑包

    如何将Keras H5模型转换为中间表示 (IR) 格式?

    第 1 步: Keras H5 模型转换为保存的型号格式 安装 依赖关系: cd deployment_toolsmodel_optimizerinstall_prerequisites
    发表于 03-07 06:11

    Web Bluetooth SPP(串行端口配置文件)示例

    电缆替代(Cable Replacement)通常指的是通过无线技术,如低功耗蓝牙(Bluetooth LE)替代传统的有线连接,例如串行端口配置文件(Serial Port Profile,简称SPP)。
    的头像 发表于 02-28 09:40 1074次阅读

    如何将项目从IAR迁移到Embedded Studio

    本文描述如何将IAR EWARM项目迁移到SEGGER Embedded Studio(简称SES)中。
    的头像 发表于 02-25 17:11 1069次阅读
    <b class='flag-5'>如何将</b>项目从IAR迁移到Embedded Studio

    如何将RT-Thread移植到NXP MCUXPressoIDE上

    RT-Thread默认支持的IDE只有IAR 和 Keil, 那如何将RT-Thread移植到NXP MCUXPressoIDE上呢?本文内容比较简单但稍有琐碎,希望对有需要的小伙伴有所帮助。
    的头像 发表于 02-13 10:37 2441次阅读
    <b class='flag-5'>如何将</b>RT-Thread移植到NXP MCUXPressoIDE上

    如何将python文件导入到ROS系统中

    本文通过使用myCobot机械臂进行QR码视觉追踪的实践案例分析,介绍如何将 python 文件导入到 ROS 系统中。
    的头像 发表于 02-11 11:08 1201次阅读
    <b class='flag-5'>如何将</b><b class='flag-5'>python</b>文件导入到ROS系统中

    串行接口的工作方式有几种,串行接口的RXD1和TXD1是什么端口

    在数字通信领域,串行接口作为一种高效的数据传输方式,广泛应用于各种电子设备之间的数据交换。串行接口不仅具有结构简单、传输距离远、抗干扰能力强等优点,而且能够支持多种工作方式,以适应不同应用场景的需求。本文深入探讨
    的头像 发表于 01-29 16:51 2100次阅读

    AN3408-如何将12位ADC用于力敏电阻

    电子发烧友网站提供《AN3408-如何将12位ADC用于力敏电阻.pdf》资料免费下载
    发表于 01-21 14:38 0次下载
    AN3408-<b class='flag-5'>如何将</b>12位ADC用于力敏电阻

    EE-234:通过串行端口T1/E1收发器/成帧器与Blackfin处理器连接

    电子发烧友网站提供《EE-234:通过串行端口T1/E1收发器/成帧器与Blackfin处理器连接.pdf》资料免费下载
    发表于 01-07 14:06 0次下载
    EE-234:通过<b class='flag-5'>串行</b><b class='flag-5'>端口</b><b class='flag-5'>将</b>T1/E1收发器/成帧器与Blackfin处理器连接

    ADI公司串行端口开发和故障排除指南

    电子发烧友网站提供《EE-74:ADI公司串行端口开发和故障排除指南.pdf》资料免费下载
    发表于 01-07 13:48 13次下载
    ADI公司<b class='flag-5'>串行</b><b class='flag-5'>端口</b>开发和故障排除指南

    EE-220:外部存储器与第三代SHARC处理器和并行端口配合使用

    电子发烧友网站提供《EE-220:外部存储器与第三代SHARC处理器和并行端口配合使用.pdf》资料免费下载
    发表于 01-06 16:12 0次下载
    EE-220:<b class='flag-5'>将</b>外部存储器与第三代SHARC处理器和并行<b class='flag-5'>端口</b><b class='flag-5'>配合</b>使用