我用示例改了一个,老是不能识别控制字符
- #include <SPI.h> // needed for Arduino versions later than 0018
- #include <Ethernet.h>
- #include <EthernetUdp.h> // UDP library from: [email][email protected][/email] 12/30/2008
- int entpin=10;//网卡硬件开启pin
- int startpin=2;
- int scanpin=3;
- int MesuFpin=6;
- int ScanFpin=7;
- int ScanOpin=8;
- int MesuOpin=9;
- // Enter a MAC address and IP address for your controller below.
- //将MAC和IP地址发送给控制器
- // 将IP地址应用于本地网络 :
- byte mac[] = {
- 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
- IPAddress ip(192, 168,1, 11);
- byte gateway[] = {
- 192, 168, 1, 1};
- byte subnet[] = {
- 255, 255, 0, 0 };
- unsigned int localPort = 500; // local port to listen on
- // 接收和发送数据buffers
- char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,
- char ReplyBuffer[] = "acknowledged"; // a string to send back
- //string stra;
- // An EthernetUDP instance to let us send and receive packets over UDP
- EthernetUDP Udp;
- char chr2;
- char chr3;
- char* strin="014401M0030C"; //用来识别是否为控制字符
- void setup() {
- //开启网路卡硬件
- pinMode(entpin,OUTPUT);
- digitalWrite(entpin, HIGH);
- //设置接口部分
- pinMode(startpin,INPUT);
- pinMode(scanpin,INPUT);
- pinMode(ScanOpin,OUTPUT);
- pinMode(MesuOpin,OUTPUT);
- pinMode(MesuFpin,OUTPUT);
- pinMode(ScanFpin,OUTPUT);
- digitalWrite(ScanOpin, HIGH);
- digitalWrite(MesuOpin, HIGH);
- digitalWrite(ScanFpin, HIGH);
- digitalWrite(MesuFpin, HIGH);
- // 开始 Ethernet and UDP:
- // Ethernet.begin(mac,ip);
- Ethernet.begin(mac, ip, gateway, subnet);
- Udp.begin(localPort);
- Serial.begin(9600);
- chr2=2;
- chr3=3;
- }
- void loop() {
- // 如果数据有效,读取一个数据包
- int packetSize = Udp.parsePacket();
- Udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE);
- if(packetSize)
- {
- for (int i =0; i < packetSize; i++)
- {
- strin[i]=(packetBuffer[i]);//, DEC
- }
-
- // 读取数据包如果是控制字符进行处理
- boolean strok =false;
- for (int i=0 ;i<packetSize;i++)
- {
- if (strin[i]==packetBuffer[i])
- {
- strok =true;
- }
- else
- {
- strok =false;
- }
- }
- if (strok =true)
- {
- Serial.println(packetSize);
- Serial.println("Contents014401M0030:");
- digitalWrite(MesuFpin, LOW);
- Serial.println(packetBuffer);
- }
- // 发送字符串
- Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
- Udp.write("ReplyBuffer");
- Udp.endPacket();
- }
- delay(10);
- }
复制代码
程序运行结果,不管是不是控制字符,结果都执行。
Serial.println(packetSize);
Serial.println("Contents014401M0030:");
digitalWrite(MesuFpin, LOW);
Serial.println(packetBuffer);
换了几种方法,都是这样,大家能否给指点一下。
我想通过特定的字符来识别控制那个数字口。 |