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
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.
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.
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.
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... =)
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...
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 .
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.