# coding: GBK
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn
#清华大学:https://pypi.tuna.tsinghua.edu.cn/simple
#阿里云:http://mirrors.aliyun.com/pypi/simple/
self.send=self.pushButton_2#获取按钮控件对象
def send_handl(self):#自定义槽函数send_handl 处理具体的按下操作,比如发送数据
self.send.clicked.connect(self.send_handl)#把按钮控件按下信号绑定到槽函数send_handl()
#按下按钮执行send_handl函数
通信
我使用的是串口通信,python中通过serial库实现串口通信。
self.uart =serial.Serial(port, 9600)#串口对象构造参数 端口号(字符串),波特率(整型)
self.uart.readline()#串口读取函数
self.uart.write(data.encode())#串口写入函数
data.encode()#表示对发送的信息进行编码,编码为utf-8
data.decode()#表示对接收的信息解码
self.timer.timeout.connect(self.update)定时更新数据
self.timer.start(50)
def init(self):
win = pg.GraphicsLayoutWidget()
win.setBackground("w")
self.plot = self.widget.addPlot()
self.plot.setMouseEnabled(x=False, y=False)#禁止鼠标拖动
self.plot.showAxes(True,
showValues=(True, True, True, True),
size=20)#显示坐标轴
vb = self.plot.getViewBox()
vb.setBackgroundColor('w')#设置画布背景
self.curve = self.plot.plot(pen='black')
win.show()
def update(self):#更新数据
# a=range(0,1000,1)
if(q.full()):
#print("ok")
for i in range(0, 256, 1):
x=str(q.get())
try:
a=int(re.sub("\D","",x))
except ValueError:
print(a)
self.curve.setData(a)#把数据填入图表中
self.curve.setPos(self.ptr, 0)
self.ptr += 1
from ui_a import Ui_MainWindow#导入ui转py文件
class MyWindow(QtWidgets.QMainWindow,Ui_MainWindow):#继承父类QWidget
这个MyWindow就是我们设计功能的主类,所以需要继承PyQT和MainWindow类。以便操作他们派生的对象。
在MyWindow构造函数中,初始化父类对象和界面组件对象。
在def ini_ui(self):初始化控件
self.com=self.comboBox获取控件对象
把控件的信号绑定到槽函数comfun上,
self.com.activated.connect(self.comfun)
编写槽函数
def comfun(self):
global ser, serialPort
serialPort=self.com.currentText()#获取当前的串口号
print(serialPort)
ser.port=serialPort#设置串口对象的串口号
其他控件都差不多
发送槽函数
def sendhand(self):
global serialPort, ser
if self.pushButton.text() == '断开'and serialPort != None:
send_str=self.textEdit.toPlainText()
ser.write(send_str.encode('utf-8'))
定时器定时监控接收缓冲区
def time_out(self):
global ser, timer_value
data = ser.read_all()
txt=str(data.decode())
if (len(txt)!=0):
self.textBrowser.append(txt)
self.timer.start(timer_value)
app=QApplication(sys.argv)
timer_value=100#间隔100ms读一次串口
baudRate = 115200
ser=serial.Serial(timeout=0.5)
############
com_list=get_com_list()
if com_list!=[]:#将设备名填入到下拉框中
for i in range(len(com_list)):
w.com.addItem(com_list)
serialPort=com_list[0]#默认为第一个端口
else:
serialPort = None
w.show_dialog(str='请先打开串口')
############
#开启图形化界面
w=MyWindow()
w.show()#w->ui->show ui里有布局
#w.show_dialog("123456")
#程序进行循环等待状态
app.exec()
END
活动时间:5月18日-7月31日
奖项设置:
一等奖(1名):大疆 DJI Mini 2 SE 航拍机(¥ 2388)
二等奖(2名):京东卡500元
三等奖(2名):京东卡300元
鼓励参与奖(10名):京东卡50元
活动要求:
可以是单纯的拆解过程、也可以是单纯的DIY、也可以是拆解+改造。
点击阅读原文,参加活动!