[En-Nut-Discussion] Message Que
Ayman Hendawy
ayman.hendawy at gmail.com
Wed Jan 11 15:15:24 CET 2012
Dear All,
I try to make a test simple code for the message que, but actually it's not
working and I don't know why, the code is as following:
#include "MCU.h"
NUTMSGQ * MsgQDSUCCU; //define a message que
int main(void)
{
/************************************************************************/
/* Register UART and Set Baud rate */
/************************************************************************/
u_long baud = BaudRate; //Set the UART baud rate
NutRegisterDevice(&DEV_DEBUG, 0, 0);
freopen(DEV_DEBUG_NAME, "w", stdout);
_ioctl(_fileno(stdout), UART_SETSPEED, &baud);
puts("\nMCU Threads Test");
/************************************************************************/
////Create two threads, one will send the msg and the other will receive it
NutThreadCreate("CCU", CCU, NULL, 512);
NutThreadCreate("DSU", DSU, NULL, 512);
MsgQDSUCCU = NutMsgQCreate(512); //create the msg that will be sent by
DSU Thread and received by CCU thread
for (;;)
{
NutSleep(1000);
}
return (0);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///1st thread that will send the msg
#include "DSU.h"
extern MsgQDSUCCU; //to be seen by that file which contain that thread
THREAD(DSU, arg)
{
char counter = 0;
char *MsgDDSUCCU = 0;
NutThreadSetPriority(36);
while(1)
{
puts("DSU start\n");
counter ++;
if (counter == 3)
{
counter = 0;
if(!(NutMsgQPost(&MsgQDSUCCU , 1, 1, &MsgDDSUCCU)))
{
puts("DSU successfully sent \n");
}
else
puts("Error DSU sending\n");
}
NutSleep(1000);
}
for(;;)
NutSleep(1000);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///2nd thread that will receive the msg
#include "CCU.h"
extern MsgQDSUCCU;
THREAD(CCU, arg)
{
NUTMSG *MsgDDSUCCU;
NutThreadSetPriority(CCUPri);
while (1)
{
puts("CCU start\n");
if(!(NutMsgQGetMessage(MsgQDSUCCU, MsgDDSUCCU, 25 )))
{
puts("CCU received a message from DSU\n");
}
NutSleep(1000);
}
for(;;)
NutSleep(1000);
}
I always read form the serial port the following:
MCU Threads Test
CCU start
DSU start
CCU start
DSU start
CCU start
DSU start
Error DSU sending
I don't know why it always display Error DSU sending,
why sending the msg failed, any help will be appreciated
Thanks
--
Best regards
Ayman Hendawy
Embedded system engineer
Cairo,Egypt
Phone: +20110406659
More information about the En-Nut-Discussion
mailing list