【发布时间】:2015-05-21 02:40:58
【问题描述】:
我在用 C 语言实现现有协议时遇到了一些麻烦,尤其是在创建数据包时。
数据包如下所示:
HeaderData 1(1Byte) | HeaderData 2(1 字节) | Length_Data (2 字节) |数据(长度变量)
我通过串口获取一些数据并保存在returnMessage中:
int getMessage(char * returnMessage){
int length = 0;
//static char replay[REPLAY_MAX_SIZE];
memset(replay, 0x00, REPLAY_MAX_SIZE);
// goes into the while-loop, if some data comes in
// after a timeout of 20 seconds the program will be terminated
if(select(fd +1 , &set, NULL, NULL, &timeout )){
length = read(fd, returnMessage, REPLAY_MAX_SIZE);
//reinitialize fd_set values
FD_ZERO(&set);
FD_SET(fd, &set);
return length;
}
//printf("[%s] ERROR CANNOT GET MESSAGE\n", __FUNCTION__);
return -1;
}
returnMessage 中的这些数据我将增强到我的数据包以进一步发送它。但我不知道怎么做。
也许有一种使用结构的方法?
struct Packet{
char header1[1];
char header2[2];
char lengthData[20];
char data[MAX_DATA_LENGTH];
};
struct Packet packet;
但是如何将returnMessage 中的数据复制到packet.data[]?以及如何连接结构中的数据以发送数据包。
有人介绍过为简单协议创建/解析数据包吗?
非常感谢,
弗洛里安
【问题讨论】:
-
memcpy()?这实际上与“协议”之类的东西无关。