Sida 3 av 4

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

Postat: 27 oktober 2016, 21:11:12
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.(?)

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

Postat: 27 oktober 2016, 22:36:13
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:

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

Postat: 27 oktober 2016, 23:01:02
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

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

Postat: 28 oktober 2016, 20:20:18
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.

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

Postat: 29 oktober 2016, 00:01:22
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.

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

Postat: 29 oktober 2016, 08:44:43
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?

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

Postat: 29 oktober 2016, 08:54:54
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

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

Postat: 29 oktober 2016, 09:36:47
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.

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

Postat: 29 oktober 2016, 11:41:50
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

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

Postat: 29 oktober 2016, 12:12:05
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

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

Postat: 29 oktober 2016, 14:35:30
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.)

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

Postat: 29 oktober 2016, 15:20:52
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... :-)

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

Postat: 29 oktober 2016, 15:30:33
av tecno
Håller med föregående inlägg till 100%

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

Postat: 29 oktober 2016, 15:58:54
av lillahuset
:tumupp: Men slarvar ibland. :oops:

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

Postat: 29 oktober 2016, 19:32:36
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