2

我想通过串口编写通信接口。(使用 Qt)

我有 QSerialPort 类,它提供了使用串行端口的接口。我从 QSerialPort 类继承了 QMySerialPort,它为配置端口添加了一些功能和对话框窗口。

现在我想编写 2 个协议类:第一 - 低层类、sendPacket、parseData 方法等。第二 - 高层:setDeviceID、getDeviceID、onPayload 等。

我该怎么做?首先想到的是创建一些 QSerialInterface 元类,其中将包括 QMySerialPort 的对象和 2 个协议层类。我应该在它们之间建立一些联系。

如:

协议类: void setPort(QSerialPort *port) { m_port = port; }

sendPacket 方法: m_port->send(local_data);

但我认为这种方法很糟糕。你有什么想法?也许我应该在这里使用设计模式?

4

1 回答 1

2

也许您应该缩小问题的范围以获得更有用的答案。也就是说,有几件事我想指出。

  • 尝试将 UI 代码与业务逻辑分开。更具体地说,配置对话框的代码在QMySerialPort.
  • 根据您要添加的功能类型QSerialPort,请记住,您可以QSerialPort通过组合而不是继承来使用,并且在许多情况下(如果不是大多数情况下)前者更可取。
  • 一般来说,尽量将每个接口/类的职责定义得尽可能狭窄和集中。解析数据应该在与发送/接收单个数据包不同的接口中进行。通过这种方式,您可以替换不同的通信介质,同时保持整体协议和处理它的对象不变。
  • setPort方法还可以,尽管我个人会将port其作为参数传递给构造函数。
于 2012-05-05T16:06:50.753 回答