![]() |
Comport - Comm_Async sendet und empfängt Salat. ?!?
Hi Jungs,
Ich hab ein komisches Problem, wo ich nicht weiterkomme. Ich nutze für eine Kommunikation über die Com-Schnittstelle das Comm_Async. wenn ich die Beiden Komports miteinander kommunizieren lasse, sende und empfange ich Datensalat. Erst wenn ich mit einer anderen Anwendung auf diesen Port zugreife, bekomme ich anschließend mit meiner Unit die richtigen Werte gesendet und empfangen. Jetzt bin ich ein wenig confused.
Delphi-Quellcode:
Was mache ich denn falsch? Ich übergebe ihm die Parameter die er haben will und er connected auch brav. Aber dann spricht er mit fremden Zungen zu mir. :cry: procedure TForm1.LMDButton1Click(Sender: TObject); begin Comm1.Port := Strtoint(copy(Combobox1.text,4,5)); //Auswahl, Com 1-16 Comm1.BaudRate:= Getbaudrate; // übergabe Baudrate Comm1.Parity:= getparity; // ... Comm1.ByteSize := getdatabit; Comm1.StopBits := getstopbit; (...) // div. Buttons Timer1.Interval:= strtoint(edit3.text); Comm1.Open; if Comm1.Connected= false then Messagebox(0,'Keine Verbindung, Port nicht vorhanden, oder schon belegt.' ,'Com Port nicht verbunden', MB_ICONError ); end; (es sei den der Port wurde schon mit einem anderen Programm initialisiert. Dann macht er alles richtig.) |
Re: Comport - Comm_Async sendet und empfängt Salat. ?!?
HI,
also erstmal wäre hier etwas mehr Information ganz hilfreich. Um was für ein Gerät handelt es sich und was für eine andere Software benutzt du? Woher kennst du die Spezifikation? Hier gibt es dann schon viele Möglichkeiten, woran das liegen kann. Viele Geräte, die über RS232 kommunizieren erwarten erst einen Befehl um ihre Daten zu senden. Hier kann es also sein, dass die andere Software erst dieses Zeichen / diese Zeichenkette sendet und erst danach würde die anderen Daten übertragen werden. Hier hilft dir eventuell der PortMon von Sysinternals weiter. Ansonsten wäre es natürlich auch schön zu wissen, was du empfängst und was du erwartest. Gruß Der Unwissende |
Re: Comport - Comm_Async sendet und empfängt Salat. ?!?
Also , eigentlich benutze ich nur Com 1 und 2 und eine Kabelverbindung.
Die Kommunikation klappt auch, wenn ich Tools wie, 'Docklight' benutze. Nur wenn ich den Rechner einschalte, und mit meinem Programm auf die Ports zugreife und die Daten von Com 1 auf Com 2 schaufeln möchte, sendet und empfängt das Tool Datensalat. Erst wenn ich die Schnittstelle mit Docklite anspreche, diese Verbindung wieder löse und dann mein Tool ankopple, dann bekommt es die erwarteten Werte, die ich von Com1 aus sende. Dieses Verhalten kann ich mir nicht erklären. |
Re: Comport - Comm_Async sendet und empfängt Salat. ?!?
Hab das Problem gefunden.
Delphi-Quellcode:
Dies scheint nicht ganz hiermit zu passen:
//Quelle: Comm_async.pas
function TComm.GetStopBits: TStopBits; begin case fDCB.StopBits of ONESTOPBIT : Result:= csbONE; ONE5STOPBITS : Result:= csbONE5; else Result:= csbTWO; end; //case end;
Delphi-Quellcode:
Da scheint ein Zahlendreher vorzuherrschen.
function Getstopbit: Tstopbits;
var st_3: string; i: integer; begin; try; st_3 :=copy(form1.LMDedit1.text,5,1); i := strtoint(st_3); case i of 0: Result:= csbONE; 1: Result:= csbONE5; 2: Result:= csbTWO; else begin Result:= csbONE; Messagebox(0, 'Bitte gültige Anzahl Datenbits angeben (0-2), Wert 0 übernommen.','Falsche Anzahl Stopbits', MB_ICONError ); end; end; except; end; end; 1 Stopbit ist anscheinend csbONE 0 ist csb ONE5 und 2 csb TWO. Wenn ich die 0 Eingebe, dann passen die Daten. Danach ist es egal was ich an Anzahl Stopbits reinschreib. Jetzt geht es zwar, aber ich weiß immer noch nicht warum :stupid: |
DP-Maintenance
Dieses Thema wurde von "SirThornberry" von "Programmieren allgemein" nach "Windows API / MS.NET Framework API" verschoben.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz