简单使用方式一:
这里用户可以将读取的read值存到一个数组里面,每读取到一次往数组里面存一下。
略微复杂的使用方式二:
比如远程端发送的数据格式如下:
程序代码就可以这样实现:
/*
*********************************************************************************************************
* 函 数 名: main
* 功能说明: c程序入口
* 形 参: 无
* 返 回 值: 错误代码(无需处理)
*********************************************************************************************************
*/
int main(void)
{
uint8_t ucKeyCode;
uint8_t read;
uint8_t ucStatus = 0; /* 状态机标志 */
uint8_t ucCount=0, i;
uint8_t buf[128];
bsp_Init(); /* 硬件初始化 */
bsp_StartAutoTimer(0, 100); /* 启动1个100ms的自动重装的定时器 */
/* 主程序大循环 */
while (1)
{
/* CPU空闲时执行的函数,在 bsp.c */
bsp_Idle();
/* 判断定时器超时时间 */
if (bsp_CheckTimer(0))
{
/* 每隔100ms 进来一次 */
/* 翻转LED2的状态 */
bsp_LedToggle(2);
}
/* 接收到的串口命令处理 */
if (comGetChar(COM1, &read))
{
switch (ucStatus)
{
/* 状态0保证接收到0x01 */
case 0:
if(read == 0x01)
{
ucStatus = 1;
}
break;
/* 状态1保证接收到0x03 */
case 1:
if(read == 0x03)
{
ucStatus = 2;
}
else
{
ucStatus = 0;
}
break;
/* 状态2保证接收到0x0E */
case 2:
if(read == 0x0E)
{
ucStatus = 3;
}
else
{
ucStatus = 0;
}
break;
case 3:
buf[ucCount] = read;
/* 接收够15个数据 */
if(ucCount == 15)
{
/* 打印接收到的数据值 */
printf("接收到的数据:");
for(i = 0; i < ucCount + 1; i++)
{
printf("%x ", buf[i]);
}
printf("\r\n");
ucStatus = 0;
ucCount=0;
}
else
{
ucCount++;
}
break;
default:
break;
}
}
}
}
来源: 整理文章为传播相关技术,网络版权归原作者所有,如有侵权,请联系删除。