C++ Messgerät initialisieren



  • Hallo, liebe C++ Gemeinde
    Ich bin neu hier und habe mich einfach mal angemeldet und schon meine erste Frage 🙂
    Muss aktuell in Physik ein Messgerät-Messer realisieren, sprich ein GUI und entsprechende Funktionen zum Initialisieren des Geräts, Messwerte ausgeben und speichern, etc.
    Nunja, bin nicht gerade der Beste in C gewesen, und C++ haben wir nicht durchgenommen im Unterricht, sitze also sozusagen auf alleine in einem untergehenden Boot 😕
    Ich stelle einfach mal meine erste Frage 🙂
    Arbeite mit Visual Studio 2008, bzw muss -.-
    Also:
    Habe in Form1.h ein Label namens "lbl_ausgabe" erstellt, möchte jetzt in meiner "PhysikMessgerät.cpp" jetzt Text auf dieses Label bei einer if-Abfrage einen Text anzeigen lassen.
    Habe also:

    Form1.h

    public: System::Windows::Forms::Label^ lbl_ausgabe;

    und:

    PhysikMessgerät.cpp:

    if (Anweisung)
    {
    lbl_ausgabe->Text = "Com Port konte nicht initialisiert werden";
    }
    else
    {
    lbl_ausgabe->Text = "Initialisierung erfolgreich";
    }

    meine Fehlermeldung ist nun folgende:

    .\PhysikMessgerät.cpp(33) : error C2065: 'lbl_ausgabe': nichtdeklarierter Bezeichner
    .\PhysikMessgerät.cpp(33) : error C2227: Links von "->Text" muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden.
            Typ ist ''unknown-type''
    .\PhysikMessgerät.cpp(36) : error C2065: 'lbl_ausgabe': nichtdeklarierter Bezeichner
    .\PhysikMessgerät.cpp(36) : error C2227: Links von "->Text" muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden.
            Typ ist ''unknown-type''
    

    Laut meinen Klassenkameraden müsste das eigentlich funktionieren, sogar wenn ich "->" eingebe, sollte eigentlich eine Auswahl erscheinen, jedoch funktioniert das nicht so

    Hoffe auf baldige Antworten, werde auch noch ein paar Fragen mehr stellen ^^

    Vielen Dank schonmal im vorraus
    MFG DeV4der



  • Falsches Forum: Korrekt wäre C++/CLI.



  • Scheint mir nicht zu passen: Form1.h und PhysikMessagerät.cpp sollen ein Zusammenhang haben?

    Zeig mal das ganze PhysikMessgerät.cpp.

    Simon



  • Dieser Thread wurde von Moderator/in Marc++us aus dem Forum C++ in das Forum C++/CLI mit .NET verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • hi, bin ausm urlaub wieder da^^
    also hier ist die PhysikMessgerät.cpp

    // PhysikMessgerät.cpp: Hauptprojektdatei.
    
    #include "stdafx.h"
    #include "Form1.h"
    #include "windows.h"
    #include "stdio.h"
    #include <iostream>
    
    using namespace PhysikMessgerät;
    
    [STAThreadAttribute]
    int main(array<System::String ^> ^args)
    {
    	// Aktivieren visueller Effekte von Windows XP, bevor Steuerelemente erstellt werden
    	Application::EnableVisualStyles();
    	Application::SetCompatibleTextRenderingDefault(false);
    	CreateDirectoryA("c:\\MultiMeter",NULL);
    	CreateDirectoryA("c:\\MultiMeter\\Exportdaten",NULL);
    
    	// Hauptfenster erstellen und ausführen
    	Application::Run(gcnew Form1());
    
    HANDLE com;
    		com = CreateFileA( "COM3:",
                          GENERIC_READ | GENERIC_WRITE,
                          0,
                          0,
                          OPEN_EXISTING,
                          0,
                          NULL);
        if (com == INVALID_HANDLE_VALUE)
        {
            lbl_ausgabe->Text = "Com Port konte nicht initialisiert werden";
        } else
    	{
    		lbl_ausgabe->Text = "Initialisierung erfolgreich";
    	}
        DWORD dwSetMask = 0x04;
        DWORD purge = PURGE_RXABORT | PURGE_RXCLEAR | PURGE_TXABORT | PURGE_TXCLEAR;
        DCB dcb;
        dcb.DCBlength = sizeof(DCB);
        GetCommState(com,&dcb);
        dcb.BaudRate = CBR_2400;
        dcb.fParity  = TRUE;
        dcb.ByteSize = 7;
        dcb.StopBits = 0;
        dcb.Parity = ODDPARITY;
        dcb.fOutxCtsFlow    =FALSE;
        dcb.fOutxDsrFlow    =FALSE;
        dcb.fDtrControl  = DTR_CONTROL_ENABLE;
        dcb.fDsrSensitivity = FALSE;
        dcb.fAbortOnError = FALSE;
        dcb.fOutX = FALSE;
        dcb.fInX    =FALSE;
        dcb.ErrorChar = FALSE;
        dcb.fOutxCtsFlow    =FALSE;
        dcb.fNull = FALSE;
        dcb.fRtsControl = RTS_CONTROL_DISABLE;
        dcb.XonLim = 512;
        dcb.XoffLim = 1;
        dcb.XonChar = 17;
        dcb.XoffChar = 19;
    
        SetCommState(com,&dcb);
        PurgeComm(com,purge);
        COMMTIMEOUTS timeout;
    
        timeout.ReadIntervalTimeout = 1;
        timeout.ReadTotalTimeoutConstant = 0;
        timeout.ReadTotalTimeoutMultiplier = 0;
        timeout.WriteTotalTimeoutConstant = 0;
        timeout.WriteTotalTimeoutMultiplier = 0;
    
        SetCommTimeouts(com, &timeout);
        SetupComm(com,2048,2048);
    
    return 0;
    
    }
    


  • Du tust Dir keinen gefallen, mit dem was Du machst.... siehe:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-263084.html

    Verwende bitte C# und nimm die System.IO.SerialPort-Klasse...

    oder nimm die MFC und verwende
    http://www.codeproject.com/KB/system/serial.aspx


Anmelden zum Antworten