現在電腦需要和一臺設備進行通信,然后電腦需要和設備進行通信,通信的方式是通過TCP發送不同的訊息,每條訊息的結構都不同,比如請求設備CPU問題可以發送訊息
//溫度反饋
struct temperatureCtrl{
int msgID;
unsgined char type; //0:查詢 1:設定
unsgined char[3] space;
};
而設備收到該訊息后則會回復
struct templaertureDev{
int msgID;
unsgined char type; //0:查詢 1:設定
unsigned short value;
unsgined char space;
}
同意,如果需要設定設備的時間,請求和回應訊息分別為
struct timeCtrl{
int msgID;
unsigned char type; //0:查詢 1:設定
unsgined char[3] space;
unsigned short year;
unsigned short month;
unsigned short day;
unsigned short hour;
unsigned short min;
unsigned short sec;
}
struct timeDev{
int msgID;
unsigned char type; //0:查詢 1:設定
unsgined char[3] space;
unsgined char[8] deviceNumber;
unsigned short year;
unsigned short month;
unsigned short day;
unsigned short hour;
unsigned short min;
unsigned short sec;
}
現在 問題是電腦軟體需要和這臺設備連接,但這條設備的介面有幾百個,每個介面都是類似上面這樣的借口,每個結構的欄位都是C++的基本資料型別,但每個結構欄位都不同
現在到底問題是,我為了實作這些介面,不得不定義幾百個結構....我想問下有沒有比較簡單的辦法來對付這幾百個不同的結構
uj5u.com熱心網友回復:
如果不考慮流量包大小,可以用json之類的key-value形式的結構傳,這樣你都不用定義結構。如果要考慮流量,可以對你這些結構分類,再繼承,比如這樣
struct MsgHead
{
int msgID;
unsigned char type; //0:查詢 1:設定
};
struct temperatureCtrl : public MsgHead
{
unsigned char space[3];
};
struct timeCtrl : public MsgHead
{
unsigned char space[3];
unsigned short year;
unsigned short month;
unsigned short day;
unsigned short hour;
unsigned short min;
unsigned short sec;
}
uj5u.com熱心網友回復:
不過似乎也不能減少結構體的數量...轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/196247.html
標籤:C++ 語言
