gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 08:52:12 27 4
gpt4 key购买 nike

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

例如,当我发送以下内容时,它总是只发送 hello world 但我该怎么做

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

接收时我想用 if then else 解析它们,但它不起作用:

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);
}

最佳答案

当使用相等运算符 == 时,您是在比较指针。

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

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

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

} else {

}

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

关于c - Arduino - 如何获取字符串命令并将其与 if 语句匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19245318/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com