Ongelmani on ikuisesta silmukasta poistuminen, esimerkiksi ESC-napin painalluksella.
Minulla on ikuinen silmukka, joka pollaa koko ajan sarjaportista tietoa. Miten saan napattua käyttäjän näppäimistön painallukset, ilman että ohjelma jää odottamaan painallusta, vaan jatkaa pollausta normaaliin tapaan, jos mitään näppäintä ei paineta?
Ohjelma pyörii Linux-koneessa ja en siis halua lopettaa koko ohjelmaa, vaan päästä vain ulos silmukasta.
Laitat muuttujan (esim. bool kayttajaHaluaaPoistua = false )
Sit ikuisessa silmukassa
while (true) { if (kayttajaHaluaaPoistua) break; }
Toki myös koko silmukan voi muuttaa epäikuiseksi:
while (!kayttajaHaluaaPoistua) { }
Sitten käyttöliittymäsäikeessä kun käyttäjä painaa ESC-näppäintä, niin asetat tuon muuttujan arvoksi true.
Sinänsä tietenkin käyttöliittymän täytyy esim. pyöriä eri säikeessä kuin missä tuo ikuinen silmukka on, mutta näinhän se varmaan muutenkin sinulla on.
Ei ole säikeitä käytössä nykyisessä ohjelmaversiossa. Ja niin sen yrittäisin pitääkin, jos vain löytyy ratkaisu tuohon silmukasta poistumiseen.
Voisit käyttää selectiä tarkistamaan, onko stdin:ssä mitään luettavaa ja jos on niin luet sieltä merkin ja mikäli se on se mikä esc painettaessa tulee, niin sitten keskeytät ohjelman.
Kiitti vinkeistä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.