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
    +关注

    关注

    51

    文章

    4657

    浏览量

    83380
  • 串行端口
    +关注

    关注

    0

    文章

    30

    浏览量

    11456
收藏 人收藏

    评论

    相关推荐

    CYBT-243053-EVAL上未检测到串行端口的原因?

    任何调用串行端口的应用程序, CAN 设备管理器中看到串行端口。 我在使用Silicon Labs USB串行
    发表于 03-01 06:39

    什么是串行端口?有哪几种分类?

    什么是串行端口?有哪几种分类? 串行端口是计算机中用于进行数据传输的一种接口类型,通过单一的数据线逐位地传输数据。与串行
    的头像 发表于 02-02 15:40 552次阅读

    求助,是否可以使用PIC监控串行端口

    是否可以使用 PIC 监控串行端口
    发表于 01-22 06:28

    ADXL345如何将端口INT1重置为原始低电平?

    我用ADXL345在INT1端口上配置了双击中断,但是双击后触发了。INT1端口的值一直保持在高电平,没有回到低电平。我想知道如何将端口 INT1 重置为原始低电平。
    发表于 12-27 07:44

    串行端口收发器的作用

    串行端口收发器是一种用于串行通信的设备,它的作用是将并行数据转换为串行数据,并将串行数据转换为并行数据。它在计算机和通信领域中起着重要的作用
    的头像 发表于 08-19 10:51 316次阅读

    在设计中扩展串行端口的入门知识

        即使USB出现,串行端口也不会消亡。对于术语“串行端口”,我们通常指的是或多或少符合RS-232 标准或相应的TTL 信号的硬件。      串口 在软硬件集成初期易于调试。即
    的头像 发表于 08-18 17:25 268次阅读

    在设计中扩展串行端口的入门知识分享

    即使USB出现,串行端口也不会消亡。对于术语“串行端口”,我们通常指的是或多或少符合RS-232 标准或相应的TTL 信号的硬件。
    的头像 发表于 08-18 17:24 1176次阅读
    在设计中扩展<b class='flag-5'>串行</b><b class='flag-5'>端口</b>的入门知识分享

    如何将Git与用于DS-5 1.0版的Eclipse配合使用

    源代码管理系统(SCS)允许您对源文件进行版本设置,并与其他开发人员共享。有许多可用的源代码管理系统,既有商业的,也有开源的。 本教程介绍如何将开源Git源代码管理系统集成到Eclipse for DS-5中。它假设您已经熟悉使用Git的基本概念。
    发表于 08-10 07:11

    动态库封装成python模块的方法

    之前的文章 将静态库封装成 python 模块中讲解了如何将静态库封装成 python 模块,静态库封装相对来说还是有点复杂,今天来介绍下动态库封装成 python 模块的方法。
    发表于 07-13 15:24 367次阅读

    串行端口扩展器-带有PIC MCU的额外SPI和UART端口

    电子发烧友网站提供《串行端口扩展器-带有PIC MCU的额外SPI和UART端口.zip》资料免费下载
    发表于 07-12 10:48 1次下载
    <b class='flag-5'>串行</b><b class='flag-5'>端口</b>扩展器-带有PIC MCU的额外SPI和UART<b class='flag-5'>端口</b>

    使用高速微型的串行端口

    模拟DS80C320和其他高速微控制器具有两个相同的串行端口。本应用笔记向用户介绍微控制器中使用的通用同步/异步接收器/发送器(USART)。应用笔记讨论了波特时钟源、轮询和中断模式、波特率生成、异步10位操作和双串行
    的头像 发表于 06-13 14:52 280次阅读
    使用高速微型的<b class='flag-5'>串行</b><b class='flag-5'>端口</b>

    如何将Deauther手表连接到Arduino IDE?

    ==================================================================================== 现在我想给我的手表编程。最好使用 python,但我不知道如何将 Arduino IDE 切换为
    发表于 06-05 08:29

    WLED项目如何将python代码发送到Athom?

    一直在试验 Python 和 Athom 的“WLED ESP32 音乐可寻址 LED 灯条控制器”。 控制器规格: ESP32-WROOM-32E 芯片组 2 通道 I2S PDM 数字麦克风
    发表于 05-10 13:09

    如何将程序上传到ESP32,最好使用Arduino IDE?

    端口。Arduino IDE 不显示任何可用的 COM 端口。Windows 设备管理器确实显示“其他设备 > USB 串行”,但没有 COM 端口
    发表于 04-12 09:02

    如何将linux映像刻录到emmc?

    如何将 linux 映像刻录到 emmc
    发表于 04-06 08:37