工作时写的数据解析工具(自用)

# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'untitled_1.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.
import sys
from PyQt5.QtWidgets import QApplication,QMainWindow, QFileDialog
from PyQt5 import QtCore, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(300, 100)
        MainWindow.setMinimumSize(QtCore.QSize(300, 100))
        MainWindow.setMaximumSize(QtCore.QSize(300, 100))
        MainWindow.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout.setObjectName("gridLayout")
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.lineEdit_lujin = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_lujin.setObjectName("lineEdit_lujin")
        self.horizontalLayout.addWidget(self.lineEdit_lujin)
        self.pushButton_lujin = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_lujin.setObjectName("pushButton_lujin")
        self.horizontalLayout.addWidget(self.pushButton_lujin)
        self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 1)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        spacerItem = QtWidgets.QSpacerItem(214, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem)
        self.comboBox_leixing = QtWidgets.QComboBox(self.centralwidget)
        self.comboBox_leixing.setObjectName("comboBox_leixing")
        self.comboBox_leixing.addItem("")
        self.comboBox_leixing.addItem("")
        self.horizontalLayout_2.addWidget(self.comboBox_leixing)
        self.pushButton_jiexi = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_jiexi.setObjectName("pushButton_jiexi")
        self.horizontalLayout_2.addWidget(self.pushButton_jiexi)
        self.gridLayout.addLayout(self.horizontalLayout_2, 1, 0, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 300, 23))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "IMDS250_原始数据解析"))
        self.pushButton_lujin.setText(_translate("MainWindow", "选择文件夹"))
        self.comboBox_leixing.setItemText(1, _translate("MainWindow", "平稳原始"))
        self.comboBox_leixing.setItemText(0, _translate("MainWindow", "失稳原始"))
        self.pushButton_jiexi.setText(_translate("MainWindow", "开始解析"))




class mainWindow (QMainWindow, Ui_MainWindow):

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.setupUi(self)
        self.sjian_dyi()


    def sjian_dyi(self):
        self.pushButton_lujin.clicked.connect(self.huoqv_dizhi)
        self.pushButton_jiexi.clicked.connect(self.yunxing)




    def yunxing(self):
        data = []
        a = self.open_data(str(self.lineEdit_lujin.text()))
        for b in a:
            data.append("%02x" % b)

        """查看块头数"""
        w = 0
        jishu = []
        for b in data:
            if b == "bb":
                if data[w + 1] == "66":
                    jishu.append(w)
            w += 1
        jishu.append(len(data))
        if self.comboBox_leixing.currentText() == "失稳原始":
            with open("SW_原始_data.txt", 'a+') as f:
                f.write("一位 二位\n")
                """分块"""
            for c in range(len(jishu) - 1):
                # print(len(data[jishu[c]:jishu[c + 1]]))
                if len(data[jishu[c]:jishu[c + 1]]) == 1015808:
                    self.data_chuli_sw(data[jishu[c]:jishu[c + 1]])
        else:
            with open("PW_原始_data.txt", 'a+') as a:
                a.write("一位横向 一位垂向 一位纵向 二位横向 二位垂向 二位纵向\n")
                """分块"""
            for c in range(len(jishu) - 1):
                # print(len(data[jishu[c]:jishu[c + 1]]))
                if len(data[jishu[c]:jishu[c + 1]]) == 1015808:
                    self.data_chuli_pw(data[jishu[c]:jishu[c + 1]])



    def open_data(self,data):
        """获取数据"""
        f = open(data, 'rb')
        data_sj = list(f.read())
        f.close()
        return data_sj


    def daxiaoduan(self,data):
        """反转大小端数据"""
        data = data[::-1]
        return data


    def data_jisuan(self,data):
        """数据计算"""
        return str(int(data[1] + data[0], 16))

    def huoqv_dizhi(self):
        """"获取地址"""
        fileName1 = QFileDialog.getOpenFileName(self, "选取文件", "./")  # 设置文件扩展名过滤,注意用双分号间隔
        self.lineEdit_lujin.setText(fileName1[0])


    def data_chuli_pw(self,data):
        """
        数据处理及存储
        """
        """去块头"""
        f = open("PW_原始_data.txt", "a+")
        data = data[32:]
        """索引分包"""
        for a in range(int(len(data) / 6156)):
            data_bao = data[a * 6156:a * 6156 + 6156]
            """去包头"""
            data_bao_qvtou = data_bao[12:]
            """计算存储"""
            for b in range(512):
                if self.data_jisuan(data_bao_qvtou[b * 12:b * 12 + 2]) != "65535" and \
                        self.data_jisuan(data_bao_qvtou[b * 12 + 2:b * 12 + 4]) != "65535" and \
                        self.data_jisuan(data_bao_qvtou[b * 12 + 4:b * 12 + 6]) != "65535" and \
                        self.data_jisuan(data_bao_qvtou[b * 12 + 6:b * 12 + 8]) != "65535" and \
                        self.data_jisuan(data_bao_qvtou[b * 12 + 8:b * 12 + 10]) != "65535" and \
                        self.data_jisuan(data_bao_qvtou[b * 12 + 10:b * 12 + 12]) != "65535":
                    f.write(self.data_jisuan(data_bao_qvtou[b * 12:b * 12 + 2]) + " ")
                    f.write(self.data_jisuan(data_bao_qvtou[b * 12 + 2:b * 12 + 4]) + " ")
                    f.write(self.data_jisuan(data_bao_qvtou[b * 12 + 4:b * 12 + 6]) + " ")
                    f.write(self.data_jisuan(data_bao_qvtou[b * 12 + 6:b * 12 + 8]) + " ")
                    f.write(self.data_jisuan(data_bao_qvtou[b * 12 + 8:b * 12 + 10]) + " ")
                    f.write(self.data_jisuan(data_bao_qvtou[b * 12 + 10:b * 12 + 12]) + "\n")
        f.close()  # 关闭这个文件
        return


    def data_chuli_sw(self,data):
        """
        数据处理及存储
        """
        """去块头"""
        f = open("SW_原始_data.txt", "a+")
        data = data[32:]
        """索引分包"""
        for a in range(int(len(data) / 1036)):
            data_bao = data[a * 1036:a * 1036 + 1036]
            """去包头"""
            data_bao_qvtou = data_bao[12:]
            """计算存储"""
            for b in range(256):
                if self.data_jisuan(data_bao_qvtou[b * 4:b * 4 + 2]) != "65535" and self.data_jisuan(data_bao_qvtou[b * 4 + 2:b * 4 + 4]) != "65535":
                    f.write(self.data_jisuan(data_bao_qvtou[b * 4:b * 4 + 2]) + " ")
                    f.write(self.data_jisuan(data_bao_qvtou[b * 4 + 2:b * 4 + 4]) + "\n")
        f.close()  # 关闭这个文件
        return

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainwindow = mainWindow()
    mainwindow.show()
    sys.exit(app.exec_())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hi-那个谁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值