如何将串口从Arduino转换为socket out(Lan网络)

时间:2015-11-12 08:45:54

标签: c# c++ sockets lan arduino-uno

下面的草图在草图的末尾有一个串行输出。 "(Serial.println(stringTwo);)" 如何将其转换为套接字输出。我想通过lan网络使用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串口读取上面的草图。现在我需要通过局域网。

1 个答案:

答案 0 :(得分:0)

试试这个:

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