TComPort zeigt nix an



  • Hi. Ich habe auch heute die Komponente TComPort Beta 4 geladen und wollte diese mal testen, allerdings passiert bei der garnichts.

    Ich habe eine Testkabel am Testlaptop. Dort läuft oc-console und ein externes Tool. oc-console sendet einen String über COM6(USB) und das externe Tool empfängt auch diesen über COM5(USB).

    Ich habe in meiner VCL Form
    ComPort;
    ComLed;
    ComComboBox für Port auswählen und einen TButton sowie TMemo für das empfangen des Textes.

    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    	if (ComPort->Connected)
    		ComPort->Close();
    	else
    		ComPort->Open();
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::ComPortRxChar(TObject *Sender, int Count)
    {
    	AnsiString Str;
    	ComPort->ReadStr(Str, Count);
    	Memo->Text = Str;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::ComPortError(TObject *Sender, TComErrors Errors)
    {
    	ShowMessage("Error");
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::ComPortAfterOpen(TObject *Sender)
    {
    	Button1->Caption = "Close";
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::ComPortAfterClose(TObject *Sender)
    {
    	Button1->Caption = "Open";
    }
    //---------------------------------------------------------------------------
    

    Ich habe ComLed1 drin auf ComPort gesetzt und LedSignal auf "IsConn" gesetzt, aber die anzeige leuchtet nie auf.
    Ich verstehe nicht wo der Fehler sein soll.

    Das externe Tool arbeitet so:

    DCB dcbCommPort;
    
      Baudrate96->Checked = Config&0x0020;
      LabelConfig->Caption = AnsiString(Config);
    
      // OPEN THE COMM PORT.
    
      hComm = CreateFile("COM3",
                          GENERIC_READ | GENERIC_WRITE,
                          0,
                          0,
                          OPEN_EXISTING,
                          0,
                          0);
    
      // IF THE PORT CANNOT BE OPENED, BAIL OUT.
    
      if(hComm == INVALID_HANDLE_VALUE) Application->Terminate();
    
      // SET THE COMM TIMEOUTS.
    
      GetCommTimeouts(hComm,&ctmoOld);
      ctmoNew.ReadTotalTimeoutConstant = 100;
      ctmoNew.ReadTotalTimeoutMultiplier = 0;
      ctmoNew.WriteTotalTimeoutMultiplier = 0;
      ctmoNew.WriteTotalTimeoutConstant = 0;
      SetCommTimeouts(hComm, &ctmoNew);
    
      // SET BAUD RATE, PARITY, WORD SIZE, AND STOP BITS.
      // THERE ARE OTHER WAYS OF DOING SETTING THESE BUT THIS IS THE EASIEST.
      // IF YOU WANT TO LATER ADD CODE FOR OTHER BAUD RATES, REMEMBER
      // THAT THE ARGUMENT FOR BuildCommDCB MUST BE A POINTER TO A STRING.
      // ALSO NOTE THAT BuildCommDCB() DEFAULTS TO NO HANDSHAKING.
    
      dcbCommPort.DCBlength = sizeof(DCB);
      GetCommState(hComm, &dcbCommPort);
      BuildCommDCB("9600,N,8,1", &dcbCommPort);
      SetCommState(hComm, &dcbCommPort);
    

    Jemand eine Idee warum TComPort nicht reagiert und warum die "Leuchte" nicht leuchtet?



  • Hat sich erledigt 🙂
    Ist wohl etwas verbugt die gute Komponente. Man darf nicht die mitgelieferten Comboboxen, zum einstellen, nutzen. Verändern nämlich nichts.


Anmelden zum Antworten