AGB  ·  Datenschutz  ·  Impressum  







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

TComport - Byte senden

Ein Thema von Muellermilchtrinker · begonnen am 11. Mai 2011 · letzter Beitrag vom 14. Mai 2011
Antwort Antwort
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#1

AW: TComport - Byte senden

  Alt 13. Mai 2011, 15:40
Leute ich bekomm das einfach nicht gebacken die Anzahl der Bytes die er sendet zu minimieren.

Mein jetziger Code:
Delphi-Quellcode:
procedure TForm1.ButtonPicSendClick(Sender: TObject);
  var i:integer; s:String;
begin
  fcMakeCodeforRS232;
  for I := 1 to 20 do
  begin
    s := format('%.2d',[i])+';'+marray[i];
    comport1.WriteStr(s+#13);
    sleep(1);
  end;
end;
In marray steht mein Muster drin. Format siehe oben.
Ich weiß, dass ich es am besten mit Comport1.Write() machen soll, aber jeder Versuch wollte bei mir nicht. Es als String zu senden dauert einfach viel zu lange, da dort ja mehr als ein Byte gesendet werden, wenn ich nur ein Byte senden möchte.
Laut Serial Port Monitor werden 280 Bytes gesendet. Das sind viel zu viele um ein schnelle Übertragung zum Beispiel für Musikvisualisierung bei einer niedrigen Baudrate zu bekommen.
Momentan arbeite ich mit einem USB-Seriell-Adapter bei einer Baudrate von 250.000 um eine halbwegs schnelle Übertragung zu bekommen.

Vielleicht gibts ja hier ein Comportexpert und kann mir helfen. Danke.
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.

Geändert von Muellermilchtrinker (13. Mai 2011 um 15:43 Uhr)
  Mit Zitat antworten Zitat
LargoD

Registriert seit: 8. Jun 2007
42 Beiträge
 
#2

AW: TComport - Byte senden

  Alt 13. Mai 2011, 22:57
1. Du zeigst immer nur Bruchstücke von Deinem Kode, da kann man Dir schlecht helfen.
Die Deklaration vom marray und der Kode von fcMakeCode... wäre nicht schlecht.

2. Du hast kein Problem mit dem Comport, sondern mit dem Verständnis, was ASCII-Strings und was Binärdaten sind.

Sorge einfach dafür, dass Dein zu sendendes Bitmuster binär in einem Array of Byte liegt. Dann kannst Du dieses Array problemlos mit der Write-Methode senden.

Write(DasZuSendendeArray,LaengeDesArray)

Gruß
Erich
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#3

AW: TComport - Byte senden

  Alt 14. Mai 2011, 10:49
Also in marray (String) steht:
Code:
marray[1] := &B01000000
marray[2] := &B00000000
marray[3] := &B00000000
marray[4] := &B00000000
marray[5] := &B00100000
marray[6] := &B00000000
marray[7] := &B00000000
marray[8] := &B00000000
marray[9] := &B00010000
marray[10] := &B00000000
marray[11] := &B00000000
marray[12] := &B00000000
marray[13] := &B00001000
marray[14] := &B00000000
marray[15] := &B00000000
marray[16] := &B00000000
marray[17] := &B00000100
marray[18] := &B00000000
marray[19] := &B00000000
marray[20] := &B00000000
Da Programm intern meine Zustände in einem 3D-Array liegt, konvertiert die Funktion fcMakeCodeforRS232 einfach die richtigen LEDs zu meinem Musterformat oben und legt diese dann in marray.
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
LargoD

Registriert seit: 8. Jun 2007
42 Beiträge
 
#4

AW: TComport - Byte senden

  Alt 14. Mai 2011, 11:52
Wenn marray wirkich ein Array of string ist (die Deklaration hast Du immer noch nicht gezeigt), warum wunderst Du Dich, dass da mehr als 200 Byte gesendet werden? Das Array, das Du zeigst, hat allein schon 200 Byte.
Du solltest Deine Bit-Daten in einem array(1..20) of Byte ablegen (ein Bit pro LED) und dann senden, dann geht es mindestens zehn mal so schnell. Musst Dir halt eine Methode zum synchronisieren des Protokolls überlegen, da gibt es verschiedene Möglichkeiten, z. B. Sync-Byte Verdoppelung oder Synchronisierung über Zeitbedingung.
Gruß
Erich

Geändert von LargoD (15. Mai 2011 um 08:11 Uhr) Grund: Ergänzung
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:41 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