serielle Schnittstelle net!

mstank

Mitglied
Moin Moin!

Da hab ich eine Methode mit der ich die serielle Schnittstelle auslesen möchte.
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
 
Zurück