[C++] signaal input via com poort

Pagina: 1
Acties:

  • Master_Egg
  • Registratie: November 2000
  • Laatst online: 11-09 16:44

Master_Egg

Schapie schapie schapie!

Topicstarter
in een programma wat ik aan het maken ben moet via de com poort van de pc een signaal binnenkomen. Dit signaal wordt door mijn prorgramma wat geschreven is in C++ uitgelezen, met een functie. Nou is de bedoeling dat dit signaal wordt gecontroleerd door het programma. Als er geen signaal binnenkomt hoeft er niks te gebeuren en moet het programma gewoon verder draaien. Komt er echter een bepaald signaal binnen dan moet het programma stoppen en een melding geven.

Dit wilde ik eerst doen door de functie waarin de com poort wordt gecheckt gewoon steeds op te roepen meerdere keren in het programma. Alleen als het programma bijv. wacht op een invoer via de console, dan staat het programma in principe stil. Het com poort signaal wordt dan niet gecontrolleerd. Dit moet echter wel regelmatig gebeuren. Nu is mijn vraag hoe ik dit het best kan aanpakken zodat de invoer van de com poort regelmatig wordt gecontrolleerd. Zelf dacht ik aan iets van een soort interrupt, maar ik weet niet of zoiets kan onder C++. Wie helpt mij verder. thx

  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 03-09 23:48
controleren of er een toets is ingedrukt hoeft niet blokking te zijn, dus je doet ongeveer zo:
code:
1
2
3
4
5
while (!toets())
{
  checkCom();
  ff wachten();
}

Onder dos en windows kan je hier kbhit() voor gebruiken in conio.h. Onder unix-achtigen zou ik het niet weten (misschien met select() :?)

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 15-09 22:39
Je kunt volgens mij het beste een non-blocking methode gebruiken voor het checken op input, zowel op de comporrt als je keyboard.

Een andere manier is het plaatsen van bijvoorbeeld de communicatieroutines in een andere thread.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.