#ifndef MainWindow_H #define MainWindow_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "httplib.h" #include "json.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "common.h" QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QWidget { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); void set_uart_parameter(); int debug_log_printf(std::string daystime); void get_system_time(); void print_log(std::string logstr); bool deal_uart_data(std::string &szcarModel,std::string &szcarNumber); bool label_compare(std::string &label); int http_send(std::string &carriageType, std::string &carriageNumber, std::string &carriageOrder, std::string &time); void obtain_accredit(); void read_configure_file(); void write_configure_file(); void creat_menu(); void creat_action(); int compare_string(const std::string &recv_str); bool Judge_direction(); // bool Data_time(int icon); void add_order(int count); void serial_timerstart(); typedef struct _CONFIGURE_INFO_{ std::string uartName; //串口名 std::string uartBaud; //波特率 std::string ip; //web IP std::string port; //web 端口号 std::string urlPath; //web URL std::string stationTrack; //股道号 std::string configDirection; //配置的磁钢方向 }CONFIGURE_INFO_; private: CONFIGURE_INFO_ configureInfo_T; std::string szcurrentTime; //当前时间 std::string szlastTime; //上一次时间 std::string zhcarNumber = ""; bool btrainLeave; //火车离开标志 当前火车已经离开:true 没有离开:false std::vector m_veclabel; //倒车防重扫 bool baccredit; //是否获取授权 std::string accreditInformation; //授权信息 // std::string m_recvData; //接收到的数据 //std::string f_time; //第一个磁钢时间 // std::string t_tine; //第二个磁钢时间 std::string m_direction; //磁钢号存储 bool m_sendHttpSign; //发送给http标志 int m_icarriageOrder; //车节号 int m_icot; bool m_flag = false; //是否丢车节 int m_icot2=0; //丢车节计数防止丢两节 int itime = 0; bool bdir = true; //和配置方向是否相同 int m_lastCarriagrOrder = 0; int lc_carnum; //漏车的车节号 QByteArray buffer; //串口接收数据缓存区 QTimer* timer; bool judget = false; std::string c_carnum; std::string szHavdcarTime; std::vector vec_configureDir; private: void changeEvent(QEvent *event); void on_ShowMainAction(); void on_ExitAppAction(); void closeEvent(QCloseEvent *event); void get_queue_data(); void deal_str_data(const std::string &szStr); QMenu* m_pTrayMennu; //系统托盘右键菜单项 QSystemTrayIcon* m_pSystemTray; //系统托盘图标 QFile logOut; QFile logrecv; QFile logtest; std::ofstream ofswrite; //右键菜单栏选项 QAction* m_pActionShow; QAction* m_pActionQuit; QSerialPort *serial; //串口 /****************************xl*****************************/ std::queue queData; std::thread tid; std::mutex mtx_sync_; private slots: void rece_data_slots(); void on_activatedSysTrayIcon(QSystemTrayIcon::ActivationReason reason); private: Ui::MainWindow *ui; }; #endif // MainWindow_H