ActiveX - Steuerelement: MSCOMM



  • Bin nicht sicher wo das hingehört, habs hier rein getan, da ich es in einem MFC-Prog nutze...

    Nun zu meinem prob:
    Um Bitfolgen (=binär) auzugeben, bin ich auf das ActiveX Steuerelemt MSCOMM gestossen. Hab mich auch gleich dahinter gemacht, aber leider krieg ichs nicht hin :(. Ich möchte es aber mit MSCOMM lösen, und nicht mit sonst was...

    hier ist mein Code:

    void CComtest2Dlg::OnSendff() 
    {
    // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
    out.SetCommPort(1);
    out.SetSettings("9600,N,8,1");
    out.SetPortOpen(TRUE);
    out.SetOutput(255);
    out.SetPortOpen(FALSE);
    }
    

    out hab ich als Member Variable des Typs CMSComm definiert (public)
    und die 255 sind in binär ja 11111111

    aber leider kommt die Fehlermeldung:

    C:\comtest2\comtest2Dlg.cpp(223) : error C2664: 'SetOutput' : Konvertierung des Parameters 1 von 'const int' in 'const struct tagVARIANT &' nicht moeglich
    Ursache: Konvertierung von 'const int' in 'const struct tagVARIANT' nicht moeglich
    Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Ueberladungsaufloesung des Konstruktors ist mehrdeutig

    wo ist der Fehler, wie muss ich die 255 schreiben damit er sie ausgeben kann?

    simon

    [ Dieser Beitrag wurde am 03.11.2002 um 09:32 Uhr von simon_210 editiert. ]



  • Schau Dir doch mal den Typ VARIANT an.



  • ok, hab mir da so ziemlich alles durchgelesen und hab den code etwas geändert

    ich hab eine neue variable output als VARIANT deklariert und dann 255 hineingeladen (output = 255). hab dann out.SetOutput(output); und das alles so laufen lassen, nur kommt jetzt eine neue Fehlermeldung:

    error C2679: Binaerer Operator '=' : Kein Operator definiert, der einen rechtsseitigen Operator vom Typ 'const int' akzeptiert (oder keine geeignete Konvertierung moeglich)

    was soll das? wie muss ich es machen, damit es klappt?

    simon



  • Hab nochmal etwa "geforscht"🕶 und habe den code nochmal etwas umgeändert:

    void CComtest2Dlg::OnSendff() 
    {
        // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
        out.SetCommPort(1);
        out.SetSettings("9600,N,8,1");
        out.SetPortOpen(TRUE);
    
        CByteArray data;
        data.Add(255);
        output=data;
        out.SetOutput(output);
    
        out.SetPortOpen(FALSE);
    }
    

    output ist als Variable des Typs COleVariant definiert
    out ist als Variable des Typs CMSComm definiert

    ich kann das programm jetzt endlich ausführen, aber sobald ich diese Funktion ausführe, kommt ein Fehler: Debug Assertion Failed, wobei auf diese Zeile higewiesen wird:

    ASSERT(m_pCtrlSite != NULL);    // not an OLE control (not yet, at least)
    

    ich hab dann nur noch die möglichkeit abzubrechen...... (oder zu debuggen)

    kann mir da wer helfen?

    simon

    [ Dieser Beitrag wurde am 03.11.2002 um 17:13 Uhr von simon_210 editiert. ]


Anmelden zum Antworten