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

TComport - Byte senden

  Alt 11. Mai 2011, 17:08
Servus DP,

ich habe eine Frage: Wie kann ich mit TComport ein Byte im Format &B11001100 senden? Es geht darum die Sendezeit eines Musters für meinen LED Cube zu verringern, denn wenn ich ein Byte als String sende, dann schickt Delphi ja 10 Bytes.

Ein Muster (liegt in einem array) sieht so aus:
Code:
&B01000000  &B00000000  &B00000000  &B00000000
&B00100000  &B00000000  &B00000000  &B00000000
&B00010000  &B00000000  &B00000000  &B00000000
&B00001000  &B00000000  &B00000000  &B00000000
&B00000100  &B00000000  &B00000000  &B00000000
Als links oben ist eins und dann nach rechts immer eins addieren und in der nächsten Zeile links weitermachen.

Das Protokoll sieht so aus:

Code:
Arrayfeld ; Muster
Bsp.:
02;&B11001100
Ich hoffe mir kann jmd. helfen, denn wenn ich ein String sende '02;&B11001100' dann dauert das natürlich viel zu lange und ich möchte ja gerne eine Musik Visualisierung drauf laufen lassen.
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

AW: TComport - Byte senden

  Alt 11. Mai 2011, 17:31
Wie viele LEDs hat der Cube pro Fläche und wie viele Flächen gibt es?
Andreas
  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 11. Mai 2011, 17:33
Der Cube ist 5³ also 125 LEDs. Davon sind 25 pro Ebene und eine Zeile in meinem Muster ist immer eine Ebene. Das Muster muss so sein, da es eigentlich nur die Ausgangszustände pro Port sagt und meine Bits für die Ebenen schon gesetzt sind.

Also am Protokoll könnte man was ändern am Muster jedoch nicht. Und der AtMega muss das ja auch noch verarbeiten.
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

AW: TComport - Byte senden

  Alt 11. Mai 2011, 18:46
Das heisst dann also mit 15 Bytes könnte man alle Leuchtdioden neu setzen.
Wobei bei jedem Byte von 8 möglichen Bits nur 5 benützt werden.

Wenn wir die Ebenen mit A,B,C benennen und die Zeilen mit 1 bis 5 dann ergäbe sich folgende Zuordnung
Code:
   EbeneA  EbeneB  EbeneC
================================
1  ByteA1  ByteB1  ByteC1
2  ByteA2  ByteB2  ByteC2 
3  ByteA3  ByteB3  ByteC3   
4  ByteA4  ByteB4  ByteC4   
5  ByteA5  ByteB5  ByteC5
In deinem Beispiel sind es 20 Bytes; was mich jetzt etwas verwirrt.
Je weniger Bytes übertragen werden, umso schneller die Reaktion.

Nagut nun zum Protokoll
Du sendest eine Anfangskennung (in deinem Bsp war das 02 gefolgt von den 15 Bytes in einem Block.
Das wären dann 18 Bytes insgesamt und du kannst mit Baudrate die Reaktionszeit ausrechnen:
9600 Baud / 11 / 18 = 48,5 Änderungen pro Sekunde (im Optimalfall)
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

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

AW: TComport - Byte senden

  Alt 12. Mai 2011, 07:23
Ich denke du hast da etwas falsch verstanden.

Meine 20 Bytes sind fest. Da sind noch die 5 Transistoren um die Ebenen zu schalten. Das sind die 1 in meinem Muster.
Und pro Zeile sind das dann die Ausgangszustände meines AtMegas.

Meine Frage ist also wie kann ich ein Byte einzeln senden, denn wenn ich das als String sende, dann schick er ja 10 Bytes statt einem.
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
 
#6

AW: TComport - Byte senden

  Alt 12. Mai 2011, 08:14
Meine Frage ist also wie kann ich ein Byte einzeln senden, denn wenn ich das als String sende, dann schick er ja 10 Bytes statt einem.
Write(@ZuSendendesByte,1)
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

AW: TComport - Byte senden

  Alt 12. Mai 2011, 10:59
Meine 20 Bytes sind fest. Da sind noch die 5 Transistoren um die Ebenen zu schalten. Das sind die 1 in meinem Muster.
Und pro Zeile sind das dann die Ausgangszustände meines AtMegas.
Das heisst also der kleinstmögliche Befehl schaltet eine Zeile auf allen drei Ebenen
und benötigt dazu 4 Bytes:
Code:
&B00010000  &B00000000  &B00000000  &B00000000

Meine Frage ist also wie kann ich ein Byte einzeln senden,
Das ist eine ganze schlechte Idee, weil durch den FIFO in der seriellen Schnittstelle kannst du sowieso das Timing wie die Byte rausgehen nicht kontrollieren.

Ich würde es so machen, dass immer ein Befehlbyte gefolgt von den 4 Datenbytes gesendet wird.

Code:
Befehl     Row-Select  EbeneA     EbeneB      EbeneC
&B00000001 &B00010000  &B00000000  &B00000000  &B00000000
Wenn der AT-Mega den Befehl &B00000001 bekommt, dann weiss er, dass noch 4 weitere Byte folgen müssen.
Er empfängt die 4 Bytes schickt diese auf seine Ports und wartet auf den nächsten Befehl.
Im Delphiprogramm wird der Befehl inklusive der Daten auf einen Rutsch gesendet; nur so macht das Sinn.

Ich mal folgende Befehle vorsehen:
&B00000001 - Beschreibung oben
&B00000011 - Alle LEDs an
&B00000101 - Alle LEDs aus
&B00000111 - Alle LEDs invertieren
Andreas
  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 01:55 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