Hej
Jeg sidder med endnu et C-problem
Jeg har behov for at undlæse en tekst, problemet er at det skal foregå løbende.
Dette skyldes at jeg i en uendelig løkke både skal indlæse tekst, sende og modtage til og fra COM-porten og derfor kan den ikke bare stå og vente på at brugeren får indtastet hele sin besked.
har forsøgt med
while(1)
{
if (kbhit()!=0)
{
if ((c=getchar()) != '\n')
{
myString[i]=(char)c;
i=i+1;
}
else
{
//Her sker der så ting og sager med input
}
}
//MODTAG
//SEND
// Evt delay hvis nødvendigt
}
Der sker her dette at ordren bliver indtastet, enter trykkes og det indtastede bliver echoed til konsollen. Men der reageres først på det indtastede ved det efterfølgende tastetryk. Er det muligt at få den til at reagere når brugeren trykker enter ?
Formodentlig benytter jeg kbhit forkert.
13-10-2007
< disclaimer >Jeg er ikke C-mand, så dette er kun et forslag:
< /disclaimer >
Skal du ikke reagere på Enter for at fortælle programmet, at indtastningen er færdig? F.eks.
if ((c=getchar()) = '\n')
{
input_ready=true;
}
01-01-1970
Hmmm findes der ikke en funktion der kan se hvilket tegn der er sidst ankomment i keyboard buffer uden at fjerne det ?
07-08-2008
Brug peek()
Syntax int peek( );
Returns the next character without extracting it from the stream. Returns EOF if the stream is at end of file or if the ipfx function indicates an error.
Held og lykke
Morten
01-01-1970
Takker for input - flyttede interfacet ind på selve knuden (embedded) og fandt en lukket erstatning for kbhit der havde forputtet sig i en headerfil (Den kræver bare at en ligeledes lukket getchar henter tegnet lige efter), så det lykkedes at få indlæsningen til at virke.