Можно ли упростить это утверждение с помощью sprintf?Как упростить инструкцию с помощью sprintf?
unsigned char text[50];
void decode (unsigned char* msg)
{
// ON LED
if (strstr (msg, "DO1=1") == msg)
{
LATGbits.LATG1 =1 ; //led1 on
sprintf(text,"OK"); // Send the result in HyperTerminal
sendString(text) ;
}
else if (strstr (msg, "DO2=1") == msg)
{
LATGbits.LATG0 = 0 ; //LED 2 on
sprintf(text,"OK"); // Send the result in HyperTerminal
sendString(text) ;
}
else if (strstr (msg, "DO3=1") == msg)
{
LATGbits.LATG13 = 0 ; //LED 3 on
sprintf(text,"OK"); // Send the result in HyperTerminal
sendString(text) ;
}
else if (strstr (msg, "DO4=1") == msg)
{
LATGbits.LATG14 = 0 ; //LED 4 on
sprintf(text,"OK"); // Send the result in HyperTerminal
sendString(text) ;
}
else if (strstr (msg, "DO5=1") == msg)
{
LATGbits.LATG12 = 0 ; //LED 5 on
sprintf(text,"OK"); // Send the result in HyperTerminal
sendString(text) ;
}
// OFF LED
else if (strstr (msg, "DO1=0") == msg)
{
LATGbits.LATG1 =0 ; //LED 1 off
}
else if (strstr (msg, "DO2=0") == msg)
{
LATGbits.LATG0 = 1 ; //LED 2 off
}
else if (strstr (msg, "DO3=0") == msg)
{
LATGbits.LATG13 = 1 ; //LED 3 off
}
else if (strstr (msg, "DO4=0") == msg)
{
LATGbits.LATG14 = 1 ; //LED 4 off
}
else if (strstr (msg, "DO5=0") == msg)
{
LATGbits.LATG12 = 1 ; //LED 5 off
}
}
Из кода выше показывает, например, когда слово "DO1=1"
является тип в HyperTerminal, то LED1 включится и "DO1=0"
погаснет светодиод. То же самое с DO1 до DO5. Ответы зависят от определения типа LATGbits
.
Обратите внимание, что эти проверки дадут ложные срабатывания для чего-то вроде '' DO5 = 01 "' - это было предназначено? –
@MattMcNabb, если эти проверки дадут ложные срабатывания. Ничего не происходит, когда 'DO5 = 01'. Но это похоже на результат. – athirah