python
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from UI.ui_shareMmap import Ui_ShareMServiceDlg # 导入UI类
import mmap
class QMainDialog(QDialog, Ui_ShareMServiceDlg): # 修改点(UI类)
def __init__(self, parent=None):
super().__init__(parent)
self.ui = Ui_ShareMServiceDlg() # 修改点(UI类)
self.ui.setupUi(self) # 构造UI
# 内存名称
self.targetName = 'ShareMemoryTest'
self.ui.editTagetName.setText(self.targetName)
# 内存写入值
self.shareValue = '201400027'
self.ui.editValue.setText(self.shareValue)
# 映射文件对象
self.mmap_file = None
@pyqtSlot()
def on_btnRegister_clicked(self):
print("注册")
try:
self.targetName = self.ui.editTagetName.toPlainText()
# 注册内存目标
self.mmap_file = mmap.mmap(0, 1024, access=mmap.ACCESS_WRITE, tagname=self.targetName)
self.ui.labelResult.setText('注册成功')
except Exception as e:
print(e)
self.ui.labelResult.setText('注册失败')
@pyqtSlot()
def on_btnWrite_clicked(self):
print("写入")
try:
# 从界面获取 设置的值
code_text = self.ui.editValue.toPlainText()
code_text_b = code_text.encode('utf-8')
# 写入设置的值
self.mmap_file.seek(0)
self.mmap_file.write(code_text_b)
print(code_text)
self.ui.labelResult.setText('写入成功')
except Exception as e:
print(e)
self.ui.labelResult.setText('写入失败')
@pyqtSlot()
def on_btnRead_clicked(self):
print("读取")
try:
# 读取内存中的值
self.mmap_file.seek(0)
info_str = self.mmap_file.read().translate(None, b'\x00').decode()
# 设置到界面
print(info_str)
self.ui.editValue.setText(info_str)
self.ui.labelResult.setText('读取成功')
except Exception as e:
print(e)
self.ui.labelResult.setText('读取失败')
if __name__ == '__main__':
app = QApplication(sys.argv)
main_form = QMainDialog()
main_form.show()
sys.exit(app.exec_())