一、思路
这个功能的实现利用serial库的write方法就可以了,添加了装饰器slot,避免出现一些不可预估的错误,槽函数都需要添加。
二、实现
@Slot()
def pushbutton_serial_send_data_slot(self):
text = self.con.ui.ui.filter_lineEdit_2.text()
time_data = (QtCore.QDateTime.currentDateTime().toString(
'yyyy/MM/dd HH:mm:ss')).encode('utf-8')
try:
if text and self.con.serial_class.serial.is_open:
print(text.encode('utf-8'))
self.con.serial_class.serial.write(text.encode('utf-8'))
self.con.data_class.text.emit(self.con.ui.ui.log_textBrowser,
"["+ time_data.decode('utf-8')+ "] 发 👉 "+ text)
if self.con.ui.ui.radioButton.isChecked():
self.send_auto_number += 1
self.con.ui.ui.label_5.setText(str(self.send_auto_number))
except Exception as error:
print(error)
2.1 主要逻辑:
1、获取发送框的输入内容(此设计当中没有做拦截,理论上是应该拦截非法字符)
2、判断串口是否打开,如果是打开的就可以发送数据,如果不是打开的就不执行
3、若发送成功,在日志显示页面显示发送的内容
2.2 绑定槽函数
con.ui.ui.send_data_pushButton.clicked.connect(self.pushbutton_serial_send_data_slot)
将上述函数绑定至发送数据的按钮上,若点击该按钮,就执行发送函数
三、总结
以上就是发送数据相关的实现方案,其实并不算很复杂,算是很简单的一个小功能了。