Flera program som använder samma serieport (i freebsd)

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
apanap
Inlägg: 20
Blev medlem: 16 mars 2004, 03:02:59

Flera program som använder samma serieport (i freebsd)

Inlägg av apanap »

Hej
Jag klurar på ett projekt där ett program ska läsa in data som skickas in genom serie porten från en mikrocontroller och lägga in den i en mysql databas. Det ska även styra vissa funktioner i mikrocontrollern, så det måste därför även kunna skicka ut data genom serieporten. Detta program ska alltså ligga i bakgrunden och alltid vara igång. Men jag vill även ha ytterligare ett program i form av en java-applet som en användare kan köra igång och logga in för att observera och styra vissa funktioner. Så alltså behöver även detta program tillgång till serieporten.

Så till frågan:
Kan flera program använda samma serieport? Jag kör freebsd om det nu spelar någon roll :roll:

Man kan ju tänka sig andra lösningar på problemet, tex genom att använda sockets och på så vis låta java-appleten kommunicera genom det andra programet. Men det känns onödigt att krångla till det om nu flera program skulle kunna använda serieporten.
Användarvisningsbild
axelsonic
EF Sponsor
Inlägg: 709
Blev medlem: 8 juni 2003, 20:56:03
Ort: Stockholm

Inlägg av axelsonic »

Det går nog, så länge inte programmen försöker använda porten samtidigt.
Då kan det bli problem, dvs BSD kommer nog att döda något av dem. =) .

Men annars bör det inte vara något problem.
apanap
Inlägg: 20
Blev medlem: 16 mars 2004, 03:02:59

Inlägg av apanap »

Okey... då kanske det fungerar, iaf att skicka, för alla kommandon som ska skickas till microcontrollern består endast av 1 char st och det är relativt lång tid mellan dessa så sannolikheten för "krock" borde vara liten.

Men kan båda programen lyssna på serieporten samtidigt, eller hur fungerar det? För båda programen behöver tillgång till all den data som kommer in.
matseng
Inlägg: 2360
Blev medlem: 16 september 2003, 17:18:13
Ort: Dubai, United Arab Emirates
Kontakt:

Inlägg av matseng »

apanap: Ska båda programmena läsa och skriva från commporten, eller är det "output only"?
EDIT: Oops, du svarade på frågan medans jag skrev den....
Senast redigerad av matseng 16 mars 2004, 11:36:06, redigerad totalt 1 gång.
apanap
Inlägg: 20
Blev medlem: 16 mars 2004, 03:02:59

Inlägg av apanap »

Båda ska läsa och skriva.
matseng
Inlägg: 2360
Blev medlem: 16 september 2003, 17:18:13
Ort: Dubai, United Arab Emirates
Kontakt:

Inlägg av matseng »

När man läser inkommande data så plockas det bort ut bufferten, så det går nog inte att fixa utan att ha ett program som är ansvarigt för läsandet och sedan låta dom andra programmen läsa från det programmet.

Outputten är det mindre problem med - särskilt om det bara är 1-teckens strängar som skickas.

Men är det inte enklare att låta java-appletet prata med det andra programmet via en socket, än att gå på serieporten/devicet direkt? Borde ge mindre problem med rättigheter och liknande.
apanap
Inlägg: 20
Blev medlem: 16 mars 2004, 03:02:59

Inlägg av apanap »

Jo det är nog sant, det blir dessutom snyggare.
Jag hoppades slippa lära mig socket programering, men det är bara att börja bläddra i lite böcker nu... =)
Användarvisningsbild
rickeboy
Inlägg: 678
Blev medlem: 13 augusti 2003, 09:12:17
Ort: Göteborg / Karlskrona
Kontakt:

Inlägg av rickeboy »

DMZ (Datormagazin) har en serie med socket programmering i linux... kolla upp att... jag garanterar att du kommer att ha hjälp av att... den är i 3 delar... tidningen som kommer har del 3 i sig... aktuell (tror jag vet inte om det har kommit ngn ny) har del 2 i sig och förra har del 1 i sig...

Hmm... jag har koden liggandes till artiklarna... hinner dock inte lägga in den nu...

EDIT: Sockets Del 1 är i DMZ 1 2004 osv

//Rille
Användarvisningsbild
axelsonic
EF Sponsor
Inlägg: 709
Blev medlem: 8 juni 2003, 20:56:03
Ort: Stockholm

Inlägg av axelsonic »

En enkel fuling är att låta ett program läsa av porten, skriva resultatet till en fil.

Och sedan låta de två andra programmen titta i filen, för att se om där ligger något.
Om filen = 0 bytes , så är den tom (no shit...).
Om filen != 0 bytes, så läser de datat, om det program som datat är ämnat för läser filen, så tar det innehållet och tömmet filen, för att sen spara den.
Och proceduren upprepas...
Förmodligen lite enklare än sockets, fast inte vackert =P .
apanap
Inlägg: 20
Blev medlem: 16 mars 2004, 03:02:59

Inlägg av apanap »

Jao det skulle funka, men snyggt är det som sagt inte.. =)
Jag ska försöka med sockets först, men verkar det allt för svårt så får det nog bli en sån där lösning.
Skriv svar