Serial.write() - nezobrazi posledny vypisany znak

Odpovědět
sdeak
Příspěvky: 4
Registrován: 12 led 2018, 18:27
Reputation: 0

Serial.write() - nezobrazi posledny vypisany znak

Příspěvek od sdeak » 18 led 2018, 23:09

Zdravím Vás.
Mám problém s vypísaním prijatých "dát" na serial monitor. Server mam napisany jednoduchy socket server v pythone. Vytvori skocket spojenie s klientom a odošle mu data. DATA SU LEN LUBOVOLNE ZNAKY

Kód: Vybrat vše

message=chr(48) + chr(52) + chr(51) + chr(53) + chr(57) + chr(51) + chr(57) + chr(35)
Klient sa na server pripoji ale pri nacitani a vypisani dat

Kód: Vybrat vše

while((size = client.available()) > 0)
          {
            uint8_t* msg = (uint8_t*)malloc(size);
            size = client.read(msg,size);
            Serial.print("START");
            Serial.write(msg,size);
            Serial.println("END");
            free(msg);
          }
mam problem s tym že na serial monitore mi nevypíše/nezobrazí posledný znak. Viete mi prosím poradiť, lebo si s tým neviem pomoct.
KOMPLET SERVER:

Kód: Vybrat vše

 
import socket
import sys

from time import sleep
 
HOST = '192.168.1.3'   # Symbolic name, meaning all available interfaces
PORT = 8888 # Arbitrary non-privileged port
 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print (HOST)
print (PORT)
print ('Socket created')
 
#Bind socket to local host and port
try:
    s.bind((HOST, PORT))
except socket.error as msg:
    print ('Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1])
    sys.exit()
     
print ('Socket bind complete')
 
#Start listening on socket
s.listen(10)
print ('Socket now listening')
 
#now keep talking with the client
while 1:
    #wait to accept a connection - blocking call
    conn, addr = s.accept()
    print ('Connected with ' + addr[0] + ':' + str(addr[1]))
    message=chr(48) + chr(52) + chr(51) + chr(53) + chr(57) + chr(51) + chr(57) + chr(35)
    conn.send(message)
    sleep(0.5)
     
s.close()
VÝPIS SEREVR:

Kód: Vybrat vše

192.168.1.3
8888
Socket created
Socket bind complete
Socket now listening
Connected with 192.168.1.118:1025
0435939#
KOMPLET KLIENT:

Kód: Vybrat vše

#include <UIPEthernet.h>
#include <SPI.h>

EthernetClient client;
signed long next;
boolean state=false;
int size;

void setup(){
  Serial.begin(9600);
  uint8_t mac[6] = {0x00,0x01,0x02,0x03,0x04,0x05};
  uint8_t ip[4] = {192,168,1,118};
  uint8_t gateway[6] = {192,168,1,1};
  uint8_t subnet[6] = {255,255,255,0};
  Ethernet.begin(mac, ip, gateway, subnet);
  Serial.print(" ");
  Serial.print("localIP: ");
  Serial.println(Ethernet.localIP());
  Serial.print("subnetMask: ");
  Serial.println(Ethernet.subnetMask());
  Serial.print("gatewayIP: ");
  Serial.println(Ethernet.gatewayIP());
  Serial.print("dnsServerIP: ");
  Serial.println(Ethernet.dnsServerIP());
}

void loop(){
  if (((signed long)(millis() - next)) > 0){
    Serial.println("Client connecting...");
    client.connect(IPAddress(192,168,1,3),8888);
    delay(3000);
    state=client;
    if (client){
      Serial.println("Client connected");
      delay(1000);
      while(client){
        delay(1000);
        next = millis() + 5000;
        if(client.available()==0){
          if (next - millis() < 0){
            goto close;
          }
        }delay(1000);
        while((size = client.available()) > 0)
          {
            uint8_t* msg = (uint8_t*)malloc(size);
            size = client.read(msg,size);
            Serial.print("START");
            Serial.write(msg,size);
            Serial.println("END");
            free(msg);
          }
      }       
    }
  }
  close: 
        Serial.println("Client disconnect");
        client.stop();
}

VÝPIS KLIENT na Serial Monitor

Kód: Vybrat vše

 localIP: 192.168.1.118
subnetMask: 255.255.255.0
gatewayIP: 255.255.255.0
dnsServerIP: 192.168.1.1
Client connecting...
Client connected
START0435939 END
Medzi 9 a END chýba znak #

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 17 hostů