003
13.01.2005, 09:33 Uhr
mstank
|
Hallo alle zusammen!
Hier der Code, den ich verwenden möchte:
Die Variable:
C++: |
private: CString sMsg;
|
Die Member_Funktion OnTestStart in der Dokumentenklasse, die ich über das Menü der SDI aufrufe:
C++: |
[void CRS232SerialComDoc::OnRs232Lesen() { // TODO: Code für Befehlsbehandlungsroutine hier einfügen
//Versuch einer fortlaufenden while-Schleife, zum gesteuerten Beenden //des Einlesens der NMEA0183-Daten
CSerialCom Serial;
m_Beenden = FALSE;
//Open Port: COM1 für Notebook, COM2 für PC-HOME, PC-FH evtl. COM1 if (!Serial.OpenPort("COM1")) { AfxMessageBox("Failed to open port!"); }
//Configure COM1 für Notebook, COM2 für PC-HOME, PC-FH evtl. COM1 Serial.ConfigurePort(4800, //Baud Rate 8, //Data Bits FALSE, //Has Parity NOPARITY, //Parity Bits TWOSTOPBITS //Stop Bits );
//Read data from GPS char Data[100]="\0";
BYTE DataByte='\0'; int nIndex=0;
//Obtaining information from GPS character by character //Note: NMEA0183 sentences will finished by "\r\n" characters! 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 if any exists! nIndex=0; while (Data[nIndex]!='$' && nIndex<100) nIndex++;
//CString sMsg; fällt hier weg, da nun als Member-Variable deklariert
//Umwandeln des char-Array in ein Character-String, damit der //Inhalt sowohl von der MessageBox, als auch von TextOut //gelesen werden kann for (int i=0; i<100; i++) sMsg.Format("%s", (const char*)Data); AfxMessageBox(sMsg);
Serial.ClosePort();
}/cpp]
Und nun die Ausgabe in OnDraw:
C++: |
void CRS232SerialComView::OnDraw(CDC* pDC) { CRS232SerialComDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // ZU ERLEDIGEN: Hier Code zum Zeichnen der ursprünglichen Daten hinzufügen
const CString *pData = pDoc->GetData(); pDC->TextOut(0,0, (const CString*)pData);
}
|
Dazu habe ich noch Anmerkung, daß die Daten ständig eingelesen werden. Jedesmal, wenn ein CString erzeugt ist, soll dieser angezeigt werden.
Gruß Markus -- Hier spricht die dunkle Seite der Macht! |
|
|
|
004
13.01.2005, 12:53 Uhr
Tommix
|
Hallo, möglicherweise habe ich die Frage nicht ganz verstanden, aber mach doch einfach:
C++: |
CString CRS232SerialComDoc::GetData() const { return sMsg; }
void CRS232SerialComView::OnDraw(CDC* pDC) { // ... pDC->TextOut(0, 0, pDoc->GetData()); }
|
Gruß, Tommix |
|
|
|
ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek ( www.thwboard.de)
Anpassungen des Forums
© by Flo-Soft ( www.flo-soft.de)
Sie sind Besucher:
|