Arduino - 我如何获得字符串命令并将其与if语句匹配?

时间:2013-10-08 10:32:47

标签: c arduino

我有以下代码,适用于发送和接收hello world的任何字符串。但是,我如何发送特定字符串并使用if else else?

例如,当我发送跟随它总是只发送问候世界但我该怎么办

echo "command1" | nc -4u localhost 21
echo "command2  | nc -4u localhsot 21

在接收时我想用if if解析它们但是它不起作用:

if ( packetBuffer == "command1" ) { 

else if ( packetBuffer == "command2") { 

} else {

}

代码:

#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>

byte mac[]={0xDE, 0xAD, 0xBE, 0xEF, 0xAD, 0xDE};
IPAddress ip(192,168,1,2);
unsigned int localPort = 21;

char packetBuffer[UDP_TX_PACKET_MAX_SIZE];
char  ReplyBuffer[] = "hello world";
EthernetUDP Udp;

char          r1[] = "1";
char          r2[] = "2";
char          r3[] = "3";

void setup() {
  Ethernet.begin(mac,ip);
  Udp.begin(localPort);
}

void loop() {
  int packetSize = Udp.parsePacket();
  if(packetSize) {
    Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
    Udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE);
    Udp.write(packetBuffer);

      if ( !strcmp(packetBuffer, "command1") ) {
        Udp.write(r1);
      } else if ( !strcmp(packetBuffer, "command2") ) {
        Udp.write(r2);
      } else {
        Udp.write(r3);
      }

    Udp.endPacket();
  }
  delay(10);
}

1 个答案:

答案 0 :(得分:2)

使用等于运算符==时,您需要比较指针。

在您的情况下,您可以使用strcmp()比较内容,以进行“字符串比较”。

if ( !strcmp(packetBuffer, "command1") ) { 

else if ( !strcmp(packetBuffer, "command2") ) { 

} else {

}

请注意,strcmp()在字符串匹配时返回0,否则返回-1+1(取决于字母顺序)。