AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TComport senden funktioniert nicht

Ein Thema von 8bit Liebhaber · begonnen am 29. Okt 2011 · letzter Beitrag vom 31. Okt 2011
Antwort Antwort
8bit Liebhaber

Registriert seit: 11. Okt 2011
11 Beiträge
 
#1

TComport senden funktioniert nicht

  Alt 29. Okt 2011, 13:45
Delphi-Version: 2009
Guten Tag,

ich baue gerade ein VU Meter mit jeweils 10 LEDs. Diese sind an einen AVR angeschlossen, der über RS232 die Daten vom PC empfangen soll. Nun bin ich soweit, dass die Hardware funktioniert. Also mit hterm o.ä. kann ich ein Hexbyte senden und das wird korrekt angezeigt. Folgendes vielleicht zum Bytemuster:
Es wird nur ein Byte empfangen, dabei sind jeweils 4 Bit für ein Kanal. In Hexadezimal ist es dann die erste und zweite Ziffer.

Doch nun funktioniert das ganze in Delphi nicht so mit dem Byte senden. Dabei sieht mein Code so aus:
Delphi-Quellcode:
//senden
procedure TForm1.SendClick(Sender: TObject);
  var ByteSenden: Byte;
  const LEDsRight: array[0..10] of Byte = ($00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A);
  const LEDsLeft: array[0..10] of Byte = ($00,$10,$20,$30,$40,$50,$60,$70,$80,$90,$A0);
begin

  ByteSenden := (LEDsLeft[BarLeft] + LEDsRight[BarRight]);
  Comport1.Write(ByteSenden, 1);
end;
BarRight und BarLeft sind globale Integervariablen mit den Werten für den Ausschlag also 0-10.

Meine beiden Bargraphanzeigen leuchten nicht so wie sie sollen. Es leuchten nur ein paar LEDs mitten in der Anzeige. Mit hterm funktioniert jedoch alles bestens.

Weiß jemand was ich falsch mache?
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: TComport senden funktioniert nicht

  Alt 29. Okt 2011, 14:35
einfacher wäre : ByteSenden := BarLeft shl 4 + BarRight;

Stimmen die anderen Parameter Baudrate, Stopbit etc ?
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
529 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: TComport senden funktioniert nicht

  Alt 29. Okt 2011, 14:45
Das verwenden von Comport.write(buffer,count) scheint mir nicht richtig zu sein, da buffer ein Zeiger ist.

Man muss den Buffer anlegen und dann den Bytewert übergeben.

Oder man versucht es mit writestr('1') usw.
Ralf
Gruß vom Niederrhein
  Mit Zitat antworten Zitat
8bit Liebhaber

Registriert seit: 11. Okt 2011
11 Beiträge
 
#4

AW: TComport senden funktioniert nicht

  Alt 29. Okt 2011, 15:23
Wie würde das mit dem Buffer denn funktionieren?
  Mit Zitat antworten Zitat
8bit Liebhaber

Registriert seit: 11. Okt 2011
11 Beiträge
 
#5

AW: TComport senden funktioniert nicht

  Alt 30. Okt 2011, 20:23
keiner eine Idee?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.098 Beiträge
 
Delphi 12 Athens
 
#6

AW: TComport senden funktioniert nicht

  Alt 30. Okt 2011, 20:39
Wie ist denn die Prozedur Write des TComport deklariert?
(ich hab keine Lust mir das Teil extra runterzuladen)

Aber wenn es ein Pointer ist, dann solltest du auch einen Pointer übergeben.
Also den Zeiger auf deine Daten und nicht den Zeigers selber (bzw. dessen erstes Adressbyte).
Comport1.Write(@ByteSenden, 1); .


Ansonsten nutzt du ja Binärwerte, also solltest du diese auch binär verrechnen und nicht logisch.
Delphi-Quellcode:
ByteSenden := LEDsLeft[BarLeft] or LEDsRight[BarRight];
// bzw.
ByteSenden := (BarLeft shl 4) or BarRight;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (30. Okt 2011 um 20:42 Uhr)
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#7

AW: TComport senden funktioniert nicht

  Alt 31. Okt 2011, 06:33
Da es kompiliert, wird das mit dem Zeiger wohl nicht stimmen.
... Kompiliert es denn?

Ich tippe auf Comport, Baudrate, Databits, Stopbits, Parity, Handshake.
  Mit Zitat antworten Zitat
8bit Liebhaber

Registriert seit: 11. Okt 2011
11 Beiträge
 
#8

AW: TComport senden funktioniert nicht

  Alt 31. Okt 2011, 12:02
Funktioniert jetzt. Hab aus Versehen vergessen bei der TComComboBox mit der Baudrate den TComport zu verweisen und somit hat er mit ComComboBox2.ApplySettings die Einstellungen nicht übernommen.

Weiß noch jemand von euch, wie ich den Soundausschlag aus Windows auslesen kann? Möchte gerne jeden Sound den man hört visualisieren und nicht nur wenn man eine Datei in meinem Programm abspielt.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.098 Beiträge
 
Delphi 12 Athens
 
#9

AW: TComport senden funktioniert nicht

  Alt 31. Okt 2011, 12:36
Zur BASS-Lib gibt es genügend Beispiele, für die gewünschten Werte.
Als Input müstest du dann einfach nur den Stereo-Mix/Mixer wählen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:37 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