Hallo zusammen Ich habe ein kleines Problem, ich habe ein Programm geschrieben, und möchte jetzt eigentlich die ASCII-Zeichen via RS232 vom PC her auf den PIC18F46K20 übertragen zur Weiterverarbeitung. Momentan nehme ich noch a=getch(); nur das problem an dieser funktion ist, dass sie wartet bis ein Char dahergeflogen kommt. Ich habe die Funktion nirgns gewunden, und weiss nicht genau was sie macht. Ich möchte eigentlich dass nur dann ein Char eingelesen wird, wenn einer daher kommt, und ich sonnst durch das Programm rattern kann, also dan Asciiwert in einen buffer in einem Interrupt abspeichern kann und dann holen kann wenn ich wieder vorbeikomme. Wie kann ich das ermöglichen? Zusammengefasst: Ich suche einen ersatz für getch(); der nicht wartet, bis ein char via Terminal daher kommt. Ich habe schon überall gesucht, aber keine Antwort gefunden, benutze das MPLAB IDE v8.63 in der C sprache. Ich danke schon im voraus für eine Antwort :) Grüsse Christoph
Wenn du das für den PC brauchst wäre folgende Lösung vieleicht etwas: if( kbhit() ) a=getch(); kbhit() "überwacht" dabei ob eien Taste gedrückt wurde. War dem so wird der dir bekannte getch() ausgeführt. Gruß Dietmar
Hallo!
Aber nur wenn mit PC du DOS/Windows bzw. VC meinst.
kbhit ist nicht Teil von ANSI-C.
#include <termios.h>
int kbhit(void);
int kbhit(void) {
struct termios term, oterm;
int fd = 0;
int c = 0;
tcgetattr(fd, &oterm);
memcpy(&term, &oterm, sizeof(term));
term.c_lflag = term.c_lflag & (!ICANON);
term.c_cc[VMIN] = 0;
term.c_cc[VTIME] = 1;
tcsetattr(fd, TCSANOW, &term);
c = getchar();
tcsetattr(fd, TCSANOW, &oterm);
if (c != -1)
ungetc(c, stdin);
return ((c != -1) ? 1 : 0);
}
Gruss
Th
getch könnte so implementiert sein:
int getch();
int getch()
{
static int ch = -1, fd = 0;
struct termios neu, alt;
fd = fileno(stdin);
tcgetattr(fd, &alt);
neu = alt;
neu.c_lflag &= ~(ICANON|ECHO);
tcsetattr(fd, TCSANOW, &neu);
ch = getchar();
tcsetattr(fd, TCSANOW, &alt);
return ch;
}
danke werde es mal ausprobieren :) aber sieht schon recht gut aus, dass es funktionieren wird MFG Christoph
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.