C++ Probs beim Auslesen serieller Schnittstelle

Neue Frage »

Auf diesen Beitrag antworten »
Wiesel88 C++ Probs beim Auslesen serieller Schnittstelle

Huhu!

Wir sollen für ein Schulprojekt einen an die Serielle Schnittstelle angeschlossenen
digitalen Messschieber mithilfe von C++ auslesen.
Leider bekommen wir mit unserem Quelltext zwar die richtigen Werte, doch manchmal wird die erste Ziffer des Ergebnisses abgeschnitten. Zusätzlich wird manchmal ein cout Befehl nicht ausgeführt der das Ganze als String anzeigen soll.
Wir verwenden MS Windows + Borland CBuilder 5 Professional.

Hier ist der Quelltext:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
#include <windows.h>
#include <iostream.h>
#include <string>

using namespace std;

int main (){

 HANDLE hCom;
 DWORD iBytesRead;
 DWORD dwEventMask;
 DCB   dcb;

  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 Data[14];
     char Byte=0;
     float Wert=0;
     DWORD dwBytesRecieved;



     for(int i=0; i<14; i++) {

      ReadFile (hCom,&Byte,sizeof (Byte), &dwBytesRecieved, NULL);
      Data[i] =Byte;
      }
        char Erg[7];
        for (int i=0;i<6;i++)
      {
        Erg[i] = Data[i+7];
        cout <<Erg[i]<<"\n";
      }
       Erg[6]=0;


      string s(Erg);

      cout <<"String: "<< s <<"\n";
     system("Pause");

 }
 
   CloseHandle(hCom); // COM1 schließen
   return (0);
}


Und hier noch Bilder der Ausgabe:

http://img114.imageshack.us/img114/9771/seriellxf7.jpg

Wäre nett wenn uns jemand helfen könnte. Tanzen
 
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »