Hilfe benötigt: Serielle Schnittstelle in MFC Anwendung



  • Vermutlich liegt es daran, dass Du die Serielle Klasse nicht im *Konstruktor* initialisieren darfst sondern erst in *OnCreate*!
    In Konstruktor ist nämlich das Fenster-Handle noch nicht gültig... und "Open" braucht ein gültiges Fensterhandle! (siehe unten!)

    Siehe das MFC-Beispiel:

    int CChildView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
    {
    	// Call base class
    	if (CWnd::OnCreate(lpCreateStruct) == -1)
    		return -1;
    
    	// Open the serial port
    	if (m_serial.Open(dlgComSelect.m_strComPort,this) != ERROR_SUCCESS)
    	{
    		AfxMessageBox(_T("Unable to open COM-port"),MB_ICONSTOP|MB_OK);
    		GetParent()->PostMessage(WM_CLOSE);
    		return 0;
    	}
    
    	return 0;
    }
    
    virtual LONG Open (LPCTSTR lpszDevice, CWnd* pwndDest, UINT nComMsg = WM_NULL, LPARAM lParam = 0, DWORD dwInQueue = 0, DWORD dwOutQueue = 0)
    	{ 
    		return CSerialWnd::Open(lpszDevice,pwndDest->GetSafeHwnd(),nComMsg,lParam,dwInQueue,dwOutQueue); 
    	}
    


  • Ok hab ich gemacht. Jetzt geht gar nix mehr...

    myPort1.Open() liefert 0 (müsste also ok sein).

    Trotzdem kann ich nicht mal mehr senden. Schade! War aber ein guter Hinweis. 😕



  • ⚠ HALT STOPP!!!

    Manchmal hilft ein Reset des µC! Es geht alles! Auch die Messages kommen jetzt an! 😃 😃 😃

    Also Danke für den Tipp

    Im Konstruktor ist nämlich das Fenster-Handle noch nicht gültig...

    Das war der richtige Treffer!



  • :xmas1:
    Hat jetzt aber lange gedauert, bis ich das gesehen hab... 🤡



  • Hallo Leute!

    Jetzt habe ich nochmal ein kleines Problem...

    Folgende Ausgangssituation: SDI Anwendung mit FormView

    Ich habe in der Doc Klasse meine serielle Schnittstelle angelegt. Jetzt möchte ich ja auch die entsprechenden Messages verarbeiten (und zwar in der Doc Klasse). .Open() akzeptiert den this Zeiger nicht da der nicht CWnd* ist. Mhhh ok. Dachte ich mir, ich gebe das MainFrame an und rufe von da aus eine Funktion in meiner Doc Klasse auf... Pustekuchen! "Unzulässiger Aufruf einer nicht statischen Memberfunktion" 😕 Was auch immer das bedeuten mag!

    Wie kann ich das noch lösen?


Anmelden zum Antworten