如何将Arduino的串行输出转换为插座输出(局域网)

本文关键字:输出 转换 插座 局域网 Arduino | 更新日期: 2023-09-27 18:21:33

下面的草图在草图的末尾有一个串行输出。"(Serial.println(stringTwo);)"如何将其转换为套接字输出。我想通过局域网使用c#程序读出。

================

草图

int LED= 2;
int LED3= 3;
int LED4= 4;
int LED5= 5;
int LED6= 6;
int LED7= 7;
int LED8= 8;
int LED9= 9;
int LED10= 10;
int LED11= 11;
int LED12= 12;
char k='F';
char a='F';
char b='F';
char c='F';
char d='F';
char e='F';
char f='F';
char g='F';
char h='F';
char i='F';
char j='F';

char data;
char x='f';
char con[80];
int analogpin=3;
void setup() {
  {
    Serial.begin(9600);
    pinMode(LED,OUTPUT);
    pinMode(LED3,OUTPUT);
    pinMode(LED4,OUTPUT);
    pinMode(LED5,OUTPUT);
    pinMode(LED6,OUTPUT);
    pinMode(LED7,OUTPUT);
    pinMode(LED8,OUTPUT);
    pinMode(LED9,OUTPUT);
    pinMode(LED10,OUTPUT);
    pinMode(LED11,OUTPUT);
    pinMode(LED12,OUTPUT);
    pinMode(analogpin,INPUT);
    Serial.begin(9600);
  }
}
void loop() {
  ////////////////
   int value = analogRead(analogpin);
   String stringOne =String(value);
  ////////////////////////////////
 data= Serial.read();
////////////////////////////
  if (data == 'o')
    {
     k='O';
    }
    else if (data == 'p')
      {
       k= 'F';
      }
      else if (data == ' ')
      {
        k= 'F';
      }
       if  (data=='o')
   {
    digitalWrite(LED,HIGH);
    x = data;
    }
    else if (data=='p')
    {
      digitalWrite(LED,LOW);
      x = data;
      }
///////////////////////////////////
/*if (data !='o'||data !='p')
  {
    data=x;
    }*/
//////////////////////////////////////
/////////////////////////////
if  (data=='A')
   {
    digitalWrite(LED3,HIGH);
    a = 'O';
   }
  else if (data=='a')
    {
    digitalWrite(LED3,LOW);
    a  = 'F';
    }
////////////////////////////
    if  (data=='B')
   {
    digitalWrite(LED4,HIGH);
    b = 'O';
   }
  else if (data=='b')
    {
    digitalWrite(LED4,LOW);
    b = 'F';
    }
/////////////////////////////
    if  (data=='C')
   {
    digitalWrite(LED5,HIGH);
    c = 'O';
   }
  else if (data=='c')
    {
    digitalWrite(LED5,LOW);
    c = 'F';
    }
///////////////////////
    if  (data=='D')
   {
    digitalWrite(LED6,HIGH);
    d = 'O';
   }
  else if (data=='d')
    {
    digitalWrite(LED6,LOW);
    d = 'F';
    }
 ///////////////////////
    if  (data=='E')
   {
    digitalWrite(LED7,HIGH);
    e = 'O';
   }
  else if (data=='e')
    {
    digitalWrite(LED7,LOW);
    e = 'F';
    }
 /////////////////////
    if  (data=='F')
   {
    digitalWrite(LED8,HIGH);
    f = 'O';
   }
  else if (data=='f')
    {
    digitalWrite(LED8,LOW);
    f = 'F';
    }
    ////////////////
    if  (data=='G')
   {
    digitalWrite(LED9,HIGH);
    g = 'O';
   }
  else if (data=='g')
    {
    digitalWrite(LED9,LOW);
    g = 'F';
    }
    ////////////
    if  (data=='H')
   {
    digitalWrite(LED10,HIGH);
    h = 'O';
   }
  else if (data=='h')
    {
    digitalWrite(LED10,LOW);
    h = 'F';
    }
    ///////////
    if  (data=='I')
   {
    digitalWrite(LED11,HIGH);
    i = 'O';
   }
  else if (data=='i')
    {
    digitalWrite(LED11,LOW);
    i = 'F';
    }
    //////////////
    if  (data=='J')
   {
    digitalWrite(LED12,HIGH);
    j = 'O';
   }
  else if (data=='j')
    {
    digitalWrite(LED12,LOW);
    j = 'F';
    }
 String sco(k);
String scoa(a);
String scob(b);
String scoc(c);
String scod(d);
String scoe(e);
String scof(f);
String scog(g);
String scoh(h);
String scoi(i);
String scoj(j);

String stringTwo= sco;
String string3=scoa;
String string4=scob;
String string5=scoc;
String string6=scod;
String string7=scoe;
String string8=scof;
String string9=scog;
String string10=scoh;
String string11=scoi;
String string12=scoj;

     stringTwo.concat(string3);
     stringTwo.concat(string4);
     stringTwo.concat(string5);
     stringTwo.concat(string6);
     stringTwo.concat(string7);
     stringTwo.concat(string8);
     stringTwo.concat(string9);
     stringTwo.concat(string10);
     stringTwo.concat(string11);
     stringTwo.concat(string12);
     stringTwo.concat(stringOne);

      Serial.println(stringTwo);
     delay(100);
}

我已经开发了一个程序,用usb串口读取上面的草图。现在我需要通过局域网。

如何将Arduino的串行输出转换为插座输出(局域网)

试试这个:

        using (TcpClient client = new TcpClient("127.0.0.1",22001))
        {
            using (StreamWriter writer = new StreamWriter(client.GetStream()))
            {
                writer.WriteLine("string to write");
            }
        }

确保TcpClient可以连接到运行的服务器。并清理商店关闭客户和作家。内存问题和打开的连接。这就是为什么使用using关键字的原因。

这可能是服务器实现:

        TcpListener server = new TcpListener(IPAddress.Parse("127.0.0.1"),22001);
        server.Start();
        while (true)
        {
            TcpClient client = server.AcceptTcpClient();
            using (StreamReader reader = new StreamReader(client.GetStream()))
            {
                while (reader.Read()>0)
                {
                    Console.WriteLine(reader.ReadLine());
                }
            }
        }