├── .editorconfig ├── .gitattributes ├── .gitignore ├── GiteeREADME.md ├── LICENSE.txt ├── Modules ├── Wu.CommTool.Modules.About │ ├── AboutModule.cs │ ├── GlobalUsings.cs │ ├── Images │ │ ├── wx.png │ │ └── zfb.png │ ├── ViewModels │ │ ├── AboutViewModel.cs │ │ └── SupportViewModel.cs │ ├── Views │ │ ├── AboutView.xaml │ │ ├── AboutView.xaml.cs │ │ ├── SupportView.xaml │ │ └── SupportView.xaml.cs │ └── Wu.CommTool.Modules.About.csproj ├── Wu.CommTool.Modules.ConvertTools │ ├── ConvertToolsModule.cs │ ├── Enums │ │ └── TimestampUnit.cs │ ├── GlobalUsings.cs │ ├── Models │ │ └── ValueCvt.cs │ ├── ViewModels │ │ ├── ConvertToolsViewModel.cs │ │ ├── DesignViewModels │ │ │ ├── ConvertToolsDesignViewModel.cs │ │ │ ├── TimestampDesignViewModel.cs │ │ │ └── ValueConvertDesignViewModel.cs │ │ ├── TimestampConvertViewModel.cs │ │ └── ValueConvertViewModel.cs │ ├── Views │ │ ├── ConvertToolsView.xaml │ │ ├── ConvertToolsView.xaml.cs │ │ ├── TimestampConvertView.xaml │ │ ├── TimestampConvertView.xaml.cs │ │ ├── ValueConvertView.xaml │ │ └── ValueConvertView.xaml.cs │ └── Wu.CommTool.Modules.ConvertTools.csproj ├── Wu.CommTool.Modules.JsonTool │ ├── Enums │ │ └── JNodeType.cs │ ├── GlobalUsings.cs │ ├── JsonToolModule.cs │ ├── Models │ │ ├── JsonHeaderLogic.cs │ │ └── JsonNode.cs │ ├── ViewModels │ │ ├── Designs │ │ │ ├── JsonDataDesignViewModel.cs │ │ │ └── JsonToolDesignViewModel.cs │ │ ├── JsonDataViewModel.cs │ │ └── JsonToolViewModel.cs │ ├── Views │ │ ├── JsonDataView.xaml │ │ ├── JsonDataView.xaml.cs │ │ ├── JsonToolView.xaml │ │ └── JsonToolView.xaml.cs │ └── Wu.CommTool.Modules.JsonTool.csproj ├── Wu.CommTool.Modules.Message │ ├── GlobalUsings.cs │ ├── MessageModule.cs │ ├── ViewModels │ │ ├── Designs │ │ │ └── MsgDesignViewModel.cs │ │ └── MsgViewModel.cs │ ├── Views │ │ ├── MsgView.xaml │ │ └── MsgView.xaml.cs │ └── Wu.CommTool.Modules.Message.csproj ├── Wu.CommTool.Modules.ModbusAscii │ ├── GlobalUsings.cs │ ├── ModbusAsciiModule.cs │ ├── ViewModels │ │ └── ModbusAsciiViewModel.cs │ ├── Views │ │ ├── ModbusAsciiView.xaml │ │ └── ModbusAsciiView.xaml.cs │ └── Wu.CommTool.Modules.ModbusAscii.csproj ├── Wu.CommTool.Modules.ModbusRtu │ ├── Eunms │ │ ├── BaudRate.cs │ │ ├── CrcMode.cs │ │ ├── DeviceState.cs │ │ ├── ModbusRtuErrorCode.cs │ │ ├── ModbusRtuFrameType.cs │ │ ├── ModbusRtuFunctionCode.cs │ │ ├── ModbusRtuMessageType.cs │ │ ├── Parity.cs │ │ └── StopBits.cs │ ├── GlobalUsings.cs │ ├── Images │ │ ├── En.png │ │ ├── Kun.png │ │ └── Ww.png │ ├── ModbusRtuModels │ │ └── ModbusRtuFrameCreator.cs │ ├── ModbusRtuModule.cs │ ├── Models │ │ ├── ComConfig.cs │ │ ├── ComPort.cs │ │ ├── ConfigFile.cs │ │ ├── CustomFrame.cs │ │ ├── DataMonitorConfig.cs │ │ ├── MessageSubContent.cs │ │ ├── ModbusRtuAutoResponseData.cs │ │ ├── ModbusRtuData.cs │ │ ├── ModbusRtuDevice.cs │ │ ├── ModbusRtuFrame.cs │ │ ├── ModbusRtuMessageData.cs │ │ ├── ModbusRtuModel.cs │ │ ├── MrtuData.cs │ │ ├── MrtuDevice.cs │ │ ├── MrtuDeviceManager.cs │ │ ├── MrtuSerialPort.cs │ │ ├── MrtuSlave.cs │ │ └── RegisterValue.cs │ ├── Resources │ │ └── ModbusRtuResources.xaml │ ├── ViewModels │ │ ├── AutoResponseViewModel.cs │ │ ├── CustomFrameViewModel.cs │ │ ├── DataMonitorViewModel.cs │ │ ├── DesignViewModels │ │ │ ├── AutoResponseDesignViewModel.cs │ │ │ ├── CustomFrameDesignViewModel.cs │ │ │ ├── DataMonitorDesignViewModel.cs │ │ │ ├── ModbusRtuDesignViewModel.cs │ │ │ ├── MrtuDeviceMonitorDesignViewModel.cs │ │ │ └── SearchDeviceDesignViewModel.cs │ │ ├── DialogViewModels │ │ │ ├── AnalyzeFrameViewModel.cs │ │ │ ├── DialogDesignViewModels │ │ │ │ ├── AnalyzeFrameDesignViewModel.cs │ │ │ │ ├── EditFrameDesignViewModel.cs │ │ │ │ ├── ModbusRtuAutoResponseDataEditDesignViewModel.cs │ │ │ │ ├── MrtuDeviceEditDesignViewModel.cs │ │ │ │ ├── MrtuDeviceLogDesignViewModel.cs │ │ │ │ └── MrtuDeviceManagerLogDesignViewModel.cs │ │ │ ├── EditFrameViewModel.cs │ │ │ ├── ModbusRtuAutoResponseDataEditViewModel.cs │ │ │ ├── MrtuDataEditViewModel.cs │ │ │ ├── MrtuDeviceEditViewModel.cs │ │ │ ├── MrtuDeviceLogViewModel.cs │ │ │ └── MrtuDeviceManagerLogViewModel.cs │ │ ├── ModbusRtuViewModel.cs │ │ ├── MrtuDeviceMonitorViewModel.cs │ │ └── SearchDeviceViewModel.cs │ ├── Views │ │ ├── AutoResponseView.xaml │ │ ├── AutoResponseView.xaml.cs │ │ ├── CustomFrameView.xaml │ │ ├── CustomFrameView.xaml.cs │ │ ├── DataMonitorView.xaml │ │ ├── DataMonitorView.xaml.cs │ │ ├── DialogViews │ │ │ ├── AnalyzeFrameView.xaml │ │ │ ├── AnalyzeFrameView.xaml.cs │ │ │ ├── ConfigMrtuDeviceView.xaml │ │ │ ├── ConfigMrtuDeviceView.xaml.cs │ │ │ ├── EditFrameView.xaml │ │ │ ├── EditFrameView.xaml.cs │ │ │ ├── ModbusRtuAutoResponseDataEditView.xaml │ │ │ ├── ModbusRtuAutoResponseDataEditView.xaml.cs │ │ │ ├── MrtuDataEditView.xaml │ │ │ ├── MrtuDataEditView.xaml.cs │ │ │ ├── MrtuDeviceEditView.xaml │ │ │ ├── MrtuDeviceEditView.xaml.cs │ │ │ ├── MrtuDeviceLogView.xaml │ │ │ ├── MrtuDeviceLogView.xaml.cs │ │ │ ├── MrtuDeviceManagerLogView.xaml │ │ │ ├── MrtuDeviceManagerLogView.xaml.cs │ │ │ ├── MrtuSerialPortsView.xaml │ │ │ └── MrtuSerialPortsView.xaml.cs │ │ ├── ModbusRtuView.xaml │ │ ├── ModbusRtuView.xaml.cs │ │ ├── MrtuDeviceMonitorView.xaml │ │ ├── MrtuDeviceMonitorView.xaml.cs │ │ ├── SearchDeviceView.xaml │ │ └── SearchDeviceView.xaml.cs │ └── Wu.CommTool.Modules.ModbusRtu.csproj ├── Wu.CommTool.Modules.ModbusTcp │ ├── AssemblyInfo.cs │ ├── Enums │ │ ├── MtcpFrameType.cs │ │ ├── MtcpFunctionCode.cs │ │ └── MtcpMessageType.cs │ ├── Events │ │ └── WuTcpClientEventArgs.cs │ ├── GlobalUsings.cs │ ├── Interfaces │ │ └── ITest.cs │ ├── ModbusTcpModule.cs │ ├── Models │ │ ├── ModbusTcpClient.cs │ │ ├── MtcpCustomFrame.cs │ │ ├── MtcpData.cs │ │ ├── MtcpDevice.cs │ │ ├── MtcpDeviceManager.cs │ │ ├── MtcpFrame.cs │ │ ├── MtcpMaster.cs │ │ ├── MtcpMessageData.cs │ │ ├── MtcpSubMessageData.cs │ │ ├── MtcpTransaction.cs │ │ └── TimeLimitedList.cs │ ├── ViewModels │ │ ├── DesignViewModels │ │ │ ├── ModbusTcpCustomFrameDesignViewModel.cs │ │ │ ├── ModbusTcpDesignViewModel.cs │ │ │ ├── ModbusTcpMasterDesignViewModel.cs │ │ │ └── MtcpDeviceMonitorDesignViewModel.cs │ │ ├── DialogViewModels │ │ │ ├── AnalyzeMtcpFrameViewModel.cs │ │ │ ├── DialogDesignViewModels │ │ │ │ ├── AnalyzeMtcpFrameDesignViewModel.cs │ │ │ │ ├── MtcpDeviceEditDesignViewModel.cs │ │ │ │ └── MtcpLogDesignViewModel.cs │ │ │ ├── MtcpDeviceEditViewModel.cs │ │ │ └── MtcpLogViewModel.cs │ │ ├── ModbusTcpCustomFrameViewModel.cs │ │ ├── ModbusTcpMasterViewModel.cs │ │ ├── ModbusTcpViewModel.cs │ │ └── MtcpDeviceMonitorViewModel.cs │ ├── Views │ │ ├── DialogViews │ │ │ ├── AnalyzeMtcpFrameView.xaml │ │ │ ├── AnalyzeMtcpFrameView.xaml.cs │ │ │ ├── MtcpDeviceEditView.xaml │ │ │ ├── MtcpDeviceEditView.xaml.cs │ │ │ ├── MtcpLogView.xaml │ │ │ └── MtcpLogView.xaml.cs │ │ ├── ModbusTcpCustomFrameView.xaml │ │ ├── ModbusTcpCustomFrameView.xaml.cs │ │ ├── ModbusTcpDataMonitorView.xaml │ │ ├── ModbusTcpDataMonitorView.xaml.cs │ │ ├── ModbusTcpMasterView.xaml │ │ ├── ModbusTcpMasterView.xaml.cs │ │ ├── ModbusTcpSlaveView.xaml │ │ ├── ModbusTcpSlaveView.xaml.cs │ │ ├── ModbusTcpView.xaml │ │ ├── ModbusTcpView.xaml.cs │ │ ├── MtcpDeviceMonitorView.xaml │ │ └── MtcpDeviceMonitorView.xaml.cs │ └── Wu.CommTool.Modules.ModbusTcp.csproj ├── Wu.CommTool.Modules.MqttClient │ ├── GlobalUsings.cs │ ├── Models │ │ ├── ConfigFile.cs │ │ ├── MqttClientConfig.cs │ │ └── MqttTopic.cs │ ├── MqttClientModule.cs │ ├── ViewModels │ │ ├── DesignViewModels │ │ │ └── MqttClientDesignViewModel.cs │ │ └── MqttClientViewModel.cs │ ├── Views │ │ ├── MqttClientView.xaml │ │ └── MqttClientView.xaml.cs │ └── Wu.CommTool.Modules.MqttClient.csproj ├── Wu.CommTool.Modules.MqttServer │ ├── GlobalUsings.cs │ ├── Models │ │ ├── AuthorizedUser.cs │ │ ├── MqttServerConfig.cs │ │ ├── MqttSubedTopic.cs │ │ └── MqttUser.cs │ ├── MqttServerModule.cs │ ├── ViewModels │ │ ├── DesignViewModels │ │ │ └── MqttServerDesignViewModel.cs │ │ └── MqttServerViewModel.cs │ ├── Views │ │ ├── MqttServerView.xaml │ │ └── MqttServerView.xaml.cs │ └── Wu.CommTool.Modules.MqttServer.csproj ├── Wu.CommTool.Modules.NetworkTool │ ├── GlobalUsings.cs │ ├── Models │ │ ├── ExecuteCmdResult.cs │ │ ├── Ipv4.cs │ │ ├── NetworkCard.cs │ │ └── NetworkCardConfig.cs │ ├── NetworkToolModule.cs │ ├── ViewModels │ │ ├── DesignViewModels │ │ │ └── NetworkToolDesignViewModel.cs │ │ └── NetworkToolViewModel.cs │ ├── Views │ │ ├── NetworkToolView.xaml │ │ └── NetworkToolView.xaml.cs │ └── Wu.CommTool.Modules.NetworkTool.csproj ├── Wu.CommTool.Modules.TcpClient │ ├── GlobalUsings.cs │ ├── Models │ │ └── TcpClientModel.cs │ ├── TcpClientModule.cs │ ├── ViewModels │ │ ├── DesignViewModels │ │ │ └── TcpClientDesignViewModel.cs │ │ └── TcpClientViewModel.cs │ ├── Views │ │ ├── TcpClientView.xaml │ │ └── TcpClientView.xaml.cs │ └── Wu.CommTool.Modules.TcpClient.csproj └── Wu.CommTool.Modules.TcpServer │ ├── GlobalUsings.cs │ ├── Models │ └── TcpServerModel.cs │ ├── TcpServerModule.cs │ ├── ViewModels │ ├── DesignViewModels │ │ └── TcpServerDesignViewModel.cs │ └── TcpServerViewModel.cs │ ├── Views │ ├── TcpServerView.xaml │ └── TcpServerView.xaml.cs │ └── Wu.CommTool.Modules.TcpServer.csproj ├── README.md ├── Test ├── ModbusRtuFrameTest.cs ├── Test.csproj ├── Test_ModbusRtuData.cs ├── UnitTest1.cs └── Usings.cs ├── Wu.CommTool.Core ├── AppInfo.cs ├── AssemblyInfo.cs ├── Behavior │ └── AutoSelectWhenAnyChildGetsFocus.cs ├── Common │ ├── ModbusUtils.cs │ └── Utils.cs ├── Converters │ └── Null2Collapsed.cs ├── Enums │ ├── Enable.cs │ ├── MessageType.cs │ ├── Modbus │ │ ├── DataType.cs │ │ ├── DeviceState.cs │ │ ├── ModbusByteOrder.cs │ │ ├── ModbusDataType.cs │ │ ├── MruDataType.cs │ │ └── RegisterType.cs │ ├── Mqtt │ │ ├── MqttPayloadType.cs │ │ └── QosLevel.cs │ └── Tcp │ │ └── TcpDataType.cs ├── Extensions │ ├── ArrayExtension.cs │ ├── HcGrowlExtensions.cs │ └── MathExtension.cs ├── GlobalUsings.cs ├── Models │ ├── ComPort.cs │ ├── MessageData.cs │ └── MqttMessageData.cs ├── PrismRegionNames.cs ├── System │ └── Range.cs ├── Views │ ├── TemplateWindow.xaml │ └── TemplateWindow.xaml.cs └── Wu.CommTool.Core.csproj ├── Wu.CommTool.DynamicTheme.Core ├── ThemeManager.cs ├── ThemeProps.cs └── Wu.CommTool.DynamicTheme.Core.csproj ├── Wu.CommTool.DynamicTheme.Resources ├── DarkTheme.xaml ├── LightTheme.xaml └── Wu.CommTool.DynamicTheme.Resources.csproj ├── Wu.CommTool.sln ├── Wu.CommTool ├── App.xaml ├── App.xaml.cs ├── Autoupdater │ └── Wu.CommTool.AutoUpdater.xml ├── Common │ ├── Log.cs │ └── Utils.cs ├── Configs │ ├── Log4netConfig │ │ └── log4net.config │ ├── ModbusRtuAutoResponseConfig │ │ ├── Default.jsonARC │ │ └── Test.jsonARC │ ├── ModbusRtuConfig │ │ ├── 正泰DTSU666.jsonDMC │ │ └── 西门子MAG6000流量计.jsonDMC │ ├── MqttClientConfig │ │ └── Default.jsonMCC │ ├── MqttServerConfig │ │ └── Default.jsonMSC │ └── NetworkCardConfig │ │ └── Default.jsonNCC ├── Controls │ ├── ProtocolTabControl.xaml │ ├── ProtocolTabControl.xaml.cs │ ├── ValidationRules │ │ └── IPRangeValidationRule.cs │ ├── WuIpBox.xaml │ └── WuIpBox.xaml.cs ├── GlobalUsings.cs ├── Images │ ├── AI.png │ ├── About │ │ ├── ModbusRtu搜索设备中.png │ │ ├── ModbusRtu搜索设备中old.png │ │ ├── ModbusRtu搜索设备设置.png │ │ ├── ModbusRtu数据监控.png │ │ ├── ModbusRtu数据监控设置.png │ │ ├── ModbusRtu自动应答.png │ │ ├── ModbusRtu自定义帧.png │ │ ├── ModbusRtu解析数据帧.png │ │ ├── ModbusTcp帧解析.png │ │ ├── ModbusTcp自定义帧.png │ │ ├── Mqtt客户端.png │ │ ├── Mqtt服务器.png │ │ ├── Mqtt服务器查看格式化Json.png │ │ └── 值转换.png │ ├── En.png │ ├── GKD.png │ ├── KU.png │ ├── Kun.png │ ├── Logo.png │ ├── Wu.png │ ├── Ww.png │ ├── XX.png │ └── logo.ico ├── Models │ ├── AppConfig.cs │ ├── CustomRollingFileAppender.cs │ └── MenuBar.cs ├── ResourceDictonarys │ ├── FormDictionary.xaml │ ├── GlobalDictionary.xaml │ ├── ListDictionary.xaml │ └── ToggleButtonStyles.xaml ├── ViewModels │ ├── AutoUpdaterViewModel.cs │ ├── DesignViewModels │ │ ├── MainWindowDesignViewModel.cs │ │ └── MsgDesignViewModel.cs │ ├── MainWindowViewModel.cs │ └── MsgViewModel.cs ├── Views │ ├── AutoUpdaterView.xaml │ ├── AutoUpdaterView.xaml.cs │ ├── MainWindow.xaml │ ├── MainWindow.xaml.cs │ ├── MsgView.xaml │ ├── MsgView.xaml.cs │ ├── ProgressView.xaml │ └── ProgressView.xaml.cs └── Wu.CommTool.csproj └── 参考资料 └── GBT Modbus协议.pdf /.editorconfig: -------------------------------------------------------------------------------- 1 | [*.cs] 2 | 3 | # CS8618: 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。 4 | dotnet_diagnostic.CS8618.severity = silent 5 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /GiteeREADME.md: -------------------------------------------------------------------------------- 1 | # 🌟Wu通讯调试工具 2 | 3 | ## ✨软件特色 4 | - 🌈支持ModbusRtu、Mqtt服务器、Mqtt客户端 5 | - 🎨界面色彩丰富 6 | - 🍭ModbusRtu自动解析数据帧 7 | - 🔖智能防粘包,速度快也能解析(有无法校验的帧会出错) 8 | 9 | ## 🌈功能介绍 10 | 1. ☀️Modbus Rtu 11 | - 🌻自动格式化解析和验证数据帧 12 | - 🌵自定义帧 支持自动校验 13 | - 🍄搜索设备 可设置多种组合,自动搜索设备 14 | - 🌴数据监控 可设置字节序、数据类型等,支持读取与写入 15 | - 🌱自动应答 16 | 2. 🌷Mqtt Server 17 | - 🌼在本地开启Mqtt服务器供客户端连接测试 18 | - 🌾右键消息可对Json格式的数据进行格式化查看 19 | 3. ⛅Mqtt Client 20 | - 🐅可开启Mqtt客户端连接Mqtt服务器 21 | - 🐇提供订阅管理, 可订阅与取消订阅 22 | - 🐳右键消息可对Json格式的数据进行格式化查看 23 | 4. 🎄Json格式化查看 24 | 25 | ## 🌊Modbus Rtu 26 | ### 🐬Modbus Rtu 自定义帧 27 | ![image](https://gitee.com/Monika551/Wu.CommTool/raw/master/Wu.CommTool/Images/About/ModbusRtu自定义帧.png) 28 | ![image](https://gitee.com/Monika551/Wu.CommTool/raw/master/Wu.CommTool/Images/About/ModbusRtu解析数据帧.png) 29 | 30 | ### 🔎Modbus Rtu 搜索设备 31 | 参数设置, 可选择多个波特率与校验方式 32 | ![image](https://gitee.com/Monika551/Wu.CommTool/raw/master/Wu.CommTool/Images/About/ModbusRtu搜索设备设置.png) 33 | 搜索到的设备将在右侧显示 34 | ![image](https://gitee.com/Monika551/Wu.CommTool/raw/master/Wu.CommTool/Images/About/ModbusRtu搜索设备中.png) 35 | 36 | ### 🐏Modbus Rtu 数据监控 37 | 数据监控设置,可导出配置,方便下次快捷导入。 38 | ![image](https://gitee.com/Monika551/Wu.CommTool/raw/master/Wu.CommTool/Images/About/ModbusRtu数据监控设置.png) 39 | 40 | 数据监控可设置数据类型,倍率等,若值不正确考虑修改**字节序**。 支持读写的地址可使用写入功能。 41 | ![image](https://gitee.com/Monika551/Wu.CommTool/raw/master/Wu.CommTool/Images/About/ModbusRtu数据监控.png) 42 | 43 | ### 🐙Modbus Rtu 自动应答 44 | 设置好匹配模板和应答模板,接收到数据与匹配模板相同时将自动发送应答模板 45 | ![image](https://gitee.com/Monika551/Wu.CommTool/raw/master/Wu.CommTool/Images/About/ModbusRtu自动应答.png) 46 | 47 | ## 🐲Modbus TCP 48 | ### 🐇Modbus TCP 自定义帧 49 | ![image](https://gitee.com/Monika551/Wu.CommTool/raw/master/Wu.CommTool/Images/About/ModbusTcp自定义帧.png) 50 | ### 🐅Modbus TCP 帧解析 51 | ![image](https://gitee.com/Monika551/Wu.CommTool/raw/master/Wu.CommTool/Images/About/ModbusTcp帧解析.png) 52 | 53 | ## 🌻Mqtt Server 54 | ![image](https://gitee.com/Monika551/Wu.CommTool/raw/master/Wu.CommTool/Images/About/Mqtt服务器.png) 55 | 56 | 右键消息可查看格式化Json 57 | ![image](https://gitee.com/Monika551/Wu.CommTool/raw/master/Wu.CommTool/Images/About/Mqtt服务器查看格式化Json.png) 58 | 59 | ## 🍁Mqtt Client 60 | ![image](https://gitee.com/Monika551/Wu.CommTool/raw/master/Wu.CommTool/Images/About/Mqtt客户端.png) 61 | 62 | ## 🌞转换工具 63 | ![image](https://gitee.com/Monika551/Wu.CommTool/raw/master/Wu.CommTool/Images/About/值转换.png) 64 | 65 | ## 📦如何下载 66 | - 仅支持windows系统, 需安装.NET 6 67 | - 进入 [Release](https://github.com/Monika1313/Wu.CommTool/releases) 页面下载,下载WuCommTool.zip 68 | 69 | ## ⭐联系作者 70 | - QQ:961501261 71 | - QQ群: 746533921 72 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.About/AboutModule.cs: -------------------------------------------------------------------------------- 1 | namespace Wu.CommTool.Modules.About; 2 | 3 | public class AboutModule : IModule 4 | { 5 | public void OnInitialized(IContainerProvider containerProvider) 6 | { 7 | 8 | } 9 | 10 | public void RegisterTypes(IContainerRegistry containerRegistry) 11 | { 12 | containerRegistry.RegisterForNavigation(); //注册页面 13 | containerRegistry.RegisterForNavigation(); //注册页面 14 | } 15 | } -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.About/GlobalUsings.cs: -------------------------------------------------------------------------------- 1 | global using CommunityToolkit.Mvvm.ComponentModel; 2 | global using Prism.Ioc; 3 | global using Prism.Modularity; 4 | global using System; 5 | global using System.Windows.Controls; 6 | global using Wu.CommTool.Modules.About.ViewModels; 7 | global using Wu.CommTool.Modules.About.Views; 8 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.About/Images/wx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Monika1313/Wu.CommTool/f21d87ef660220bf096242734bf4f8e2e78ae13c/Modules/Wu.CommTool.Modules.About/Images/wx.png -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.About/Images/zfb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Monika1313/Wu.CommTool/f21d87ef660220bf096242734bf4f8e2e78ae13c/Modules/Wu.CommTool.Modules.About/Images/zfb.png -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.About/ViewModels/AboutViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace Wu.CommTool.Modules.About.ViewModels; 2 | 3 | public partial class AboutViewModel : ObservableObject 4 | { 5 | public AboutViewModel() 6 | { 7 | 8 | } 9 | 10 | /// 11 | /// 打开Github链接 该方法不会被杀毒软件拦截 12 | /// 13 | private void ShowGitHub() 14 | { 15 | try 16 | { 17 | if (@"https://github.com/Monika1313/Wu.CommTool" is string link) 18 | { 19 | link = link.Replace("&", "^&"); 20 | System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo("cmd", $"/c start {link}") 21 | { 22 | UseShellExecute = false, 23 | CreateNoWindow = true 24 | }); 25 | } 26 | 27 | //System.Diagnostics.Process.Start("explorer.exe", @"https://github.com/Monika1313/Wu.CommTool");//使用资源管理器打开会被拦截 28 | } 29 | catch (Exception) 30 | { 31 | 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.About/Views/AboutView.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace Wu.CommTool.Modules.About.Views; 2 | 3 | public partial class AboutView : UserControl 4 | { 5 | public AboutView() 6 | { 7 | InitializeComponent(); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.About/Views/SupportView.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Navigation; 14 | using System.Windows.Shapes; 15 | 16 | namespace Wu.CommTool.Modules.About.Views 17 | { 18 | /// 19 | /// SupportView.xaml 的交互逻辑 20 | /// 21 | public partial class SupportView : UserControl 22 | { 23 | public SupportView() 24 | { 25 | InitializeComponent(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.About/Wu.CommTool.Modules.About.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net6.0-windows;net7.0-windows;net48 4 | latestMajor 5 | true 6 | 7 | 8 | portable 9 | 10 | 11 | portable 12 | 13 | 14 | portable 15 | 16 | 17 | none 18 | 19 | 20 | none 21 | 22 | 23 | none 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.ConvertTools/ConvertToolsModule.cs: -------------------------------------------------------------------------------- 1 | namespace Wu.CommTool.Modules.ConvertTools; 2 | 3 | public class ConvertToolsModule : IModule 4 | { 5 | private readonly IRegionManager regionManager; 6 | 7 | public ConvertToolsModule(IRegionManager regionManager) 8 | { 9 | this.regionManager = regionManager; 10 | } 11 | 12 | /// 13 | /// 模块初始化完成事件 14 | /// 15 | /// 16 | public void OnInitialized(IContainerProvider containerProvider) 17 | { 18 | 19 | } 20 | 21 | public void RegisterTypes(IContainerRegistry containerRegistry) 22 | { 23 | containerRegistry.RegisterForNavigation(); //注册转换工具主界面 24 | containerRegistry.RegisterForNavigation(); //注册时间戳转换页面 25 | containerRegistry.RegisterForNavigation(); //注册值转换页面 26 | } 27 | } -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.ConvertTools/Enums/TimestampUnit.cs: -------------------------------------------------------------------------------- 1 | namespace Wu.CommTool.Modules.ConvertTools.Enums; 2 | 3 | /// 4 | /// 时间戳单位 5 | /// 6 | public enum TimestampUnit 7 | { 8 | 秒, 9 | 毫秒 10 | } 11 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.ConvertTools/GlobalUsings.cs: -------------------------------------------------------------------------------- 1 | global using CommunityToolkit.Mvvm.ComponentModel; 2 | global using CommunityToolkit.Mvvm.Input; 3 | global using MaterialDesignThemes.Wpf; 4 | global using Prism.Commands; 5 | global using Prism.Ioc; 6 | global using Prism.Modularity; 7 | global using Prism.Mvvm; 8 | global using Prism.Regions; 9 | global using Prism.Services.Dialogs; 10 | global using System; 11 | global using System.Collections.ObjectModel; 12 | global using System.Timers; 13 | global using System.Windows; 14 | global using System.Windows.Controls; 15 | global using Wu.CommTool.Core; 16 | global using Wu.CommTool.Core.Enums.Modbus; 17 | global using Wu.CommTool.Core.Extensions; 18 | global using Wu.CommTool.Modules.ConvertTools.Enums; 19 | global using Wu.CommTool.Modules.ConvertTools.Models; 20 | global using Wu.CommTool.Modules.ConvertTools.ViewModels; 21 | global using Wu.CommTool.Modules.ConvertTools.Views; 22 | global using Wu.Extensions; 23 | global using Wu.ViewModels; 24 | global using Wu.Wpf.Common; 25 | global using Wu.Wpf.Models; 26 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.ConvertTools/ViewModels/DesignViewModels/ConvertToolsDesignViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace Wu.CommTool.Modules.ConvertTools.ViewModels.DesignViewModels; 2 | 3 | public class ConvertToolsDesignViewModel : ConvertToolsViewModel 4 | { 5 | private static ConvertToolsDesignViewModel _Instance = new(); 6 | public static ConvertToolsDesignViewModel Instance => _Instance ??= new(); 7 | public ConvertToolsDesignViewModel() 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.ConvertTools/ViewModels/DesignViewModels/TimestampDesignViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace Wu.CommTool.Modules.ConvertTools.ViewModels.DesignViewModels; 2 | 3 | public class TimestampConvertDesignViewModel : TimestampConvertViewModel 4 | { 5 | private static TimestampConvertDesignViewModel _Instance = new(); 6 | public static TimestampConvertDesignViewModel Instance => _Instance ??= new(); 7 | public TimestampConvertDesignViewModel() 8 | { 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.ConvertTools/ViewModels/DesignViewModels/ValueConvertDesignViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace Wu.CommTool.Modules.ConvertTools.ViewModels.DesignViewModels; 2 | 3 | public class ValueConvertDesignViewModel : ValueConvertViewModel 4 | { 5 | private static ValueConvertDesignViewModel _Instance = new(); 6 | public static ValueConvertDesignViewModel Instance => _Instance ??= new(); 7 | public ValueConvertDesignViewModel() 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.ConvertTools/ViewModels/ValueConvertViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace Wu.CommTool.Modules.ConvertTools.ViewModels; 2 | 3 | public partial class ValueConvertViewModel : NavigationViewModel 4 | { 5 | #region **************************************** 字段 **************************************** 6 | private readonly IContainerProvider provider; 7 | public string DialogHostName { get; set; } 8 | #endregion 9 | 10 | public ValueConvertViewModel() { } 11 | public ValueConvertViewModel(IContainerProvider provider) : base(provider) 12 | { 13 | this.provider = provider; 14 | } 15 | 16 | #region **************************************** 属性 **************************************** 17 | [ObservableProperty] 18 | object currentDto = new(); 19 | 20 | /// 21 | /// 值转换 22 | /// 23 | [ObservableProperty] 24 | ValueCvt valueCvt = new(); 25 | #endregion 26 | 27 | 28 | 29 | #region **************************************** 方法 **************************************** 30 | [RelayCommand] 31 | private void Execute(string obj) 32 | { 33 | switch (obj) 34 | { 35 | default: break; 36 | } 37 | } 38 | 39 | /// 40 | /// 导航至该页面触发 41 | /// 42 | /// 43 | public override void OnNavigatedTo(NavigationContext navigationContext) 44 | { 45 | 46 | } 47 | 48 | 49 | /// 50 | /// 弹窗 51 | /// 52 | private void OpenDialogView() 53 | { 54 | 55 | } 56 | 57 | #endregion 58 | } 59 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.ConvertTools/Views/ConvertToolsView.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace Wu.CommTool.Modules.ConvertTools.Views; 2 | 3 | public partial class ConvertToolsView : UserControl 4 | { 5 | public ConvertToolsView() 6 | { 7 | InitializeComponent(); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.ConvertTools/Views/TimestampConvertView.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace Wu.CommTool.Modules.ConvertTools.Views; 2 | 3 | public partial class TimestampConvertView : UserControl 4 | { 5 | public TimestampConvertView() 6 | { 7 | InitializeComponent(); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.ConvertTools/Views/ValueConvertView.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace Wu.CommTool.Modules.ConvertTools.Views; 2 | 3 | public partial class ValueConvertView : UserControl 4 | { 5 | public ValueConvertView() 6 | { 7 | InitializeComponent(); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.ConvertTools/Wu.CommTool.Modules.ConvertTools.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | net6.0-windows;net7.0-windows;net48 6 | latestMajor 7 | true 8 | enable 9 | 1685 10 | 11 | 12 | portable 13 | 14 | 15 | portable 16 | 17 | 18 | portable 19 | 20 | 21 | none 22 | 23 | 24 | none 25 | 26 | 27 | none 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.JsonTool/Enums/JNodeType.cs: -------------------------------------------------------------------------------- 1 | namespace Wu.CommTool.Modules.JsonTool.Enums; 2 | 3 | public enum JNodeType 4 | { 5 | JValue, 6 | JArray, 7 | JObject, 8 | JProperty 9 | } 10 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.JsonTool/GlobalUsings.cs: -------------------------------------------------------------------------------- 1 | global using CommunityToolkit.Mvvm.ComponentModel; 2 | global using CommunityToolkit.Mvvm.Input; 3 | global using MaterialDesignThemes.Wpf; 4 | global using Newtonsoft.Json.Linq; 5 | global using Prism.Commands; 6 | global using Prism.Ioc; 7 | global using Prism.Mvvm; 8 | global using Prism.Regions; 9 | global using Prism.Services.Dialogs; 10 | global using System; 11 | global using System.Collections.Generic; 12 | global using System.Collections.ObjectModel; 13 | global using System.Linq; 14 | global using System.Windows.Controls; 15 | global using Wu.CommTool.Core.Extensions; 16 | global using Wu.CommTool.Core.Models; 17 | global using Wu.CommTool.Modules.JsonTool.Enums; 18 | global using Wu.CommTool.Modules.JsonTool.Models; 19 | global using Wu.CommTool.Modules.JsonTool.Views; 20 | global using Wu.ViewModels; 21 | global using Wu.Wpf.Common; 22 | global using Wu.Wpf.Extensions; 23 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.JsonTool/JsonToolModule.cs: -------------------------------------------------------------------------------- 1 | using Prism.Modularity; 2 | using Wu.CommTool.Modules.JsonTool.ViewModels; 3 | 4 | namespace Wu.CommTool.Modules.JsonTool; 5 | 6 | public class JsonToolModule : IModule 7 | { 8 | public void OnInitialized(IContainerProvider containerProvider) 9 | { 10 | 11 | } 12 | 13 | public void RegisterTypes(IContainerRegistry containerRegistry) 14 | { 15 | containerRegistry.RegisterForNavigation(); //Json工具界面 16 | containerRegistry.RegisterForNavigation(); 17 | } 18 | } -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.JsonTool/ViewModels/Designs/JsonDataDesignViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace Wu.CommTool.Modules.JsonTool.ViewModels.Designs; 2 | 3 | public class JsonDataDesignViewModel : JsonDataViewModel 4 | { 5 | private static JsonDataDesignViewModel _Instance = new(); 6 | public static JsonDataDesignViewModel Instance => _Instance ??= new(); 7 | public JsonDataDesignViewModel() 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.JsonTool/ViewModels/Designs/JsonToolDesignViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace Wu.CommTool.Modules.JsonTool.ViewModels.Designs; 2 | 3 | public class JsonToolDesignViewModel : JsonToolViewModel 4 | { 5 | private static JsonToolDesignViewModel _Instance; 6 | public static JsonToolDesignViewModel Instance => _Instance ??= new JsonToolDesignViewModel(); 7 | public JsonToolDesignViewModel() 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.JsonTool/Views/JsonDataView.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace Wu.CommTool.Modules.JsonTool.Views; 2 | 3 | public partial class JsonDataView : UserControl 4 | { 5 | public JsonDataView() 6 | { 7 | InitializeComponent(); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.JsonTool/Views/JsonToolView.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace Wu.CommTool.Modules.JsonTool.Views; 2 | 3 | public partial class JsonToolView : UserControl 4 | { 5 | public const string ViewName = nameof(JsonToolView); 6 | public JsonToolView() 7 | { 8 | InitializeComponent(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.JsonTool/Wu.CommTool.Modules.JsonTool.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net6.0-windows;net7.0-windows;net48 4 | latestMajor 5 | true 6 | 1685 7 | 8 | 9 | portable 10 | 11 | 12 | portable 13 | 14 | 15 | portable 16 | 17 | 18 | none 19 | 20 | 21 | none 22 | 23 | 24 | none 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.Message/GlobalUsings.cs: -------------------------------------------------------------------------------- 1 | global using MaterialDesignThemes.Wpf; 2 | global using Prism.Commands; 3 | global using Prism.Ioc; 4 | global using Prism.Modularity; 5 | global using Prism.Mvvm; 6 | global using Prism.Services.Dialogs; 7 | global using Wu.Wpf.Common; 8 | 9 | global using CommunityToolkit.Mvvm.ComponentModel; 10 | global using CommunityToolkit.Mvvm.Input; 11 | global using System.Windows.Controls; 12 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.Message/MessageModule.cs: -------------------------------------------------------------------------------- 1 | namespace Wu.CommTool.Modules.Message; 2 | 3 | public class MessageModule : IModule 4 | { 5 | public void OnInitialized(IContainerProvider containerProvider) 6 | { 7 | 8 | } 9 | 10 | public void RegisterTypes(IContainerRegistry containerRegistry) 11 | { 12 | 13 | } 14 | } -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.Message/ViewModels/Designs/MsgDesignViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace Wu.CommTool.Modules.Message.ViewModels.Designs; 2 | 3 | public class MsgDesignViewModel : MsgViewModel 4 | { 5 | private static MsgDesignViewModel _Instance = new(); 6 | public static MsgDesignViewModel Instance => _Instance ??= new(); 7 | public MsgDesignViewModel() 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.Message/ViewModels/MsgViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace Wu.CommTool.Modules.Message.ViewModels; 2 | 3 | public partial class MsgViewModel : ObservableObject, IDialogHostAware 4 | { 5 | [ObservableProperty] 6 | string title; 7 | 8 | /// 9 | /// 内容 10 | /// 11 | [ObservableProperty] 12 | string content; 13 | 14 | 15 | public string DialogHostName { get; set; } = "Root"; 16 | 17 | public void OnDialogOpened(IDialogParameters parameters) 18 | { 19 | //接收参数 20 | if (parameters.ContainsKey(nameof(Title))) 21 | Title = parameters.GetValue(nameof(Title)); 22 | if (parameters.ContainsKey(nameof(Content))) 23 | Content = parameters.GetValue(nameof(Content)); 24 | } 25 | 26 | /// 27 | /// 取消 28 | /// 29 | [RelayCommand] 30 | void Cancel() 31 | { 32 | //若窗口处于打开状态则关闭 33 | if (!DialogHost.IsDialogOpen(DialogHostName)) 34 | return; 35 | DialogHost.Close(DialogHostName, new DialogResult(ButtonResult.No)); 36 | } 37 | 38 | /// 39 | /// 保存 40 | /// 41 | [RelayCommand] 42 | void Save() 43 | { 44 | if (!DialogHost.IsDialogOpen(DialogHostName)) 45 | return; 46 | DialogParameters param = new DialogParameters(); 47 | //关闭窗口,并返回参数 48 | DialogHost.Close(DialogHostName, new DialogResult(ButtonResult.OK, param)); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /Modules/Wu.CommTool.Modules.Message/Views/MsgView.xaml: -------------------------------------------------------------------------------- 1 |  15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 28 | 29 | 43 | 48 |