繁体   English   中英

如何将Arduino的Serial转换为socket out put(局域网)

[英]How to convert the Serial out of a Arduino to socket out put(Lan network)

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

===========

草图

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串行端口读取上面的草图。 现在我需要通过局域网。

尝试这个:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM