serielle schnittstelle und c++
-
hast du in deinem Code:
#include "headerdatei.h"
-
ja
-
hi chris
frag doch einfach mal im richtigen forum, sprich: bei den mfc könnern (hier im mfc forum).
außerderm gibts hier eine beispielanwendung, denke ich
http://www.codeguru.com/Cpp/I-N/network/serialcommunications/article.php/c2503zum download.
so long
ps: auf mfc komme ich, weil im der zu donwloadenden beispielanwendung
#include "stdafx.h"
benötigt wird also mfc mit einbinden!!
-
habs mal eben durchgetestet: ein projekt anlegen
win32 konsole, aber MIT mfc unterstützung.dann gehts wunderbar mit dem downgeloadeten source.
so long
-
void CI2c_porgDlg::OnRead() { CComboBox * pCB = (CComboBox *) GetDlgItem ( IDC_COM ) ; int com_no = pCB -> GetCurSel () ; if ( com_no >= 0 ) { pCB -> GetLBText( com_no , iCOM ) ; CFileDialog sa ( 0,". bin", "i2c", 0, "Bin-Dateien(*.bin)|*.bin||" ) ; if (sa.DoModal() == IDOK) { if (iCOM == "COM1") cport = 1; if (iCOM == "COM2") cport = 2; UpdateData ( TRUE ) ; CString m_sPath = sa.GetPathName( ); CFile newbin; newbin.Open( m_sPath, CFile::modeCreate|CFile::modeWrite); CSerial serial; if (serial.Open(1, 9600)) { char* lpBuffer = new char[500]; int nBytesRead = serial.ReadData(lpBuffer, 500); char szSampleText[255]; strcpy(szSampleText, lpBuffer); newbin.Write (szSampleText,255); delete []lpBuffer; } else AfxMessageBox("Failed to open port!"); } } else MessageBox ("Bitte COM-Port wählen!"); }
So sieht mein Programmstück bisher aus, liefert mir aber einen Fehler....
Debug Assertiation Failed
Programm:....
File:filecore.cpp
Line:237
-
Hallo,
in Zeile 237 der filecore.cpp befindet sich das hier:
ASSERT_VALID(this);
also stimmt irgendetwas mit dem CFile-Objekt newbin nicht, das mußt du prüfen, warum evtl. keine Datei erstellt wurde (dazu z.B. den Rückgabewert von newbin.Open prüfen, oder den Dateinamen ausgeben lassen).
MfG
-
chris`- schrieb:
void CI2c_porgDlg::OnRead() { CComboBox * pCB = (CComboBox *) GetDlgItem ( IDC_COM ) ; int com_no = pCB -> GetCurSel () ; if ( com_no >= 0 ) { pCB -> GetLBText( com_no , iCOM ) ; CFileDialog sa ( 0,". bin", "i2c", 0, "Bin-Dateien(*.bin)|*.bin||" ) ; if (sa.DoModal() == IDOK) { if (iCOM == "COM1") cport = 1; if (iCOM == "COM2") cport = 2; UpdateData ( TRUE ) ; CString m_sPath = sa.GetPathName( ); CFile newbin; newbin.Open( m_sPath, CFile::modeCreate|CFile::modeWrite); CSerial serial; if (serial.Open(1, 9600)) { char* lpBuffer = new char[500]; int nBytesRead = serial.ReadData(lpBuffer, 500); char szSampleText[255]; strcpy(szSampleText, lpBuffer); newbin.Write (szSampleText,255); delete []lpBuffer; } else AfxMessageBox("Failed to open port!"); } } else MessageBox ("Bitte COM-Port wählen!"); }
So sieht mein Programmstück bisher aus, liefert mir aber einen Fehler....
Debug Assertiation Failed
Programm:....
File:filecore.cpp
Line:237aber das beispiel, was ich dir da oben zum download angeraten habe, funktioniert doch wohl. hast du dich daran orientiert?
nochmal: frag doch im richtigen unterforum. Mfc
-
Danke für die hilfe, problem hat sich gelöst... habe einfach den strcpy befehl rasugenommen und schreibe den puffer direkt in die datei.
-
gibt es eine möglichkeint den buffer der seriellen schnittstelle zu löschen?
-