![]() |
Comport und LED Lauflicht
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
Habe ein problem einen string auf ein LED Display auszugeben, benutze die Async Pro komponenten das senden über den comport ist nicht das problem sondern wie spreche ich so in Display an mit diesen code wird ein text gesendet
Delphi-Quellcode:
Das Protokol für das Display befindet sich im Anhang
procedure TForm1.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
var i : WORD; c: char; begin for i := 1 to count do begin c := ApdComPort1.GetChar; Memo1.Lines.Add('=> '+c); if c = #7 then MessageBeep(0) else if c in [#32..#126] then begin Buffer := Buffer + c; end; end; end; Ich bekomme nicht einmal einen refresh auf das Display, könntet ihr mir bitte weiterhelfen vielen dank im vorraus Pumba |
Re: Comport und LED Lauflicht
Als erste solltest du beachten, dass das Display Big Endian verlangt. Also genau andersherum wie Windows.
Und dann stellst du dier eben dein Protocol mal anhand dieses Beispieles zusammen. Wie sendest du denn? |
Re: Comport und LED Lauflicht
Guten Abend,
für die BigEndian Notation ist diese Funktion recht nützlich: Zitat:
![]() Grüße Klaus |
Re: Comport und LED Lauflicht
Hallo,
@Klaus01 danke für den LINK Werde mich mal über "Big Endian" schlau machen @sirius was meinst du mit wie sendest du, hab leider keine ahnung wie man das Display anspricht habe bisher nur mit Barcodescannern und COM komuniziert, das project mit dem LED Lauflicht hab ich leider von meinen vorgänger übernommen der hat es mit VS2005 versucht hat aber nicht wirklich etwas zusammengeracht, Kollege ist weg und nun soll ich mich darum kümmern wie könnte mann soetwas bewerkstelligen? Hab schon im Internet gesucht hab aber nicht wirklich etwas brauchbares gefunden oder kennt jemand ein Buch bin für jeden hinweis dankbar Danke und Grüße Pumba |
Re: Comport und LED Lauflicht
Ich kenne die Komponente nicht und habe in Delphi selber noch nie mt dem Com-Port gearbeitet, weiß aber aus C++ und aus der Erfahrung mit anderen Schnittstellen, dass es meistens nix anderes ist,
-Komponente initialisieren -Einstellungen vornehmen (Baudrate, Startbits, Stopbits, etc.) -Stream oder Buffer senden (wie der aussieht gibt es ja ein schönes Beispiel) Ich kann dir auf Grund der PDF den Stream zusammenbauen, den du senden musst, weiß aber nicht, wie es deine Komponente verlangt. So, ich habe mal geschaut. Kann es aber nicht testen:
Delphi-Quellcode:
Einstellungen im OI für adpComPort1:
procedure TForm1.Button1Click(Sender: TObject);
var Daten:string; TextPacket:string; TextData:string; Checksum:byte; i:integer; Laenge:word; begin TextData:=#$01; //Method: Cyclic; TextData:=TextData+#$EF#$A2; //Attribut 1: Font=default; TextData:=TextData+#$EF#$B0; //Attribut 1: Color=red; TextData:=TextData+'Hello World'; //Nachricht TextData:=TextData+#$FF#$FF; //Ende von TextData; TextPacket:=#$01#$01+TextData; //Filenumber dazu Daten:=#$00#$00#$00#$00#$00+TextPacket; //5 x Reserved Betes Daten:=#$00+Daten; //Farbe: mono Daten:=#$08+Daten; //Höhe in Pixel: 8; Daten:=#$00#$78+Daten; //Breite in Pixel: 120 Daten:=#$01+Daten; //Versionsnummer 1 Daten:=#$00#$00+Daten; //Addresse: BroadCast Laenge:=length(daten); CheckSum:=0; for i:=1 to Laenge do inc(Checksum,ord(Daten[i])); //Checksumme berechnen Daten:=Daten+chr(Checksum); //Checksumme anhängen; Daten:=chr(hibyte(Laenge))+chr(lobyte(Laenge))+Daten; //Länge hinzufügen Daten:='$CSTES>'+Daten; //Header; apdComPort1.Open:=true; apdcomport1.Output:=Daten; apdcomport1.Open:=false; end; -Baudrate: 9600 -CompNumber: (entsprechend setzen) Alles andere würde ich lassen. |
Re: Comport und LED Lauflicht
Hallo sirius
Danke für die Info, hab den Code übernommen, das LEDlauflicht reagiert trotz alledem nicht werde versuchen ein anderes zu bekommen, danke erstmals für deine hilfe, jetzt verstehen ich auch ein wenig wie man diese led's anspricht LG PUMBA |
Re: Comport und LED Lauflicht
Zitat:
Mit diesem Code empfängst du Daten vom Comport. Habe hier Code um ein Radio anzusteuern zum vergleichen: Sendeprocedure
Delphi-Quellcode:
Aufruf:
procedure Datenausgeben(Byte0: Byte; Byte1: Byte; Byte2: Byte; Byte3: Byte; Byte4: Byte; Byte5: Byte; Byte6: Byte; Byte7: Byte);
var Pruefsumme: Integer; begin if RadioOn then begin Pruefsumme:= Byte0; If Pruefsumme >= 256 Then Pruefsumme:= Pruefsumme - 256; Pruefsumme:= Pruefsumme + Byte1; If Pruefsumme >= 256 Then Pruefsumme:= Pruefsumme - 256; Pruefsumme:= Pruefsumme + Byte2; If Pruefsumme >= 256 Then Pruefsumme:= Pruefsumme - 256; Pruefsumme:= Pruefsumme + Byte3; If Pruefsumme >= 256 Then Pruefsumme:= Pruefsumme - 256; Pruefsumme:= Pruefsumme + Byte4; If Pruefsumme >= 256 Then Pruefsumme:= Pruefsumme - 256; Pruefsumme:= Pruefsumme + Byte5; If Pruefsumme >= 256 Then Pruefsumme:= Pruefsumme - 256; Pruefsumme:= Pruefsumme + Byte6; If Pruefsumme >= 256 Then Pruefsumme:= Pruefsumme - 256; Pruefsumme:= Pruefsumme + Byte7; If Pruefsumme >= 256 Then Pruefsumme:= Pruefsumme - 256; Form1.RadioComPort.PutString(chr(Byte0)+ chr(Byte1)+chr(Byte2)+chr(Byte3)+chr(Byte4)+chr(Byte5)+chr(Byte6)+chr(Pruefsumme)); end; end;
Delphi-Quellcode:
Wal
if (RadioDatenArray[16] and 32) = 32 then
begin RadioDatenArray[16] := RadioDatenArray[16] and $DF; // bit wieder zurueck setzen Datenausgeben($84, 3, $FA, 1, 0, 0, 0, 0); // neue Audiodaten abfragen goto ende; end; if (RadioDatenArray[16] and 1) = 1 then begin RadioDatenArray[16] := RadioDatenArray[16] and $FE; Datenausgeben($84, 3, $F0, 1, 0, 0, 0, 0); // neuen Sendername abfragen goto ende; end; if (RadioDatenArray[16] and 2) = 2 then begin RadioDatenArray[16] := RadioDatenArray[16] and $FD; Datenausgeben($84, 3, $F0, 2, 0, 0, 0, 0); // neuen Sender Text abfragen goto ende; end; if (RadioDatenArray[16] and 4) = 4 then begin RadioDatenArray[16] := RadioDatenArray[16] and $FB; Datenausgeben($84, 3, $F0, 7, 0, 0, 0, 0); // neuen Sendername tmc abfragen goto ende; end; |
Re: Comport und LED Lauflicht
Hallo Wal
Ja ich weiss dass ich mit
Delphi-Quellcode:
den Comport abfrag was dieser empfängt vorher übergebe ich
procedure TForm1.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
var i : WORD; c: char; begin for i := 1 to count do begin c := ApdComPort1.GetChar; Memo1.Lines.Add('=> '+c); if c = #7 then MessageBeep(0) else if c in [#32..#126] then begin Buffer := Buffer + c; end; end; end;
Delphi-Quellcode:
und diesen output frage ich ab, weshalb ich auch geschrieben habe das ich
procedure TForm1.Button1Click(Sender: TObject);
begin ApdComPort1.Output :=Edit1.Text+#13; Edit1.Clear; end; keine ahnung habe wie man das Display anspricht und bisher mit der COM nur Barcodescanner eingelesen habe LG Pumba |
Re: Comport und LED Lauflicht
Habe im Kopf mal das Protokoll erstellt, kann also noch Fehler enthalten:
Delphi-Quellcode:
Wal
Const
LedHeader = '$CST-ES'; Address = ?; '? = Integerwert Version = ?; '? = Integerwert SignW = ?; '? = Integerwert SignH = ?; '? = Integerwert SignC = ?; '? = Integerwert Reserved := '00000'; function SchnuerePaket(Sendestring: String): String; var Laenge: Integer; Highnibbel, Lownibbel: Byte; HighAddress, LowAddress: Byte; HighSignW, LowSignW: Byte; Checksumme: Integer; Check : String; iIndex := Integer; begin Laenge := 2 + 1 + 2 + 1 + 1 + 5 + Length(Sendestring); Highnibbel:= Laenge div 256; Lownibbel:= Laenge mod 256; HighAddress:= Address div 256; LownAddress:= Address mod 256; HighSignW:= SignW div 256; LownSignW:= SignW mod 256; Check := Chr(HighAddress) + Chr(LowAddress) + Chr(Version) + Chr(HighSignW) + Chr(LowSignW) + Chr(SignH) + Chr(SignC) + Reserved + Sendestring; for iIndex := 1 to Length(Check) do begin Checksumme := Ord(MidStr(Check, iIndex ,1)); if Checksumme >= 256 then Checksumme := Checksumme - 256; end; result := LedHeader + Chr(Highnibbel) + Chr(Lownibbel) + Check + Chr(Checksumme); end; procedure Senden; begin ApdComPort1.PutString(SchnuerePacket('Hallo')); end; TanteEdit: Sehe gerade die Data Packets sind nochmal aufgegliedert, das mußt du noch mit einbeziehen. |
Re: Comport und LED Lauflicht
Danke Wal
werde es morgen in der FA. mal testen Pumba |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:00 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