pythongui界⾯制作显⽰串⼝数据_python实现串⼝通讯⼩程序
(GUI界⾯)
python实现串⼝通讯⼩程序(GUI界⾯)
使⽤python实现串⼝通讯需要使⽤python的pyserial库来实现,这个库在安装python的时候没有⾃动进⾏安装,需要⾃⼰进⾏安装。
1、安装pyserial库:
打开命令⾏窗⼝,在命令⾏中输⼊:pip install pyserial 命令进⾏安装。
2、程序使⽤python⾃带的GUI库tkinter来实现GUI窗⼝,使⽤pyserial来实现串⼝通讯模块。
效果图如下:
串⼝号选择框会⾃动加载所有可⽤的串⼝号,并且显⽰在选择框中。在使⽤时选择合适的串⼝号,然后点击打开串⼝按键即可。
注:本程序使⽤的是虚拟串⼝
3、效果演⽰:
1)发送数据演⽰:
注:在发送数据显⽰框中显⽰字符,则表明发送成功
动态效果演⽰:
2)接收数据演⽰:
注:接收数据显⽰框显⽰字符,则表明发送数据成功
动态演⽰效果:
4:⼯程介绍:
本⼯程由两个⽂件组成:分别是GUI⽂件和串⼝⽂件。
⽂件代码如下:
GUI⽂件:
'''
@ author: summer
@ tools: pycharm
@ content: 实现串⼝通讯主类
@ date: 2020.2.12
'''
import tkinter
from tkinter import ttk
from 串⼝通讯.SerialClass import SerialAchieve # 导⼊串⼝通讯类
class MainSerial:
def __init__(self):
# 定义串⼝变量
self.port = None
self.band = None
self.check = None
self.data = None
self.stop = None
# 初始化窗体
self.mainwin = tkinter.Tk()
self.mainwin.title("串⼝调试⼯具")
ry("600x400")
# 标签
self.label1 = tkinter.Label(self.mainwin,text = "串⼝号:",font = ("宋体",15))
self.label1.place(x = 5,y = 5)
self.label2 = tkinter.Label(self.mainwin, text="波特率:", font=("宋体", 15))
self.label2.place(x=5, y=45)
self.label3 = tkinter.Label(self.mainwin, text="校验位:", font=("宋体", 15))
self.label3.place(x=5, y=85)
self.label4 = tkinter.Label(self.mainwin, text="数据位:", font=("宋体", 15))
self.label4.place(x=5, y=125)
self.label5 = tkinter.Label(self.mainwin,text = "停⽌位:",font = ("宋体",15))
self.label5.place(x = 5,y = 165)
# ⽂本显⽰,清除发送数据
self.label6 = tkinter.Label(self.mainwin, text="发送数据:", font=("宋体", 15))
self.label6.place(x=230, y=5)
self.label7 = tkinter.Label(self.mainwin, text="接收数据:", font=("宋体", 15))
self.label7.place(x=230, y=200)
# 串⼝号
self1value = tkinter.StringVar() # 窗体中⾃带的⽂本,创建⼀个值
selfbobox_port = ttk.Combobox(self.mainwin, textvariable=self1value, width = 10,font = ("宋体",13))
# 输⼊选定内容
selfbobox_port["value"] = [""] # 这⾥先选定
selfbobox_port.place(x = 105,y = 5) # 显⽰
# 波特率
self.bandvalue = tkinter.StringVar() # 窗体中⾃带的⽂本,创建⼀个值
selfbobox_band = ttk.Combobox(self.mainwin, textvariable=self.bandvalue, width=10, font=("宋体", 13)) # 输⼊选定内容
selfbobox_band["value"] = ["4800","9600","14400","19200","38400","57600","115200"] # 这⾥先选定selfbobox_band.current(6) # 默认选中第0个
selfbobox_band.place(x=105, y=45) # 显⽰
# 校验位
self.checkvalue = tkinter.StringVar() # 窗体中⾃带的⽂本,创建⼀个值
selfbobox_check = ttk.Combobox(self.mainwin, textvariable=self.checkvalue, width=10, font=("宋体", 13)) # 输⼊选定内容
selfbobox_check["value"] = ["⽆校验位"] # 这⾥先选定
selfbobox_check.current(0) # 默认选中第0个
selfbobox_check.place(x=105, y=85) # 显⽰
# 数据位
self.datavalue = tkinter.StringVar() # 窗体中⾃带的⽂本,创建⼀个值
selfbobox_data = ttk.Combobox(self.mainwin, textvariable=self.datavalue, width=10, font=("宋体", 13) )
# 输⼊选定内容
selfbobox_data["value"] = ["8", "9", "0"] # 这⾥先选定
selfbobox_data.current(0) # 默认选中第0个
selfbobox_data.place(x=105, y=125) # 显⽰
# 停⽌位
self.stopvalue = tkinter.StringVar() # 窗体中⾃带的⽂本,创建⼀个值
selfbobox_stop = ttk.Combobox(self.mainwin, textvariable=self.stopvalue, width=10, font=("宋体", 13))
# 输⼊选定内容
selfbobox_stop["value"] = ["1", "0"] # 这⾥先选定
selfbobox_stop.current(0) # 默认选中第0个
selfbobox_stop.place(x=105, y=165) # 显⽰
# 按键显⽰,打开串⼝
self.button_OK = tkinter.Button(self.mainwin, text="打开串⼝",
command=self.button_OK_click, font = ("宋体",13),
width = 10,height = 1)
self.button_OK.place(x = 5,y = 210) # 显⽰控件
# 关闭串⼝
self.button_Cancel = tkinter.Button(self.mainwin, text="关闭串⼝", # 显⽰⽂本command=self.button_Cancel_click, font = ("宋体",13),
width=10, height=1)
self.button_Cancel.place(x = 120,y = 210) # 显⽰控件
# 清除发送数据
self.button_Cancel = tkinter.Button(self.mainwin, text="清除发送数据", # 显⽰⽂本command=self.button_clcSend_click, font=("宋体", 13),
width=13, height=1)
self.button_Cancel.place(x=400, y=2) # 显⽰控件
# 清除接收数据
self.button_Cancel = tkinter.Button(self.mainwin, text="清除接收数据", # 显⽰⽂本command=self.button_clcRece_click, font=("宋体", 13),
width=13, height=1)
self.button_Cancel.place(x=400, y=197) # 显⽰控件
# 发送按键
self.button_Send = tkinter.Button(self.mainwin, text="发送", # 显⽰⽂本command=self.button_Send_click, font=("宋体", 13),
width=6, height=1)
self.button_Send.place(x=5, y=255) # 显⽰控件
# 接收按键
self.button_Send = tkinter.Button(self.mainwin, text="接收", # 显⽰⽂本command=self.button_Rece_click, font=("宋体", 13),
width=6, height=1)
self.button_Send.place(x=5, y=310) # 显⽰控件
# 显⽰框
# 实现记事本的功能组件
self.SendDataView = tkinter.Text(self.mainwin,width = 40,height = 9,
font = ("宋体",13)) # text实际上是⼀个⽂本编辑器
python怎么读取串口数据self.SendDataView.place(x = 230,y = 35) # 显⽰
self.ReceDataView = tkinter.Text(self.mainwin, width=40, height=9,
font=("宋体", 13)) # text实际上是⼀个⽂本编辑器
self.ReceDataView.place(x=230, y=230) # 显⽰
# 发送的内容
test_str = tkinter.StringVar(value="Hello")
# 获取⽂件路径
test_str = tkinter.StringVar(value="Hello")
# 获取界⾯的参数
self.band = ()
self.check = ()
self.data = ()
self.stop = ()
print("波特率:"+self.band)
# 处理串⼝值
self.port_list = _port()
port_str_list = [] # ⽤来存储切割好的串⼝号
for i in range(len(self.port_list)):
# 将串⼝号切割出来
lines = str(self.port_list[i])
str_list = lines.split(" ")
port_str_list.append(str_list[0])
selfbobox_port["value"] = port_str_list
selfbobox_port.current(0) # 默认选中第0个
def show(self):
self.mainwin.mainloop()
def button_OK_click(self):
'''
@ 串⼝打开函数
:return:
'''
if self.port == None or self.port.isOpen() == False:
print("打开串⼝成功")
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论