44 lines
1.1 KiB
C
44 lines
1.1 KiB
C
#include "line_seek.h"
|
|
|
|
#include "main.h"
|
|
|
|
char LineSeek_Status[5];
|
|
|
|
/**
|
|
* @brief 获取巡线状态
|
|
* @param[in] int *p_iL1, int *p_iL2, int *p_iR1, int *p_iR2 四路巡线位指针
|
|
* @retval void
|
|
*/
|
|
void LineSeek_GetStatus(int *p_iL1, int *p_iL2, int *p_iR1, int *p_iR2)
|
|
{
|
|
*p_iL1 = HAL_GPIO_ReadPin(LineSeek_L1_GPIO_Port, LineSeek_L1_Pin);
|
|
*p_iL2 = HAL_GPIO_ReadPin(LineSeek_L2_GPIO_Port, LineSeek_L2_Pin);
|
|
*p_iR1 = HAL_GPIO_ReadPin(LineSeek_R1_GPIO_Port, LineSeek_R1_Pin);
|
|
*p_iR2 = HAL_GPIO_ReadPin(LineSeek_R2_GPIO_Port, LineSeek_R2_Pin);
|
|
}
|
|
|
|
/**
|
|
* @brief 获取巡线状态并返回表示状态的字符串
|
|
* @retval char LineSeek_Status[5]
|
|
*/
|
|
char *LineSeek_GetStatusStr()
|
|
{
|
|
int iL1, iL2, iR1, iR2;
|
|
LineSeek_GetStatus(&iL1, &iL2, &iR1, &iR2);
|
|
sprintf(LineSeek_Status, "%d%d%d%d", iL1, iL2, iR1, iR2);
|
|
return LineSeek_Status;
|
|
}
|
|
|
|
int LineSeek_Equals(const char *expression)
|
|
{
|
|
int i;
|
|
for (i = 0; i < 4; i++)
|
|
{
|
|
if (expression[i] != 'x' && expression[i] != LineSeek_Status[i])
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
return 1;
|
|
}
|