I want to send control codes to a printer they look like this :
unsigned char cntrl_codes[6] = { 0x0d, 0x14, 0x1b, 0x4c, 0x0d, 0x0d};
//this function takes two arguments // 1)the array // 2)time delay between successive codes void print(unsigned char* c,unsigned char del) { int x,y; y=strlen(c);//y++; for(x=0;x<y;x++) { putchar(c[x]); delay(del); } }
Does the strlen call give the result you want? There is no trailing zero in the initializer of the array. You have to pass the size of the array as an extra argument to the function. Besides that, I can't see why this function is ungraceful. You can declare it like this:
void print(unsigned char c[],unsigned char del)
It is not clear what the problem is. You could define your control codes as a null terminated string if you prefer:
unsigned char cntrl_codes = "\0x0d\0x14\0x1b\0x4c\0x0d\0x0d";
Try this:
void TxSerial(unsigned char *ptr) { while(*ptr!=0x0) { SBUF=*ptr; //Send one character while(!TI) //Wait for completion {} TI=0; //Clear Tx flag ptr++; } }
while(*ptr!=0x0)
Thanks All I am using a null-term array and it works fine.
View all questions in Keil forum