000
22.01.2005, 13:27 Uhr
mstank
|
Moin Moin!
Da hab ich eine Methode mit der ich die serielle Schnittstelle auslesen möchte.
C++: |
void CTestDialogDlg::OnStart() { // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
CSerialCom Serial;
if (!Serial.OpenPort("COM1")) { AfxMessageBox("Can't Open Port!"); } Serial.ConfigurePort(4800, 8, FALSE, NOPARITY, TWOSTOPBITS); // char Data[100]="\0"; // BYTE DataByte='\0';
for (int j=0; j<10; j++) // while (m_Stop) {
// if (!Serial.OpenPort("COM1")) // AfxMessageBox("Can't Open Port!"); // } // // Serial.ConfigurePort(4800, 8, FALSE, NOPARITY, TWOSTOPBITS); //Read data from GPS
char Data[100]="\0";
BYTE DataByte='\0'; int nIndex=0; BOOL Return=Serial.ReadByte(DataByte); while (DataByte!='\r' && DataByte!='\n' && Return==TRUE) { Data[nIndex]=DataByte; nIndex++; Return=Serial.ReadByte(DataByte); } Data[nIndex++]='\r'; Data[nIndex++]='\n'; Data[nIndex++]='\0'; //Remove garbage characters nIndex=0; while (Data[nIndex]!='$' && nIndex<100) nIndex++; for (int i=0; i<nIndex; i++) { sMsg.Format("%s",(const char *) Data); } // AfxMessageBox(sMsg); m_Ausgabe.AddString(sMsg); }
Serial.ClosePort(); }
|
-------------------------------------------------------------------------------- Moin Moin!
Da hab ich eine Methode mit der ich die serielle Schnittstelle auslesen möchte. C/C++ Code:
C++: |
void CTestDialogDlg::OnStart() { // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
CSerialCom Serial;
if (!Serial.OpenPort("COM1")) { AfxMessageBox("Can't Open Port!"); } Serial.ConfigurePort(4800, 8, FALSE, NOPARITY, TWOSTOPBITS); // char Data[100]="\0"; // BYTE DataByte='\0';
for (int j=0; j<100; j++) // while (m_Stop) {
// if (!Serial.OpenPort("COM1")) // AfxMessageBox("Can't Open Port!"); // } // // Serial.ConfigurePort(4800, 8, FALSE, NOPARITY, TWOSTOPBITS); //Read data from GPS
char Data[100]="\0";
BYTE DataByte='\0'; int nIndex=0; BOOL Return=Serial.ReadByte(DataByte); while (DataByte!='\r' && DataByte!='\n' && Return==TRUE) { Data[nIndex]=DataByte; nIndex++; Return=Serial.ReadByte(DataByte); } Data[nIndex++]='\r'; Data[nIndex++]='\n'; Data[nIndex++]='\0'; //Remove garbage characters nIndex=0; while (Data[nIndex]!='$' && nIndex<100) nIndex++; for (int i=0; i<nIndex; i++) { sMsg.Format("%s",(const char *) Data); } // AfxMessageBox(sMsg); m_Ausgabe.AddString(sMsg); }
Serial.ClosePort(); } C/C++ Code: void CTestDialogDlg::OnStart() { // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
CSerialCom Serial;
if (!Serial.OpenPort("COM1")) { AfxMessageBox("Can't Open Port!"); }
Serial.ConfigurePort(4800, 8, FALSE, NOPARITY, TWOSTOPBITS); // char Data[100]="\0"; // BYTE DataByte='\0';
for (int j=0; j<100; j++) // while (m_Stop) {
// if (!Serial.OpenPort("COM1")) // AfxMessageBox("Can't Open Port!"); // } // // Serial.ConfigurePort(4800, 8, FALSE, NOPARITY, TWOSTOPBITS);
//Read data from GPS
char Data[100]="\0";
BYTE DataByte='\0'; int nIndex=0;
BOOL Return=Serial.ReadByte(DataByte); while (DataByte!='\r' && DataByte!='\n' && Return==TRUE) { Data[nIndex]=DataByte; nIndex++; Return=Serial.ReadByte(DataByte); }
Data[nIndex++]='\r'; Data[nIndex++]='\n'; Data[nIndex++]='\0';
//Remove garbage characters nIndex=0; while (Data[nIndex]!='$' && nIndex<100) nIndex++;
for (int i=0; i<nIndex; i++) { sMsg.Format("%s",(const char *) Data); } // AfxMessageBox(sMsg); m_Ausgabe.AddString(sMsg); }
Serial.ClosePort(); } C/C++ Code: void CTestDialogDlg::OnStart() { // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
CSerialCom Serial;
if (!Serial.OpenPort("COM1")) { AfxMessageBox("Can't Open Port!"); } Serial.ConfigurePort(4800, 8, FALSE, NOPARITY, TWOSTOPBITS); // char Data[100]="\0"; // BYTE DataByte='\0';
for (int j=0; j<100; j++) // while (m_Stop) {
// if (!Serial.OpenPort("COM1")) // AfxMessageBox("Can't Open Port!"); // } // // Serial.ConfigurePort(4800, 8, FALSE, NOPARITY, TWOSTOPBITS); //Read data from GPS
char Data[100]="\0";
BYTE DataByte='\0'; int nIndex=0; BOOL Return=Serial.ReadByte(DataByte); while (DataByte!='\r' && DataByte!='\n' && Return==TRUE) { Data[nIndex]=DataByte; nIndex++; Return=Serial.ReadByte(DataByte); } Data[nIndex++]='\r'; Data[nIndex++]='\n'; Data[nIndex++]='\0'; //Remove garbage characters nIndex=0; while (Data[nIndex]!='$' && nIndex<100) nIndex++; for (int i=0; i<nIndex; i++) { sMsg.Format("%s",(const char *) Data); } // AfxMessageBox(sMsg); m_Ausgabe.AddString(sMsg); }
Serial.ClosePort(); }
|
Diese Methode greift auf die Klasse CSerialCom zurück. Das Device liefert ASCII-Zeichen. Die Methode bekommt von der Klasse die Zeichen und liest sie in ein char-Array. Jeder empfangene Datensatz endet mit <CR> und <LF>. Dann wird das Array in ein CString umgewandelt und in einer ListBox ausgegeben.
Mein Problem ist z.Zt., daß heute morgen die Datensätze angezeigt wurden (nicht ganz so, wie ich es möchte, aber immerhin) und nun nur noch Fragmente bzw. hauptsächlich nur noch die Steuerzeichen ausgegeben werden.
Da ich Anfänger bin, weiß ich mir nicht so recht zu helfen.
Wer hat davon mehr Ahnung?
THX Markus -- Hier spricht die dunkle Seite der Macht! Dieser Post wurde am 22.01.2005 um 13:47 Uhr von mike editiert. |