2

シリアルポート経由で通信インターフェースを書きたいです。(Qt を使用)

シリアルポートを操作するためのインターフェイスを提供する QSerialPort クラスがあります。QSerialPort クラスから QMySerialPort を継承し、構成ポートにいくつかの機能とダイアログ ウィンドウを追加しました。

ここで、2 つのプロトコル クラスを作成したいと思います。1 つ目 - 低層クラス、sendPacket、parseData メソッドなど。2 つ目 - 高層: setDeviceID、getDeviceID、onPayload など。

どうすればいいですか?最初に頭に浮かぶのは、QMySerialPort と 2 つのプロトコル層クラスのオブジェクトを含む QSerialInterface メタクラスを作成することです。そして、それらの間に何らかの接続を実装する必要があります。

そのような:

プロトコル クラス: 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 に答える