我有以下代码,适用于发送和接收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);
}
答案 0 :(得分:2)
使用等于运算符==
时,您需要比较指针。
在您的情况下,您可以使用strcmp()
比较内容,以进行“字符串比较”。
if ( !strcmp(packetBuffer, "command1") ) {
else if ( !strcmp(packetBuffer, "command2") ) {
} else {
}
请注意,strcmp()
在字符串匹配时返回0
,否则返回-1
或+1
(取决于字母顺序)。