如何将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串口读取上面的草图。现在我需要通过局域网。
试试这个:
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());
}
}
}