weiqi7777

Python实现串口

0
阅读(5922)

晚上花了一点时间,用python实现了一个简单的串口调试助手。我使用的python版本是3.4.

要用python实现串口,首先要装一个pserial模块。下载地址如下:

https://pypi.python.org/pypi/pyserial

clip_image002

就下第一个就好了

将下下来的压缩包解压。然后打开终端。进入到解压的目录下面

clip_image004

下面有一个setup.py的文件。

然后输入命令

clip_image006

模块就自动安装了。

然后就开始写程序了。程序很简单,我这里还加入了点小界面。界面用的是easygui模块来写的。

关于easygui,可以看看小甲鱼的网站,介绍得很详细。

http://bbs.fishc.com/forum.php?mod=viewthread&tid=46069&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403


代码

import serial
from easygui import *

com_choices = ('com1','com2','com3','com4','com5','com6','com7')
baud_choices = ('115200','256000')

com = choicebox(msg='请选择COM口',title='COM端口选择',choices=com_choices)
baud = choicebox(msg='请选择波特率',title='波特率选择',choices=baud_choices)
ser = serial.Serial(com)  #设置com端口
ser.setBaudrate(baud)       #设置波特率
ser.setByteSize(8)          #设置数据位宽
ser.setStopbits(1)          #设置停止位

while(1):
    s = enterbox(msg='请输入发送的内容,按发送键发送',title='串口发送助手',\
                 strip=True,default='@') #得到发送的内容
    print('发送的内容是:',s)
    length = len(s)
    if s == '@':
        break
    ser.write(s.encode())
    s = ser.read(length)
    print('读取的内容是:',s)
ser.close()

从代码可以很简单的看出,serial模块是怎么用的。

主要是调用那几个函数。

还有一个函数ser.isOpen() 是检测串口是否打开的,打开为True,没有打开为False。

这里要注意,发送数据是用ser.write(s)。 s是发送的字符串数据,记得后面要有encode()。不然程序会报错。

下面是程序执行演示图:

clip_image008

选择com端口的界面

clip_image010

选择波特率的界面

clip_image012

发送数据和接收数据

因为easygui模块,暂时我还不会怎么把多个合在一个界面,所以就只能一个界面一个界面的输出,有点别扭。不过功能可是能实现的。

用python实现串口确定简单多了,比VC都还要简单。就只需要pyserial模块,调用相应的函数即可了。