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
Gast
#2190520
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
Gast
#2190554
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
Gast
#2190557
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
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.