完整的方案与示例代码,按照“命令模式 + 执行器 + 可插拔解析器”抽象通信功能,满足高效、可维护、可扩展的需求。设计要点先列出,然后给出必要的代码文件(可直接复制到项目)。
总体方案(简明)
• 抽象命令(ICommand):每个与下位机的动作为一个命令对象,包含构建请求与解析响应的逻辑(或可注入解析器)。
• 命令执行器(CommandExecutor):统一发送/接收、重试、超时、并发控制、日志钩子。负责与驱动交互并执行命令。
• 驱动实现(MainBoardDriver):提供可靠的连接、SendRawAsync(低级一写一读),以及对外暴露的 CommandExecutor 属性。
• 解析器可插拔:每个命令可使用默认解析策略,也可注入复杂解析(如调用 ReceiveDataPacketParser)。
• 界面(MainBoardForm):只与 CommandExecutor/命令 key 交互,不关心协议细节。便于增删按钮只需注册命令或替换命令实现。
优点
• 单一职责:驱动只负责连接/传输;命令负责协议;执行器负责执行策略(重试、并发、超时)。
• 易扩展:新增命令只需实现 ICommand 并注册到执行器。
• 易维护:解析逻辑集中在命令内或可复用的解析器中。
• 可测试:命令可单独单元测试(传入假的驱动)。
示例代码(关键文件,直接添加到 MainBoard 项目与 WindowsFormsTest 项目):
MainBoard\Protocol\ICommand.cs