求一个设计方案

加盾男爵 2020-10-30 04:25:12
现在电脑需要和一台设备进行通信,然后电脑需要和设备进行通信,通信的方式是通过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++的基本数据类型,但每个结构字段都不同

现在到底问题是,我为了实现这些接口,不得不定义几百个结构....我想问下有没有比较简单的办法来对付这几百个不同的结构
...全文
145 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-09
  • 打赏
  • 举报
回复
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html
  • 打赏
  • 举报
回复
楼上正解,用json最好。同时,由于是tcp,可能存在收到尾巴一半,下一半待会才到的情况,所以亦可考虑长度加json的形式
SleekStone 2020-10-30
  • 打赏
  • 举报
回复
不过似乎也不能减少结构体的数量...
SleekStone 2020-10-30
  • 打赏
  • 举报
回复
如果不考虑流量包大小,可以用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;
}

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