Serieport i Cygwin

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
JJ
Inlägg: 366
Blev medlem: 16 maj 2005, 21:33:02

Serieport i Cygwin

Inlägg av JJ »

Jag har lyckats öppna serieporten från ett C-program i Cygwin. Jag har lyckats skriva och läsa blockerande.

Nu vill jag kunna läsa utan att programmet hänger sig om inget tecken kommer in.

Efter vad jag förstått skall man installera en hanterare för SIGIO-signalen. Inget exempel jag hittat har fungerat för mig. Någon som har ett fungerande exempel eller vet hur man gör?
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

http://www.tldp.org/HOWTO/Serial-Progra ... tml#AEN144

Hela HOWTO:n är nyttig att läsa.

Alternativet om du inte vill använda sig av avbrottssignaler är väl att du pollar om det finns data att läsa, efter att du har öppnat serieporten i "non-blocking mode".

Fast jag har ingen aning om det här fungerar i Cygwin.
JJ
Inlägg: 366
Blev medlem: 16 maj 2005, 21:33:02

Inlägg av JJ »

hm...det är den koden jag har försökt med och inte fått att fungera. (Jag får väl erkänna att jag inte läst varje bokstav i HOWTOn, så jag kan ju ha missat ngt där.)

Hur gör man för att polla? Optionen O_NONBLOCK har inte gjort till eller från för mig.

Cygwin skall vara samma som Linux "i reklamen" men man vet ju aldrig.
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

Jag har för mig att det där exemplet fungerade för mig.

För att polla kan man använda select() eller poll(). När jag höll på med det där tyckte jag poll() var smidigast att använda. Med hjälp av svaret från t ex poll() får du reda på när du kan skriva/läsa till/från porten.

Tyvärr har jag inga exempel att ge dig, då jag har dom koderna på en annan dator.
JJ
Inlägg: 366
Blev medlem: 16 maj 2005, 21:33:02

Inlägg av JJ »

Jajjemen, poll() verkade vara vad jag letade efter. Tackar!
Skriv svar