Göra om UDP-data till seriell data

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
sc3
Inlägg: 179
Blev medlem: 10 januari 2011, 11:05:40
Ort: Umeå

Re: Göra om UDP-data till seriell data

Inlägg av sc3 »

Har jag fått det om bakfoten eller läst för snabbt, visst vill du dirigera om trafik som kommer in på nätverkskortet via UDP till ett program som lyssnar på serieporten på samma dator?

Då kommer väl inte netcat att funka, då skickas/reläas udp-datat UT på serieporten.(?)
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Göra om UDP-data till seriell data

Inlägg av Magnus_K »

@mankan:
Ok. Ska kika mer på det i helgen. Tack för hjälpen!

@@sc3:
Exakt så är det jag försöker göra/förklara :tumupp:
sc3
Inlägg: 179
Blev medlem: 10 januari 2011, 11:05:40
Ort: Umeå

Re: Göra om UDP-data till seriell data

Inlägg av sc3 »

Nu är jag dåligt påläst om netcat/socat, men kan dessa göra virtuella comportar i windows? Lösningen kan vara annars att använda http://com0com.sourceforge.net som skapar två virtuella comportar som är ihopkopplade med "nollmodemskabel" i kombination med tex netcat

detta gör att du får in din UDP trafik till comporten(virtuell) som Lizerds program lyssnar på

Kod: Markera allt

UDP --> netcat(omvandlar UDP till virtuellcomport) --> virtuellcomport --nullmodem virtuell --virtuellcomport -> Lizerd program
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Göra om UDP-data till seriell data

Inlägg av Magnus_K »

Vet inte om netcat kan lösa det så. Tycker mankan antyder det i alla fall, eller tolkar jag det fel?

Den setup:en skulle nog fungera sc3! Lite synd att man inte kan baka in com0com i .bat-filen men det går bra.
Får ta och testa lite nu men skulle någon komma på något annat så är det bara att hojta till.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Göra om UDP-data till seriell data

Inlägg av Magnus_K »

Tror jag är nära nu men behöver verkligen hjälp. Får inte till netcat-biten i windowsburken.
Det jag gjort hittills är:
  • - Installerat lizerdboys mjukvara och satt upp den till att lyssna på COM55
    - Installerat com0com och skapat två virtuella portar med nollmodem mellan (COM54 och COM55)
    - Installerat netcat på RPi:n
    - Skickat UDP data från RPi:n mha netcat och bekräftat att det fungerar med Wireshark
    - Installerat netcat på windowsburken
    - Skapat en .bat-fil som är körbar men dock ej fungerande.
Som ni förstår är det sista raden jag har problem med.
Om jag öppnar "Command Prompt" och försöker mig på ett nc-kommando så förstår den inte vad jag försöker göra.
Tar jag mig till nc.exe och kör programmet så får jag upp: Cmd line: och kan därefter köra de kommandon jag vill.
Två problem:
  • - När jag kör .bat-filen så vet jag inte hur jag gör för att först köra nc.exe och sedan sätta in raden som mankan skrev
    - Vet inte heller hur jag ska få netcat att lyssna en viss stund. Det verkar bara lyssna 1 sek eller något och jag lyckas aldrig med tajmingen, tror jag.
Netcat kommandot jag försöker köra är bland annat: nc -lu -w 5 -p 5004 > \\.\COM54 vilket i min mörka värld skulle innebära att "lyssna på UDP-trafik i 5 sekunder på port 5004 och skicka denna vidare till COM54".
Jag har provat alla möjliga varianter men antingen så verkar programmet låsa sig (får aldrig något svar) eller så får jag svar direkt att den hittar ingen data.
Nerre
Inlägg: 27215
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Göra om UDP-data till seriell data

Inlägg av Nerre »

