serielle schnittstelle
-
hCom = CreateFile ("COM1", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); dcb.DCBlength = sizeof(DCB); // Laenge des Blockes MUSS gesetzt sein! GetCommState (hCom, &dcb); // COM-Einstellungen holen und aendern dcb.BaudRate = 9600; // Baudrate dcb.ByteSize = 8; // Datenbits dcb.Parity = NOPARITY; // Parität dcb.StopBits = ONESTOPBIT; // Stopbits SetCommState (hCom, &dcb); // COM-Einstellungen speichern if(!SetCommMask(hCom, EV_RXCHAR )) printf ("fehler SetCommmMask"); if(WaitCommEvent(hCom, &dwEventMask, NULL)) { char *Byte[10]; DWORD dwBytesRecieved; do{ ReadFile (hCom,&Byte,sizeof (Byte), &dwBytesRecieved, NULL); //if (dwBytesTransferred > 0) printf("%d\n\r",Byte); printf("%d",dwBytesRecieved); } while (dwBytesRecieved > 0); } CloseHandle(hCom); // COM1 schließen
hallo
wenn ich eine zahl vom comport auslesen möchte, sehe ich stat den zahl irgend was anders..es wäre nett´, wenn jemand helfen kann..
Viele Grüsse...
-
Was erwartest du, was bekommst du?
-
titel schrieb:
char *Byte[10]; ... printf("%d\n\r",Byte);
%d und
char *Byte[10]
passt irgendwie nicht (so wie du es benutzt).Weißt du überhaupt was ein
char *Byte[10]
ist?
-
sory, das sollte eigentlich so sein.
printf("Byte : %c\n\r",Byte);
ich möchte vom comport eine zahl zum Bsp. 10,5 auslesen.
-
Nein, das ist es auch nicht.
Mit
%c
gibst du ein einzelnes Zeichen aus. Das wäre bei dir die '1'.
Einchar *Byte[10];
ist ein Array aus zehn Zeigern, die auf char zeigen.Du möchtest aber ein einfaches Array aus char haben und das als String ausgeben.
char Byte[10]; ReadFile (hCom,&Byte,sizeof (Byte)-1, &dwBytesRecieved, NULL); Byte[dwBytesRecieved] = '\0'; // Nullterminierung des Strings printf("%s\n\r",Byte);
Danach kannst du eine Umwandlung in ein double machen:
double wert; wert = strtod(Byte,NULL);
-
Hast du schon mal in die Überschrift zu diesem Subforum geschaut?
Dort steht unmissverständlich:"
Fragen zur Seriellen-Schnittstelle oder ähnliches haben nichts mit C zu tun. Bitte dies in den entsprechenden Foren (Unix, DOS, WinAPI, Rund Um Die Programmierung) posten. Danke
"
-
Das passt hier schon hin.
Sein Problem hat nur sekundär mit der Seriellen Schnittstelle zu tun.Statt dem ReadFile kann man auch
strcpy(Byte,"10.5"); dwBytesRecieved = strlen(Byte);
schreiben und er hat immer noch die selben Schwierigkeiten.
-
vielen dank !!