vielleicht hilft das?
gruesse von der katzCode://-------------------------------------------------------------------------- // daten vom psion 3c über RS232 empfangen // katze am freitag den 13.7.7 //-------------------------------------------------------------------------- #include <stdio.h> #include <windows.h> #include <conio.h> // nur für getch. kein ansi-standard #include "signal.h" void sigfunc(int sig) { if(sig == SIGINT) { printf("Got Ctrl-c.\n"); // hier muesste noch ein CloseHandle(port) rein getch(); exit(1); } return; } int main(void) { HANDLE port; DCB dcb; unsigned char c; unsigned long dwNum; signal(SIGINT,sigfunc); port=CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); // serielle Schnittstelle oeffnen if(!port){printf("failed to open port!\n");getch();exit(1);} if(!GetCommState(port, &dcb)){CloseHandle(port);printf("failed to get port!\n");getch();exit(1);} dcb.DCBlength=sizeof(dcb); dcb.BaudRate = CBR_38400; // Datenrate dcb.ByteSize = 8; // Datenbits dcb.Parity = 0; // kein Paritätsbit dcb.StopBits = ONESTOPBIT; // 1 Stoppbit dcb.fBinary = TRUE; dcb.fParity = FALSE; dcb.fNull=TRUE; //FALSE; dcb.fDtrControl=0; dcb.fDsrSensitivity=FALSE; dcb.fRtsControl=0; //dcb.fRtsControl = 0; // RTS auf -12 Volt //dcb.fDtrControl = 1; // DTR auf +12 Volt if(!SetCommState(port, &dcb)){CloseHandle(port);printf("failed to set port!\n");getch();exit(1);} printf("listening..\n"); while(1) // hier fuehrt nur ctrl+c wieder raus { if(ReadFile(port,&c,1,&dwNum,NULL)); { printf("%c",c); } } CloseHandle(port); // serielle Schnittstelle schliessen return(0); }







Zitieren
Lesezeichen