发布为基于的新问题this one https://stackoverflow.com/questions/59559083/is-there-string-in-c(OP 最初对已回滚的问题进行了巨大更改),因为用户表示他们无法自己提出问题。
About 图16F877A:
我从 UART(COM 端口)接收数据并显示在 LCD 16x4 上。
我收到的数据构成:
Line1#Line2#Line3#Line4
我想将接收到的数据发送到LCD,如下所示:
/*LCD16x4
:~~~~~~~~~~~~~~~~:
: Line1 :
: Line2 :
: Line3 :
: Line4 :
:________________:
*/
我把char
数组到行x
, col y
(开始于1
) to a LCD
by:
lcd_gotoxy(x, y);
printf(lcd_putc, data);
我有一个char
array:
char data[];
我尝试创建getLcdContents
函数来逐一获取每一行:
char* getLcdContents(char arr[], int line)
{
char delimiter = '#';
int8 begin = 0;
int8 end = 0;
int step = 0;
char result[20];
//! printf("* Array length: %u \r\n", strlen(arr));
//! printf("* Array : %s \r\n",arr);
for (int8 i = 0; i < strlen(arr); i++)
{
if (arr[i] == delimiter)
{
end = i;
step++;
if (step == line)
{
for (int k = 0; k < 20; k++)
{
if (k < end - begin)
{
result[k] = arr[k + begin];
//printf("*result[%u]: %s \r\n",k,arr[k+begin]);
}
else
{
result[k] = " ";
}
}
}
begin = i + 1;
}
}
result[20] = '\0';
printf("* Line%u : %s \r\n", line, result);
return result;
}
然后从获取数据RDA_isr(void)
放到LCD
by:
#INT_RDA
Void RDA_isr(Void)
{
gets(rx);
char* row1 = getLcdContents(rx, 1);
lcd_gotoxy(1, 1);
printf(lcd_putc, row1);
char* row2 = getLcdContents(rx, 2);
lcd_gotoxy(1, 2);
printf(lcd_putc, row2);
char* row3 = getLcdContents(rx, 3);
lcd_gotoxy(1, 3);
printf(lcd_putc, row3);
char* row4 = getLcdContents(rx, 4);
lcd_gotoxy(1, 4);
printf(lcd_putc, row4);
}
但这是行不通的。谁能帮我?非常感谢!