Предполагается, что сообщение поступает от генератора внешнего источника с интервалом в 1 секунду. У меня есть две функции-обработчика, которые вызываются всякий раз, когда это сообщение приходит на основании полей сообщения
У меня естьфункция, которая создает подпрограмму потока с именем WriteSM.
рассмотрим сообщение из 2 байтов, имеющее 2 поля 1) data 2Type
У нас есть две функции-обработчика для каждого из полей, которыепоказано ниже
void HandlerforData(char data)
void handlerforType(char Type)
/*This is the sample piece of code*/
char buffer[4];/*Global buffer*/
int index = 0;
static int flag = 0;/*A global static flag*/
void HandlerforData(char data);
void WriteSM(void);
void handlerforType(char Type);
/*Two handler functions*/
void HandlerforData(char data)
{
buffer[index] = data;
}
void handlerforType(char Type)
{
buffer[index+1] = type;
buffer[index+3] = '\0';/*Null terminated the string*/
index = 0;
flag = 1
}
void WriteSM(void)
{
while(1)
{
if(flag ==1)
{
/*Opens a shared memory and writes to the shared memory*/
flag =0/*Reset the flag*/
}
}
}
Если мое сообщение приходит с интервалом в 1 секунду, как я могу гарантировать, что буфер не будет перезаписан следующим кадром сообщения?
Пожалуйста, вернитесь кмне, если у вас есть какие-либо проблемы
Спасибо и привет Мэдди