У меня есть некоторые проблемы с реализацией существующего протокола на C, особенно с созданием пакетов данных.синтаксический анализ и отправка данных в C
пакетных выглядит следующим образом:
HeaderData 1 (1 байт) | 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 я увеличит к моему пакету, чтобы отправить его дальше. Но я не знаю, как это сделать.
Возможно, есть способ с structs?
struct Packet{
char header1[1];
char header2[2];
char lengthData[20];
char data[MAX_DATA_LENGTH];
};
struct Packet packet;
Но как я могу скопировать данные в returnMessage в пакет.data []? И как я могу конкатенировать данные в структуре, чтобы отправить пакет.
Есть ли у кого-нибудь представление о создании/анализе пакетов для простых протоколов?
Спасибо большое,
Флориан
'memcpy()'? это не имеет ничего общего с «протоколами» и т. д. –