应该是楼上群友的问题。你可以while死循环,while里面判断comGetChar(COM1,&read)
类似8266的AT串口,不过这里做了个超时,防止出错了一直在while里面
[C] 纯文本查看 复制代码 uint8_t ESP8266_WaitResponse(char *_pAckStr, uint16_t _usTimeOut)
{
uint8_t ucData;
uint16_t pos = 0;
uint32_t len;
uint8_t ret;
len = strlen(_pAckStr);
if (len > 255)
{
return 0;
}
/* _usTimeOut == 0 表示无限等待 */
if (_usTimeOut > 0)
{
bsp_StartTimer(ESP8266_TMR_ID, _usTimeOut); /* 使用软件定时器3,作为超时控制 */
}
while (1)
{
bsp_Idle(); /* CPU空闲执行的操作, 见 bsp.c 和 bsp.h 文件 */
if (_usTimeOut > 0)
{
if (bsp_CheckTimer(ESP8266_TMR_ID))
{
ret = 0; /* 超时 */
break;
}
}
if (comGetChar(COM_ESP8266, &ucData))
{
ESP8266_PrintRxData(ucData); /* 将接收到数据打印到调试串口1 */
if (ucData == _pAckStr[pos])
{
pos++;
if (pos == len)
{
ret = 1; /* 收到指定的应答数据,返回成功 */
break;
}
}
else
{
pos = 0;
}
}
}
return ret;
} |