Prusa-Firmware-ESP32-Cam/doc/Freenove ESP32-S3-Wroom/C/Sketches/Sketch_06.2_WiFiServer/sketchWiFi/sketchWiFi.pde

240 lines
6.9 KiB
Plaintext

/*
******************************************************************************
* Sketch WiFi Client and Server
* Author Zhentao Lin @ Freenove (http://www.freenove.com)
* Date 2020/7/11
******************************************************************************
* Brief
* This sketch is used to control a 2D ellipse through communicate to an
* ESP32 board or other micro controller.
* It will automatically detect and connect to a device (serial port) which
* use the same trans format.
******************************************************************************
* Copyright
* Copyright © Freenove (http://www.freenove.com)
* License
* Creative Commons Attribution ShareAlike 3.0
* (http://creativecommons.org/licenses/by-sa/3.0/legalcode)
******************************************************************************
*/
import controlP5.*;
import processing.net.*;
ControlP5 cp5;
//Println console;
Server myServer;
Client myClient;
int dataIn=0;
int radioFlag1=0;
int radioFlag2=0;
int send_flag=1;
void setup() {
size(600,400);
smooth();
noStroke();
cp5 = new ControlP5(this);
cp5.addTab("default")
.activateEvent(true)
.setHeight(30)
.setWidth(100)
.setLabel("TCP Server")
.setId(1)
;
cp5.getTab("TCP Client")
.activateEvent(true)
.setHeight(30)
.setWidth(100)
.setId(2)
;
cp5.addTextfield("Local IP")
.setPosition(20,40)
.setSize(160,40)
.setFont(createFont("微软雅黑 Light",20))
.setColor(color(255,255,0))
.setColorLabel(color(0))
.setColorBackground(color(100,255))
.moveTo("default")
;
cp5.addTextfield("Local PORT")
.setPosition(20,120)
.setSize(160,40)
.setFont(createFont("微软雅黑 Light",20))
.setColor(color(255,255,0))
.setColorLabel(color(0))
.setColorBackground(color(100,255))
.setText("8888")
.moveTo("default")
;
cp5.addRadioButton("connect1")
.setPosition(20,200)
.setSize(100,25)
.addItem("Listening", 1)
.setColorLabel(color(0))
.moveTo("default")
;
cp5.addTextfield("Remote IP")
.setPosition(20,40)
.setSize(160,40)
.setFont(createFont("微软雅黑 Light",20))
.setColor(color(255,255,0))
.setColorLabel(color(0))
.setColorBackground(color(100,255))
.setText("192.168.1.xxx")
.moveTo("TCP Client")
;
cp5.addTextfield("Remote PORT")
.setPosition(20,120)
.setSize(160,40)
.setFont(createFont("微软雅黑 Light",20))
.setColor(color(255,255,0))
.setColorLabel(color(0))
.setColorBackground(color(100,255))
.setText("80")
.moveTo("TCP Client")
;
cp5.addRadioButton("connect2")
.setPosition(20,200)
.setSize(100,25)
.addItem("connect Server",1)
.setColorLabel(color(0))
.moveTo("TCP Client")
;
cp5.addTextarea("recvData")
.setPosition(200,40)
.setSize(350,150)
.setFont(createFont("微软雅黑 Light",20))
.setColor(color(255,255,0))
.setColorBackground(color(100,255))
.scroll(15)
.setColorForeground(color(0,100))
.moveTo("global")
;
cp5.addTextfield("sendData")
.setPosition(200,230)
.setSize(350,80)
.setFont(createFont("微软雅黑 Light",20))
.setColor(color(255,255,0))
.setLabel("")
.setFocus(true)
.setColorBackground(color(100,255))
.setColorForeground(color(0,100))
.moveTo("global")
;
cp5.addButton("clearRecv")
.setValue(0)
.setPosition(200,200)
.setSize(100,20)
.setColorLabel(color(255,100))
.moveTo("global")
;
cp5.addButton("clearSend")
.setValue(0)
.setPosition(200,320)
.setSize(100,20)
.setColorLabel(color(255,100))
.moveTo("global")
;
cp5.addButton("Send")
.setValue(0)
.setPosition(450,320)
.setSize(100,20)
.plugTo(this,"send_Textfield_SendData")
.setColorLabel(color(255,100))
.moveTo("global")
;
cp5.get(Textfield.class,"Local IP").setText(Server.ip());
}
void draw(){
background(220);
if(radioFlag1==1){
Client thisClient = myServer.available();
if (thisClient !=null) {
String whatClientSaid = thisClient.readString();
if (whatClientSaid != null) {
cp5.get(Textarea.class,"recvData").append(thisClient.ip()+": ");
cp5.get(Textarea.class,"recvData").append(whatClientSaid+"\n");
}
}
}
// myServer.active()
if(radioFlag2==1){
if (myClient.available() > 0) {
String whatClientSaid = myClient.readString();
if (whatClientSaid != null) {
cp5.get(Textarea.class,"recvData").append(cp5.get(Textfield.class,"Remote IP").getText()+": ");
cp5.get(Textarea.class,"recvData").append(whatClientSaid+"\n");
}
}
}
}
void controlEvent(ControlEvent theControlEvent) {
if (theControlEvent.isTab()) {
if(theControlEvent.getTab().getId()==1){
cp5.get(Textarea.class,"recvData").clear();
cp5.get(Textfield.class,"sendData").clear();
send_flag=1;
}
else if(theControlEvent.getTab().getId()==2){
cp5.get(Textarea.class,"recvData").clear();
cp5.get(Textfield.class,"sendData").clear();
send_flag=2;
}
}
}
void connect1(int a) {
println("a radio Button event: "+a);
radioFlag1=a;
if(radioFlag1==1){
String port_buffer = cp5.get(Textfield.class,"Local PORT").getText();
int port = int(port_buffer);
myServer = new Server(this,port);
println(Server.ip());
cp5.get(Textfield.class,"Local IP").setText(Server.ip());
println(port);
}
else
myServer.stop();
}
void connect2(int a) {
println("a radio Button event: "+a);
radioFlag2=a;
if(radioFlag2==1){
String port_buffer = cp5.get(Textfield.class,"Remote PORT").getText();
String IP_buffer = cp5.get(Textfield.class,"Remote IP").getText();
int port = int(port_buffer);
if(IP_buffer.compareTo("192.168.1.xxx")==0){
println("connect error!");
}
else{
myClient = new Client(this,IP_buffer,port);
println("connect success!");
}
}
else
myClient.stop();
}
void clearRecv(){
cp5.get(Textarea.class,"recvData").clear();
}
void clearSend(){
cp5.get(Textfield.class,"sendData").clear();
}
void send_Textfield_SendData(){
if(send_flag==1){
myServer.write(cp5.get(Textfield.class,"sendData").getText());
cp5.get(Textfield.class,"sendData").clear();
}
else if(send_flag==2){
myClient.write(cp5.get(Textfield.class,"sendData").getText());
cp5.get(Textfield.class,"sendData").clear();
}
}