Frage zu TComPort und asynchrones Empfangen



  • Hallo.

    Ich kann es leider nicht mehr testen an diesem Rechner, habe aber eine Frage zu dieser Komponente und dem Auslesen des COMs. Es funktioniert alles einwandfrei, mit meinen eigenem Senden und Empfangen. Jetzt sendet aber ein Fremdserver mit der Spezifikation "Asychronous serial transmission".

    Bisher lese ich die Daten über

    void __fastcall TForm1::ComPortRxChar(TObject *Sender, int Count)
    {
    	try
    	{
    		AnsiString TextBuf;
    		ComPort->ReadStr(TextBuf, Count);
    

    Erhalte aber nur irgendwelche Rechtecke und bunte Zeichen, liegt das daran das ich vergessen habe das Parity auf "Even" zu stellen(Ist eine Vorgabe vom Fremdserver) oder muss man Asynchrone Übertragung anders abfragen?
    Ich weiss das TComPort noch asynchrones Einlesen hat, habe damit aber noch nicht gearbeitet. 😞

    Delphi
    function ReadStrAsync(var Str: String; Count: Integer; var AsyncPtr: PAsync): Integer;
    
    C++Builder
    int __fastcall ReadStrAsync(System::AnsiString &Str, int Count, Cporttypes::PCPortAsync &AsyncPtr);
    

    Bei der Sendung handelt es sich laut Definition immer um <STX><textzeile><ETX>.

    Falls sich hier jemand mit Asynchrone Übertragung bei TComPort auskennt, wäre echt toll. Vielleicht hat jemand gar ein kleinen Textauszug wie man Asynchron mit TComPort richtig empfängt? Wäre sehr dankbar 🙂



  • Zusatz: Wenn ich die Source von ComPort richtig deute wandelt ReadStr bereits automatisch einen asynchronen Empfang in einen synchronen Empfang um, so das man sich darum gar nicht kümmern muss.


Anmelden zum Antworten