Sida 4 av 4

Re: Tolka oregelbunden data - Klient och Server

Postat: 17 november 2018, 02:05:57
av Al_Bundy
Så Jan. Hur skulle du ha löst det?

Re: Tolka oregelbunden data - Klient och Server

Postat: 17 november 2018, 05:58:16
av Icecap
Basen i en säker överföring är tänket om att sker överföringen via en kabel ska det vara möjligt att klippa av kabeln och sedan återansluta den utan att det blir tolkat i form av halva paket osv.

Uppdelningen kan göras på många olika sätt, t.ex. använder MODBUS tid (det ska alltså gå 2+ bytes tid utan data för att separera olika paket] medan andra använder t.ex. CRLF som tecken på att det är slutet av ett block.

I fall med nätverkskommunikation ska man "bara" ta höjd för att man kan få olika delar av varje datablock vid olika tider vilket betyder att man bör ha en start- och slutmarkering och sedan data däremellan.

I ditt fall verkar problemet i grunden vara att du inte är säker på vad som skickas, något som definitivt är vad jag upplevde med ett projekt där "min" ųC skulle prata med ett Java-program. Jag fick anpassa "min" ända till vad Java klarade att skicka, det var problem med variabelstorlekar, endian ock lite andre småsaker.

Men det var lugnt, det kostade bara en dags programmering extra och jag fick ju betalt för tiden.

Att jobba INTERNT i ett program med att överföra data med strängar är inte effektivt - men det kan vara ganska effektivt MELLAN program! Helt enkelt för att det - rätt designad - fungerar bra. Javisst, hastigheten kanske inte är på max men om man behöver skyffla mycket data mellan två program med hög hastighet ska man kolla igenom lösningen en extra gång för att kolla om det verkligen är löst på ett vettigt sätt.

Det är även kul att du frågar sodjan om hur han skulle lösa problemet - TROTS att du har fått ett flertal beskrivningar som i stort är mycket lika. Förstår du inte vad som skrivs?

Re: Tolka oregelbunden data - Klient och Server

Postat: 17 november 2018, 07:44:45
av svanted
alltså...
Alltså det kommer oregelbundet data hela tiden i olika längder. Bästa vore om man hela tiden kunde få data som var 1003005006001008, men det får jag sällan.

Hur hade ni löst detta?
du skickar antaglien en int() som är 32 bitar
men läser av med 8 bitar

hur tycker du själv att man löser problemet?

Re: Tolka oregelbunden data - Klient och Server

Postat: 18 november 2018, 11:08:02
av Rick81
Är det bara jag som får deja vu efter en liknande tråd med kommunikation via AVR och PC via USB Uart?

Al: hur löste du det? Du kan nog körra samma lösning här

Re: Tolka oregelbunden data - Klient och Server

Postat: 20 november 2018, 19:34:46
av Al_Bundy
Jag skickade en sträng med "-" som mellanrum och där efter när jag tog emot strängen så delar jag upp den. Två två rader kod.

Re: Tolka oregelbunden data - Klient och Server

Postat: 20 november 2018, 20:21:18
av AndLi
Mtp hur populärt json och xml är i moderna lösningar tycker jag att strängar verkar mer och mer modernt.....

Re: Tolka oregelbunden data - Klient och Server

Postat: 20 november 2018, 20:47:14
av TomasL
Kan så vara, men man brukar inte skicka det, xml och json används väl i stället för text-filer för inställningar och liknande.

Re: Tolka oregelbunden data - Klient och Server

Postat: 20 november 2018, 20:50:20
av Klas-Kenny
Json skickas oerhört mycket. En hel del XML också, men särskilt JSON.

Tex där mqtt används, så är JSON i det närmaste standard, och på en hel massa andra ställen. Bakomliggande i JavaScript (AJAX) tex.

Re: Tolka oregelbunden data - Klient och Server

Postat: 20 november 2018, 20:53:56
av lillahuset
Brukar man inte skicka strängar?

Re: Tolka oregelbunden data - Klient och Server

Postat: 20 november 2018, 21:06:55
av TomasL
Jo förvisso, rent tekniskt sett, men ofta inte klartext, om det inte är en webserver eller liknande.

Re: Tolka oregelbunden data - Klient och Server

Postat: 20 november 2018, 21:23:53
av AndLi
TomasL skrev:Kan så vara, men man brukar inte skicka det, xml och json används väl i stället för text-filer för inställningar och liknande.
Tycker varenda API man använder mot något nätverksanslutet nuförtiden kör json.
Men det handlar säkert väldigt mycket i vilken miljö man rör sig...

Re: Tolka oregelbunden data - Klient och Server

Postat: 21 november 2018, 19:10:57
av mounte
En av funderingarna jag har är varför du flushar efter varje byte. Om du flushar efter att du skickat alla dina bytes så är sannolikheten mycket stor att dom kommer som en klump.

För att öka robustheten på mottagarsidan (utan att tänka på integritet av data etc. etc.) så kan du i stort följa exemplet på https://docs.python.org/3.3/howto/sockets.html

Kod: Markera allt

    def myreceive(self, msg=b''):
        while len(msg) < MSGLEN:
            chunk = self.sock.recv(MSGLEN-len(msg))
            if chunk == b'':
                raise RuntimeError("socket connection broken")
            msg = msg + chunk
        return msg
dvs. ha en buffer som du fyller på tills att längden på den blir lika med eller större än önskat meddelande.

Re: Tolka oregelbunden data - Klient och Server

Postat: 21 november 2018, 22:00:48
av Al_Bundy
Finns det inte en sannolikhet också att om jag skriver data - flush och sedan skriver data -flush. Då kommer python läsa allt på en gång?

Ditt exempel ska jag testa! :)