使用python操作串口

如何使用Python操作串口 串口通信是在嵌入式系统和外部设备之间进行数据传输的一种常见方式。Python提供了多种库和工具,可以帮助您轻松地进行串口通信。在本篇博客中,我们将介绍如何使用Python操作串口,包括如何打开、配置、发送和接收串口数据。 阅读详情

使用python操作串口

 

一、

为了使用python操作串口,首先需要下载相关模块:

1. pyserial (http://pyserial.wiki.sourceforge.net/pySerial)

2. pywin32 (http://sourceforge.net/projects/pywin32/)

 

二、

google “python 串口 操作”关键字,找到相关python代码,

我是从http://currentlife.blog.sohu.com/53741351.html页面上拷贝的代码。

咱得参考人家的代码修改。

 

 

三、

发送数据可用chr和pack组装处理,如:

snd = ''

snd += chr(97)

data = 0x12345678

snd += pack.('i', data)

snd += chr(0x64)

self.l_serial.write(snd);

#发送的数据是(16进制):61 78 56 34 12 64

 

接收的数据用ord函数,将字节内容变为整数,进行判断处理。

如:if ord(recv[2])== 0x01:

判断recv[2]是否是0x01.

 

 

注意:不能这样比较

if recv[2] == 'a':

   pass

也不能这样比较

if recv[2] == 0x97:

   pass

 

因为python的字符串存储机制我不清楚,所以不知道为什么这样比较不可以。

 

帖点代码,依据前面的参考代码修改的:

#coding=gb18030


import sys,threading,time;
import serial;
import binascii,encodings;
import re;
import socket;
from struct import *;

class ComThread:
    def __init__(self, Port=0):
        self.l_serial = None;
        self.alive = False;
        self.waitEnd = None;
        self.port = Port;


    def waiting(self):
        if not self.waitEnd is None:
            self.waitEnd.wait();


    def SetStopEvent(self):
        if not self.waitEnd is None:
            self.waitEnd.set();
        self.alive = False;
        self.stop();


    def start(self):
        self.l_serial = serial.Serial();
        self.l_serial.port = self.port;
        self.l_serial.baudrate = 9600;
        self.l_serial.timeout = 2;
        self.l_serial.open();

        if self.l_serial.isOpen():
            self.waitEnd = threading.Event();
            self.alive = True;
            self.thread_read = None;
            self.thread_read = threading.Thread(target=self.FirstReader);
            self.thread_read.setDaemon(1);
            self.thread_read.start();
            return True;
        else:
            return False;


    def FirstReader(self):
        while self.alive:
            # 接收间隔
            time.sleep(0.1);
            try:
                data = '';
                n = self.l_serial.inWaiting();
                if n:
                    data = data + self.l_serial.read(n);
                    for l in xrange(len(data)):
                        print '%02X' % ord(data[l]),


                    # 发送数据
                    snddata = '';
                    snddata += chr(97)
                    tt = 0x12345678;
                    snddata += pack('i', tt)
                    snddata += chr(0x64)
                    self.l_serial.write(snddata);

                # 判断结束
                if len(data) > 0 and ord(data[len(data)-1])==0x45:
                    #pass;
                    break;
               
            except Exception, ex:
                print str(ex);


        self.waitEnd.set();
        self.alive = False;


    def stop(self):
        self.alive = False;
        self.thread_read.join();
        if self.l_serial.isOpen():
            self.l_serial.close();

 

#测试用部分
if __name__ == '__main__':
    rt = ComThread();
    try:
        if rt.start():
            rt.waiting();
            rt.stop();
        else:
            pass;            
    except Exception,se:
        print str(se);

   

    if rt.alive:
        rt.stop();


    print '';
    print 'End OK .';
    del rt;

 
使用Python读取串口数据 Python读取串口数据使用Python读取串口数据1.面向百度编程2.应用serial库3.编码设计4.编程实现 使用Python读取串口数据 1.面向百度编程 通过百度,定位到可使用Python的serial库进行读写串口数据。接着,开始用pip安装serial依赖库。 pip3 install serial 2.应用serial库 继续百度,学习串口知识和serial语法。分析需要的功能,进行如下汇总: 初始化串口连接 配置串口参数 读取串口数据 将读取结果写入文件 判断输出读取结果是否满足期望 阅读详情

相关推荐

win11怎么安装dosbox和masm来运行汇编程序(小白,萌新篇)

一文教会你如何部署dosbox和masm环境

m0_73279193的博客 4701

python实现串口通信【实测成功】

仅作为记录,大佬请跳过。 目前只使用脚本,进行串口收发的检测。 直接上代码: import sys import serial import serial.tools.list_ports from PyQt5 import QtWidgets from PyQt5.QtWidgets import QMessageBox from PyQt5.QtCore import QTimer import time chip=serial.Serial('COM3',timeout=2) chip.baudra

weixin_41529093的博客 1407

Apache NiFi新手必看:从零开始的数据流设计入门教程(含实战案例)

本文为Apache NiFi新手提供从零开始的数据流设计入门指南。通过实战案例,详细讲解了如何利用这一强大的数据采集工具,以可视化拖拽方式构建自动化数据流,实现从文件监控、内容处理到数据入库的全流程,并涵盖核心概念、环境搭建及生产环境调优要点。

weixin_29066781的博客 149

python 转化串口中的数据 ,并分组判断

# -*- coding: utf-8 -*- import binascii def split_1(data,split_sign): data2=[] for i in data: data3 = i.split(split_sign) for n in data3: n=n.st...

weixin_30345577的博客 394

保姆级教程:手把手调试PX4Ctrl的油门映射与姿态控制(附ROS节点配置)

本文提供PX4Ctrl的深度调参指南,涵盖油门映射、姿态控制及ROS节点配置等关键环节。通过详细解析PX4控制器的核心逻辑、递归最小二乘法(RLS)参数估计及状态机设计,帮助开发者优化无人机飞控性能。附实战案例与安全调试建议,适合PX4开发者进阶学习。

weixin_30363981的博客 382

基于CODESYS与EtherCAT的步进电机单轴控制实践

本文详细介绍了基于CODESYS平台与EtherCAT总线技术实现步进电机单轴控制的完整实践流程。从硬件选型、软件工程创建、EtherCAT主从站配置,到运动控制功能块编程与在线调试,手把手指导读者完成从零到一的搭建,并提供了常见问题的排坑指南,帮助自动化开发者快速掌握这一高效、灵活且成本可控的工业运动控制解决方案。

hh234的博客 491

Python----Serial库

看到一篇很好的串口通信文章,避免忘记,记录一下。

qq_43681154的博客 3522

DeepSeek 赋能太空探索:从轨道优化到星际开拓的 AI 革命

随着人工智能技术蓬勃发展,DeepSeek 在太空探索领域展现出巨大应用潜力。本文深入剖析 DeepSeek 技术核心,包括低功耗运算、开源生态等优势,阐述其与传统航天技术的差异。从航天器自主控制、深空探测、载人航天等关键环节,结合实时轨道调整、故障诊断修复等实例,揭示 DeepSeek 对航天任务效率与安全性的提升作用。同时探讨其应用面临的太空环境适应、伦理安全等挑战,展望技术演进方向及与前沿技术融合前景,展现 DeepSeek 为人类太空探索带来的变革与深远意义。

邓邓子的博客 2258

python 常用知识点介绍2

注意:communicate 其实是循环读取管道中的数据(每次 32768 字节)并将其存在一个 list 里面,到最后将 list 中的所有数据连接起来(b''.join(list)) 返回给用户。(2)安装完成后,需要配置环境变量,在path中添加tesseract的安装目录:E:\softinstall\Tesseract-OCR;os.stat() 方法用于在给定的路径上执行一个系统 stat 的调用,st_mtime返回最后一次修改的时间。对于模糊的验证码,需要更复杂的处理(降噪、切割等)。

weixin_43842848的博客 3157

【后量子密码】SPHINCS+ 算法(二):签名与验签(附源码分析)

本节介绍SPHINCS+ 算法的密钥生成、签名与验签。nnn:安全参数;www:Winternitz参数,WOTS+签名分解的基底;hhh:超树的高度;ddd:超树中子树的层数;kkk:FORS 树的数量;ttt:FORS 树的叶子节点数。

听雨草堂 4680

【乐企文件生成工程】关于乐企文件生成工程的详细介绍

发票文件生成方式有两种思路:1、根据已有的OFD模板,动态替换ofd模板内容;之后将ofd转pdf(局限:单行问题不大)详情可以在此处了解2、根据html模板动态占位:该工程就是这种方式 ,目前效果良好,可看下图。拿去即用的源码!无任何保留,当然也并不是所有票种都支持(时间有限、精力有限、已经连着转了,要冒烟了…)

九七的博客 2031

python的串口操作(pyserial)

本文转自:https://blog.youkuaiyun.com/absinjun/article/details/81407790 一、安装pyserial库 pip install pyserial 二、pyserial库常用函数介绍 serial = serial.Serial(‘COM1’, 115200) 打开COM1并设置波特率为115200,COM1只适用于Windows serial = ...

ABC_ORANGE的博客 4358

3、利用预训练卷积神经网络进行特征提取

本文介绍了如何使用预训练的卷积神经网络(如VGG16)进行图像特征提取,并将提取的特征存储在HDF5数据集中,以便后续用于机器学习模型的训练。文章详细阐述了特征提取的原理、HDF5数据格式的优势、HDF5DatasetWriter类的实现、特征提取流程的代码实现以及实际应用案例。通过该方法,可以在多种图像数据集上高效构建高精度的分类模型。

z2a3b4c5d的博客 114

python打开串口并操作_使用python操作串口

一、为了使用python操作串口,首先需要下载相关模块:1. pyserial (http://pyserial.wiki.sourceforge.net/pySerial)2. pywin32 (http://sourceforge.net/projects/pywin32/)二、google “python 串口 操作”关键字,找到相关python代码,我是从http://currentlif...

weixin_39936310的博客 1827

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

python串口编程视频_使用python3实现操作串口详解

通过引用serial模块包,来操作串口。1、查看串口名称在Linux和Windows中,串口的名字规则不太一样。需要事先查看。Linux下的查看串口命令root@D2:~# ls -l /dev/ttyS*crw-rw---- 1 root dialout 4, 64 Dec 26 06:53 /dev/ttyS0crw-rw---- 1 root dialout 4, 65 ...

weixin_39904587的博客 76

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

使用python的pyserial操作串口

一、初始化 1、简单初始化示例 import serial ser = serial.Serial('com1', 9600, timeout=1) 2、所有参数 ser = serial.Serial( port=None, # number of device, numbering starts at # zero. if everything fails, the user # can specify a device string, note # that this is

耐心的小黑的博客 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

python串口操作_使用python3实现操作串口详解

通过引用serial模块包,来操作串口。1、查看串口名称在Linux和Windows中,串口的名字规则不太一样。需要事先查看。Linux下的查看串口命令root@D2:~# ls -l /dev/ttyS*crw-rw---- 1 root dialout 4, 64 Dec 26 06:53 /dev/ttyS0crw-rw---- 1 root dialout 4, 65 Dec 26 06:...

weixin_39848097的博客 600

使用python进行串口操作-学习笔记

最近由于工作需要,因此我对使用python编写程序来实现与串口的通讯进行了学习。 首先我先说一下python中对串口操作所使用的模块Serial,安装方法如下所示: 打开cmd窗口输入:python -m pip install pyserial 安装成功之后就可以使用它来进行与串口之间的通讯了。 serial模块中常用的函数方法如下: #第一个参数为串口名称,第二个参数为波特率 serial ...

qq_30653631的博客 7449

使用python操作串口 ★☆★

另参考:如何用python写个串口通信的程序? http://www.douban.com/group/topic/7400483/   使用python操作串口一、为了使用python操作串口,首先需要下载相关模块:1. pyserial (http://pyserial.wiki.sourceforge.net/pySerial)                 http://...

f002489的专栏 413

python可以用来开发串口吗_使用python3实现操作串口详解

摘要:这篇Python开发技术栏目下的“使用python3实现操作串口详解”,介绍的技术点是“使用python、Python3、用python、使用、操作、详解”,希望对大家开发技术学习和问题解决有帮助。本文给大家介绍的是在python中通过引用serial模块包,来操作串口的方法的示例,有需要的小伙伴可以参考下通过引用serial模块包,来操作串口。1、查看串口名称在Linux和Windows中...

weixin_39990138的博客 421

.net thread操作串口_第八课python来写串口助手-使用多线程

1、python的多线程有很多库,我们既然使用使用QT来自作界面,那么就直接使用QT自带的QThread。2、我们查看下Qthread的官方文档,我们要实现一个thread的类,用来操作com口读取数据,我们需要实现一个run的方法用来执行,代码如下:class Uthread(QThread): _signal = pyqtSignal(bytes) def __init__(self, p...

weixin_39952074的博客 150

python串口使用教程_Python Serial串口基本操作(收发数据)

1、需要模块以及测试工具模块名:pyserial使用命令下载:python -m pip install pyserial串口调试工具:sscom5.13.1.exe2、导入模块import serial3、打开串口直接通过new一个Serial()的实例即可打开返回实例# encoding=utf-8import serialif __name__ == "__main__":com = ser...

weixin_30873333的博客 2163

python3.6串口编程实例_使用python3实现操作串口详解

通过引用serial模块包,来操作串口。1、查看串口名称在Linux和Windows中,串口的名字规则不太一样。需要事先查看。Linux下的查看串口命令root@D2:~# ls -l /dev/ttyS*crw-rw---- 1 root dialout 4, 64 Dec 26 06:53 /dev/ttyS0crw-rw---- 1 root dialout 4, 65 Dec 26 06:...

weixin_39644494的博客 485

使用python在openwrt下操作串口发送十六进制数据

#!/usr/bin/python import serial from time import sleep ser = serial.Serial('/dev/ttyS0', 9600, timeout=0.5) print ser.port print ser.baudrate if __name__ == '__main__': data=b'\xAA\xBB\x06\x00

三良的博客 1209

python串口操作_1-python库之-serial串口操作

串口操作在日常嵌入式设备调试的过程可以使用,而且非常方便,比较麻烦的应该是十六进制的接收处理。python里面使用serial库来操作串口,serial的使用流程跟平常的类似,也是打开、关闭、读、写1.打开串口一般就是设置端口,波特率。使用serial.Serial创建实体的时候会去打开串口,之后可以使用is_open开判断下是否串口是否打开正常。def DOpenPort(portx, bps,...

weixin_39589394的博客 4352
上一篇: OPC开发介绍,OPC SERVER列举和连接
下一篇: python 产生随机数,随机字符串
asmc51
博客等级 码龄24年 23粉丝 11原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值