Esp8266 TPC Server
Napsal: 19 čer 2018, 07:49
Zdravím,
prosím o radu, potřeboval bych zprovoznit TCP server na ESP, něco sem našel, ale nic podle mých představ. Potřebuju, klient se připojí a občas(každé 2s) pošle dotaz (5 bajtů) a čeká odpověť od serveru(85 bajtů) a mezi tím běžel na ESP program (konkrétně čtení dat z čidel). Tady kousek kódu co sem zatím vypotil podle příkladů co sem našel. Připojení klienta proběhne i detekce přijmu o délce 5, ale odeslání podle všeho ne "nvys=0" a klient take hlásí špatnou délku. Ten webserver běží bez problémů.
...
WiFiServer server2 ( 5301 );
ESP8266WebServer server ( 80 );
...
void setup(void) {
...
server2.begin();
}
void loop(void) {
byte i;
float celsius, fahrenheit;
msek=millis()/1000;
ds_read();
//Serial.println();
// the first ROM byte indicates which chip
if(bOk){
/*
for(i=0;i<maxAdr;i++){
Serial.print(" Teplota");
Serial.print(i);
Serial.print(" = ");
Serial.print(teplds);
}
*/
}
else{
//Serial.println(time_get_str(time_get(0),0));
}
server.handleClient();
//TCPServer();
WiFiClient client = server2.available(); // If client is connected
if (!client) { return;}
//Read client request
byte pbuf[10];
size_t req = client.readBytes(pbuf,5);
if(req>0){
Serial.print("delka prijmu = ");
Serial.println(req);
if(req==5){
Serial.println("Prijem OK");
byte vbuf[85];
vbuf[0]=64;
vbuf[1]=1;
vbuf[2]=0;
vbuf[3]=40;
for(byte n=0;n<40;n++){
vbuf[n*2+4]=polh[n]/256;
vbuf[n*2+5]=polh[n]%256;
}
vbuf[84]=35;
byte nvys=server2.write(vbuf,85);
Serial.print("delka vysilani = ");
Serial.println(nvys);
}
}
//client.flush();
}
prosím o radu, potřeboval bych zprovoznit TCP server na ESP, něco sem našel, ale nic podle mých představ. Potřebuju, klient se připojí a občas(každé 2s) pošle dotaz (5 bajtů) a čeká odpověť od serveru(85 bajtů) a mezi tím běžel na ESP program (konkrétně čtení dat z čidel). Tady kousek kódu co sem zatím vypotil podle příkladů co sem našel. Připojení klienta proběhne i detekce přijmu o délce 5, ale odeslání podle všeho ne "nvys=0" a klient take hlásí špatnou délku. Ten webserver běží bez problémů.
...
WiFiServer server2 ( 5301 );
ESP8266WebServer server ( 80 );
...
void setup(void) {
...
server2.begin();
}
void loop(void) {
byte i;
float celsius, fahrenheit;
msek=millis()/1000;
ds_read();
//Serial.println();
// the first ROM byte indicates which chip
if(bOk){
/*
for(i=0;i<maxAdr;i++){
Serial.print(" Teplota");
Serial.print(i);
Serial.print(" = ");
Serial.print(teplds);
}
*/
}
else{
//Serial.println(time_get_str(time_get(0),0));
}
server.handleClient();
//TCPServer();
WiFiClient client = server2.available(); // If client is connected
if (!client) { return;}
//Read client request
byte pbuf[10];
size_t req = client.readBytes(pbuf,5);
if(req>0){
Serial.print("delka prijmu = ");
Serial.println(req);
if(req==5){
Serial.println("Prijem OK");
byte vbuf[85];
vbuf[0]=64;
vbuf[1]=1;
vbuf[2]=0;
vbuf[3]=40;
for(byte n=0;n<40;n++){
vbuf[n*2+4]=polh[n]/256;
vbuf[n*2+5]=polh[n]%256;
}
vbuf[84]=35;
byte nvys=server2.write(vbuf,85);
Serial.print("delka vysilani = ");
Serial.println(nvys);
}
}
//client.flush();
}