I den man-sidan till nc jag hittade (https://linux.die.net/man/1/nc) så står det att det är fel att använda -p i kombination med -l. Dessutom står det att -w inte fungerar med -l. (Nu vet jag visserligen inte om det är exakt samma version av nc som du kör.)

Så jag tror ditt kommando nc -lu -w 5 -p 5004 > \\.\COM54 inte är helt rätt.

Du borde ju ta ett steg i taget.

Börja med att kolla om den kan lyssna på port 5004 och ta emot udp-paket och visa dem på skärmen. Det borde vara nc -lu 5004

Då bör den visa datat som den tar emot på skärmen. Jag tror du kan testa att på rpin köra nc -u <windowsdatorns ip> 5004 och skriva nåt.

Men eftersom udp är "stateless" så kommer den antagligen att koppla ner efter första paketet. Enligt man-sidan ska man använda -k för att få den att fortsätta vänta på fler anslutningar.


Sen är väl inte> \\.\COM54 rätt syntax för att styra om till COM-port i Windows? Ska det inte vara bara > COM54?
sc3
Inlägg: 179
Blev medlem: 10 januari 2011, 11:05:40
Ort: Umeå

Re: Göra om UDP-data till seriell data

Inlägg av sc3 »

Har ingen dator framför mig just nu men jag kan göra ett försök till hjälp;

Du ska inte starta nc.exe och sedan ge kommando utan du startar det med växlarna mankan föreslog. Det som händer då är att netcat startar och kör en evig loop med instruktionerna som du angav. Prova detta;

Kod: Markera allt

nc.exe -lun -p 5004 > \\.\COM54
Edit: Nerre hann svara innan, testa det han skriver
Mr Andersson
Inlägg: 1409
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

Re: Göra om UDP-data till seriell data

Inlägg av Mr Andersson »

Nerre skrev:Sen är väl inte> \\.\COM54 rätt syntax för att styra om till COM-port i Windows? Ska det inte vara bara > COM54?
Jo det är rätt. Kortformen COMx fungerar bara på port 1-9 för att de är reserverade alias för \\.\COMx (pga bakåtkompatibilitet med DOS). För högre nummer måste man använda prefix för att visa att det är en device vid namn COMx man vill använda. Annars tolkas det som ett filnamn istället.
Nerre
Inlägg: 27215
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Göra om UDP-data till seriell data

Inlägg av Nerre »

Intressant, jag hade ingen aning om att det fanns ett device-prefix i Windows, har aldrig sett det använt förr.

Nu när jag visste om det kunde jag snabbt hitta denna sida
https://msdn.microsoft.com/en-us/librar ... s.85).aspx
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Göra om UDP-data till seriell data

Inlägg av sodjan »

Fungerande länk. (Tips: "förhandsgranska" först och kolla att länken fungerar...)

https://msdn.microsoft.com/en-us/librar ... s.85).aspx
Nerre
Inlägg: 27215
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Göra om UDP-data till seriell data

Inlägg av Nerre »

Jag bara kopierade från adressfältet och klistrade in, med tanken att den som ville kolla sidan fick kopiera länken, jag hade ingen tanke på att forumet försöker omvandla det till en länk automatiskt.

Frågan är varför phpBB klipper länken innan första högerparantesen, det verkar ologiskt att den sväljer vänsterparantesen men inte högerparantesen...

(I t.ex. Word och Outlook på jobbet har jag slagit av det här med automatisk omvandling till klickbara länkar, jag tycker det är ett otyg eftersom det ofta blir fel.)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Göra om UDP-data till seriell data

Inlägg av sodjan »

Det kan finnas många anledningar till att en kopierad länk inte fungerar.
Jag brukar som rutin prova att öppna länkarna från förhandsgranskningen.
Och jag använder alltid URL-taggarna, det minskar risken för problem.
*Så* jäkla bråttom har man knappast... :-)
Användarvisningsbild
tecno
Inlägg: 27248
Blev medlem: 6 september 2004, 17:34:45
Skype: tecnobs
Ort: Sparreholm, Södermanland N 59° 4.134', E 16° 49.743'
Kontakt:

Re: Göra om UDP-data till seriell data

Inlägg av tecno »

Håller med föregående inlägg till 100%
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Göra om UDP-data till seriell data

Inlägg av lillahuset »

:tumupp: Men slarvar ibland. :oops:
sc3
Inlägg: 179
Blev medlem: 10 januari 2011, 11:05:40
Ort: Umeå

Re: Göra om UDP-data till seriell data

Inlägg av sc3 »

Nerre skrev: Men eftersom udp är "stateless" så kommer den antagligen att koppla ner efter första paketet. Enligt man-sidan ska man använda -k för att få den att fortsätta vänta på fler anslutningar.
Jag hittade mig en dator och fick lite tid att testa, tyvärr ingen windwsmaskin utan endast linux. Nerre har delvis rätt ovan, när netcat startar en UDP-server och tar emot första paketet så ligger den kvar och väntar på paket från samma ip-adress och port som det första kom ifrån. Det gör att den inte svarar på upprepade anrop, såvida det inte är en "uppkopplad" uppkoppling, likt TCP. Det verkar enligt internet ha att göra gentemot underliggande OS.

socat har löst det genom att forka en process för varje inkommande anrop. Dessvärre finns den inte lika lätt för windows som netcat.

Såhär startas serverdelen när man vill få ut det på skärmen:

Kod: Markera allt

socat - udp4-listen:5004,reuseaddr,fork
Magnus, jag undrar om det kanske är enklast för dig att vi (forumet) försöker hjälpas åt att skriva lite python kod åt dig som löser UDP->serial (har ingen windowsmaskin själv) alternativt att du går över till com2tcp, och skickar TCP-data istället. Eller finns det någon begränsning där?

ref:
https://github.com/StudioEtrange/socat-windows
Skriv svar