#pragma once // C runtime header #include #include #include #include #include // base header #include "base/base.h" #include "serial_port.h" // duilib #include "duilib/UIlib.h" #include "lua_wraper.h" #include "global.h" #include "utils.h" #include "modbus.h" #include "modbus-rtu.h" #include "modbus.h" #define MODBUS_LUA_SCRIPT "modbus_script.lua" class ModbusMasterForm : public ui::ChildBox, LuaBindInterface { public: ModbusMasterForm(ui::Window* window, std::wstring name, uint32_t baurate, UINT portnum, uint8_t data_bits, uint8_t stop_bits, uint8_t verify, uint8_t flow_control); ~ModbusMasterForm(); void ShowDataInEdit(const char*) override; void OnUpdateUart(); LuaDelegate* LuaVM(); /// 重写父类方法,提供个性化功能,请参考父类声明 virtual void Init() override; void UpdateRecvEdit(); UINT m_portnum; std::wstring m_name; uint32_t m_baurate; uint8_t m_data_bits; uint8_t m_stop_bits; uint8_t m_verify; uint8_t m_flow_contro; bool m_runing; std::thread* m_thread_recv; wstring m_show_recv; ui::Label* m_label_1; ui::RichEdit* m_rich_edit_1; ui::Button* m_button_1; ui::RichEdit* m_rich_edit_2; ui::RichEdit* m_rich_edit_3; HWND m_hwnd; LuaDelegate* mLua; std::string mLuaScript; std::ifstream mLuaFile; std::ofstream mLuaFileEdit; modbus_t* mModbus; private: virtual void HandleMessage(ui::EventArgs& msg); };