cdb wrote: > struct display_type > { > unsigned char position[3]; //LCD line and column position combined > unsigned char display_no[3];// The message to be displayed > > }; > In the C file the above is called like so. > > strcpy(DisplayBuffer+1,&frame.display_no[0]); //goes wrong in > strcpy, according to the DBGR the arrays and structs contain 0x00. > DisplayBuffer[0]=frame.position[0]; // 0 can be replaced by the > enum constant splash or by an index variable > Display(DisplayBuffer); //LCD send function Your code should never have worked. You are putting the index of the message into the display_type array! Try this code instead: strcpy(DisplayBuffer+1, messages[frame.display_no[0]]); DisplayBuffer[0] = frame.position[0]; Display(DisplayBuffer); What you needed to know is that frame.display_no has an 8-bit NUMBER in it. You specified this: unsigned char display_no[3]; which means an array of 3 unsigned characters. Brian Smith -- http://www.piclist.com hint: The list server can filter out subtopics (like ads or off topics) for you. See http://www.piclist.com/#topics