私はC++とQtの完全な初心者です。
Qtを使用してTCP経由でさまざまなデータをブロードキャストしています。データの送受信プロセスは正常に機能しますが、受信側でのデータの解釈に問題があります。
データは、と状態を持つという共通点を持つさまざまな構造体で表されますcommandId
。残りは、エラーメッセージ、ファイル名、またはその他のものである可能性があります。このコードは自分で作成したものではなく、変更することはできません(例:共通インターフェースの定義と実装)。
typedef struct
{
uint8_t commandId;
State state;
//special data
QString errorMessage;
} Command1;
typedef struct
{
uint8_t commandId;
State state;
//special data
uint8_t amountSensors;
} Command2;
enum State {
STATID_PAUSE = 50000
STATID_RECORD = 50001
STATID_PLAY = 50002
STATID_ERROR = 50003
}
送信者は構造体を次のように変換していQByteArray
ます。
Command1 example;
example.commandId = 134;
example.state = STATID_ERROR;
char *p_Char;
p_char = reinterpret_cast<char*>(&example);
QByteArray qba(p_char, sizeof(p_char));
今、私は受信機を書かなければなりません、しかし受信機は彼が何を得るか(Command1
、Command2
または何か他のもの)を知りません。彼は、と状態を読み取ることができれば、解釈することができるでしょうcommandId
。
この時点で、次のようにcommandIdを読み取ることができます。
commandId = static_cast<uint8_t>(qba[0]);
しかし、どうすればこれを読み取ることができState
ますenum
か?