AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Comport und LED Lauflicht

Ein Thema von Pumba · begonnen am 23. Apr 2008 · letzter Beitrag vom 28. Apr 2008
Antwort Antwort
Seite 1 von 2  1 2      
Pumba

Registriert seit: 28. Jun 2004
32 Beiträge
 
Delphi 2005 Enterprise
 
#1

Comport und LED Lauflicht

  Alt 23. Apr 2008, 19:51
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:
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;
Das Protokol für das Display befindet sich im Anhang
Ich bekomme nicht einmal einen refresh auf das Display,
könntet ihr mir bitte weiterhelfen

vielen dank im vorraus
Pumba
Angehängte Dateien
Dateityp: pdf simple_protocol_for_single_line_402.pdf (22,0 KB, 25x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Comport und LED Lauflicht

  Alt 23. Apr 2008, 20:52
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?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Comport und LED Lauflicht

  Alt 23. Apr 2008, 21:08
Guten Abend,

für die BigEndian Notation ist diese Funktion recht nützlich:
Zitat von DelphiHilfe:

function Swap(X);

Description

Swap exchanges the high-order bytes with the low-order bytes of the argument. X is an expression of type SmallInt, as a 16-bit value, or Word. This is provided for backward compatibility only.
Ein Beispiel wie man sie benutzt findest Du hier.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Pumba

Registriert seit: 28. Jun 2004
32 Beiträge
 
Delphi 2005 Enterprise
 
#4

Re: Comport und LED Lauflicht

  Alt 24. Apr 2008, 07:17
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
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Comport und LED Lauflicht

  Alt 24. Apr 2008, 07:31
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:
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;
Einstellungen im OI für adpComPort1:
-Baudrate: 9600
-CompNumber: (entsprechend setzen)
Alles andere würde ich lassen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Pumba

Registriert seit: 28. Jun 2004
32 Beiträge
 
Delphi 2005 Enterprise
 
#6

Re: Comport und LED Lauflicht

  Alt 27. Apr 2008, 09:31
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
  Mit Zitat antworten Zitat
Wal

Registriert seit: 22. Sep 2006
57 Beiträge
 
#7

Re: Comport und LED Lauflicht

  Alt 27. Apr 2008, 09:47
Zitat von Pumba:
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:
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;
Das Protokol für das Display befindet sich im Anhang
Ich bekomme nicht einmal einen refresh auf das Display,
könntet ihr mir bitte weiterhelfen

vielen dank im vorraus
Pumba
Entweder steh ich auf dem Schlauch oder...

Mit diesem Code empfängst du Daten vom Comport.
Habe hier Code um ein Radio anzusteuern zum vergleichen:

Sendeprocedure
Delphi-Quellcode:
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;
Aufruf:
Delphi-Quellcode:
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;
Wal
  Mit Zitat antworten Zitat
Pumba

Registriert seit: 28. Jun 2004
32 Beiträge
 
Delphi 2005 Enterprise
 
#8

Re: Comport und LED Lauflicht

  Alt 27. Apr 2008, 10:40
Hallo Wal

Ja ich weiss dass ich mit
Delphi-Quellcode:
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;
den Comport abfrag was dieser empfängt vorher übergebe ich

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
ApdComPort1.Output :=Edit1.Text+#13;
Edit1.Clear;
end;
und diesen output frage ich ab, weshalb ich auch geschrieben habe das ich

keine ahnung habe wie man das Display anspricht
und bisher mit der COM nur Barcodescanner eingelesen habe


LG Pumba
  Mit Zitat antworten Zitat
Wal

Registriert seit: 22. Sep 2006
57 Beiträge
 
#9

Re: Comport und LED Lauflicht

  Alt 27. Apr 2008, 10:44
Habe im Kopf mal das Protokoll erstellt, kann also noch Fehler enthalten:

Delphi-Quellcode:
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;
Wal

TanteEdit: Sehe gerade die Data Packets sind nochmal aufgegliedert, das mußt du noch mit einbeziehen.
  Mit Zitat antworten Zitat
Pumba

Registriert seit: 28. Jun 2004
32 Beiträge
 
Delphi 2005 Enterprise
 
#10

Re: Comport und LED Lauflicht

  Alt 27. Apr 2008, 10:57
Danke Wal

werde es morgen in der FA. mal testen

Pumba
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz