`
f002489
  • 浏览: 277098 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

使用python操作串口 ★☆★

阅读更多

另参考:如何用python写个串口通信的程序? http://www.douban.com/group/topic/7400483/

 

使用python操作串口
一、
为了使用python操作串口,首先需要下载相关模块:
1. pyserial (http://pyserial.wiki.sourceforge.net/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操作串口ccccccccccccccccc

    标题所指的“python操作串口”是一个专注于使用Python语言对计算机串行端口进行控制和数据交换的技术主题。在计算机科学中,串行端口是一种通过串行通信接口,按照位的方式顺序传输数据的方式,常用于计算机与外部...

    Python操作串口通信

    Python操作串口通信 注意Linux下先要修改串口的权限: sudo chmod 777 /dev/ttyUSB0 以下是python代码: # coding=utf-8 # 包:pyserial,pymysql # 权限:sudo chmod 777 /dev/ttyUSB0 import serial # import ...

    使用python3实现操作串口详解

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

    基于python实现串口GUI编程

    这样的方法适合初学者快速上手Python串口编程,同时也为更复杂的项目提供了基础。随着技能的提升,开发者还可以进一步完善GUI界面,添加错误处理机制,以及支持更多高级功能,如波特率动态调整、多种设备连接管理等...

    python编写的串口调试工具

    Python编写的串口调试工具是一种基于Python编程语言的实用程序,用于与硬件设备进行串行通信。这个工具通常包括读取、写入数据、设置波特率、数据位、停止位和奇偶校验等功能,方便开发者进行串口设备的调试和测试。...

    基于Python的串口通信(2).doc

    基于 Python 的串口通信(2) 本文档将详细介绍基于 Python 的串口通信,包括 Pyvisa 的...通过本文档,可以了解基于 Python 的串口通信的基本原理和实现方法,并了解 Pyvisa 库的使用方法和 NI-VISA 库的安装方法。

    Python串口调试助手

    在“Python串口调试助手”中,开发者使用PyQt5设计了友好的用户界面,使用户能够直观地进行操作。用户界面通常包括串口选择控件、波特率设置、数据位、停止位以及校验位等配置选项,这些参数可以根据不同的串口设备...

    学习python写串口.zip

    Python是一种广泛使用的高级编程语言,尤其在数据处理、科学计算、Web开发以及自动化任务...学习过程中,理解串口通信的基本原理、熟悉`pyserial`库的API,并结合实际硬件进行实践,将有助于你掌握Python串口编程技能。

    python串口接收源码可以实时绘图

    本项目“python串口接收源码可以实时绘图”结合了这两个工具,旨在实现串口数据接收并实时可视化显示。 项目的核心是通过Python的`pyserial`库来处理串口通信。`pyserial`库提供了一系列API,使得开发者可以方便地...

    python实时读取串口数据并自动保存至excel

    1. **Python串口通信**:Python提供了`pyserial`库来处理串口通信。通过创建`Serial`对象,设置波特率、校验位、数据位和停止位等参数,可以打开串口并与连接的设备进行数据交换。例如,`ser = serial.Serial(port='...

    python编写串口工具

    本主题聚焦于使用Python创建一个串口通信工具,它利用了Tkinter库来构建图形用户界面(GUI)。Tkinter是Python的标准GUI库,易于学习且功能齐全,非常适合初学者和专业人士快速开发桌面应用。 串口通信,又称UART...

    Python 使用Pandas实现数据库的读、写操作 Python源码

    Python 使用Pandas实现数据库的读、写操作 Python源码Python 使用Pandas实现数据库的读、写操作 Python源码Python 使用Pandas实现数据库的读、写操作 Python源码Python 使用Pandas实现数据库的读、写操作 Python源码...

    【Python原创技术】Python通过串口收发文件

    具体使用方法:内网网电脑都安装Python,最好同一版本,不同版本不知行不行.外网电脑运行pip install xmodem安全文件传输库.,然后运行pip freeze>C:\pip.txt和pip download -d C:\offline -r C:\pip.txt两个命令,将生成...

    基于python编写的串口调试助手,内含.exe程序和源代码

    串口调试助手是一种工具,它允许用户通过计算机的串行接口(如COM1、COM2等)与外部设备进行通信和数据交换。在IT领域,尤其是在硬件开发、物联网(IoT)项目或者嵌入式系统调试中,串口调试助手扮演着至关重要的角色...

    STPython使用说明 国产神通数据库 OSCAR python操作模块及使用手册

    STPython的核心功能是通过调用神通数据库的ACI(Application Call Interface)接口来扩展Python的功能,使得开发者可以使用Python编写SQL语句来操作神通数据库。然而,为了正常运行STPython,除了Python标准库外,还...

    Python 串口实时绘图工具

    Python有许多库可以实现串口通信,例如`pyserial`,它是Python中广泛使用的串口通信库。通过`pyserial`,我们可以打开、配置(如设置波特率、数据位、停止位等)和读写串口。在这个工具中,它能自动检测串口端口的...

    python获取串口数据

    python获取串口数据

    Python串口日志小工具

    Python串口日志小工具是一种基于Python编程语言开发的实用程序,主要用于与硬件设备通过串行接口进行通信,实现数据的收发以及日志记录功能。在嵌入式系统、物联网(IoT)项目或者需要与外部设备进行交互的场景中,...

Global site tag (gtag.js) - Google Analytics