AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi ComPort mit Interface-Doku - Dezibelmessgerät - Async Pro

ComPort mit Interface-Doku - Dezibelmessgerät - Async Pro

Ein Thema von MSSSSM · begonnen am 26. Mär 2009 · letzter Beitrag vom 27. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von MSSSSM
MSSSSM

Registriert seit: 18. Apr 2008
223 Beiträge
 
Delphi 7 Professional
 
#1

ComPort mit Interface-Doku - Dezibelmessgerät - Async Pro

  Alt 26. Mär 2009, 20:14
Hallo,

ich bin gerade dabei, mit Async Pro folgendes zu implementieren:

Abfragen der aktuellen Lautstärke

Dazu habe ich eine InterfaceDoku. Das Ganze läuft über USB, Com3.

Nu habe ich erst fast 2 Jahre englisch, und 2. versteh ich das nicht ganz.

Die Doku ist angehängt.

Ich bin soweit, das ich vor jedem Befehl ein $A5 senden muss, und der mit $A5$0D für 2 Bytes und $A5$06 für 3 Bytes zurücksendet. Klappt aber nicht ganz. Kann mir jemand Hilfe geben?

Marius
Angehängte Dateien
Dateityp: pdf img_181.pdf (1,62 MB, 20x aufgerufen)
Marius
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#2

Re: ComPort mit Interface-Doku - Dezibelmessgerät - Async Pr

  Alt 26. Mär 2009, 20:42
Ich kenne das Teil zwar nicht, aber was soll nicht richtig gehen?
Was passiert denn, wenn man A5h und dann 1Bh sendet? Kommt da keine Antwort oder kommen wirre Zeichen?
Ich würde das erste Testen mit einem Terminalprogramm (Bsp. Terminal v1.9b, in Google suchen, Super Teil) machen und wenn das läuft, dann das Ganze in Delphi um setzen.
Matthias
  Mit Zitat antworten Zitat
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#3

Re: ComPort mit Interface-Doku - Dezibelmessgerät - Async Pr

  Alt 27. Mär 2009, 05:11
Hi,

ich arbeite seit Jahren mit asychpro. Funktioniert alles einwandfrei (wenn es auch ein zwei Macken gibt).
Ich kann dir leider nur helfen, wenn du ein Stück Code postest.
Wie sendest du? Vor allem wie empfängst du?

Siehe Anhang, dort ist sowohl empfangen als auch senden realisiert.
Thread Serielle Schnittstelle überwachen.(weiss leider nicht wie man einen Link auf ein Thema erstellt)

Viele Grüsse
Angehängte Dateien
Dateityp: zip comcom_212.zip (534,2 KB, 22x aufgerufen)
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
Benutzerbild von MSSSSM
MSSSSM

Registriert seit: 18. Apr 2008
223 Beiträge
 
Delphi 7 Professional
 
#4

Re: ComPort mit Interface-Doku - Dezibelmessgerät - Async Pr

  Alt 27. Mär 2009, 12:19
Hallo,

dort kommt nur wirres zeugs raus.

ich habe ein Stückchen Code angehangen.

Dort wird das übertragene Stück geparst, also erstes Byte #$A5 usw.

Edit: Bin schon etwas weiter. Nur mit Async Pro habe ich Probleme, weil ich nur Bruchstücke bekomme und ich weiß nicht wie ich das parsen soll.

Auszug:
Code:
A551A50CA51B00A506024125A540A50EA511A50D0353A50CA51B00A506024125A540A50EA511A50D0353A50CA51B00A506024125A540A50EA511A50D
0352A50CA51B
00
A506024125
A540A5
0EA511
A5
0D0352A5
0B
00A5
060241
25A519A5
02A50F
A51A
A5
0D0351
A50CA51B
00
A50602
4125A540
A50EA511
A5
0D0351A5
0CA51B
00
A506024125
A540A50E
A511
A5
0D0350A5
0C
A51B
00A506
024125A540
A50EA511
A5
0D0349A50C
A51B
00
A506024125
A540A5
0EA511
A5
0D0349A50CA5
1B
00A5
060241
25A540A5
0EA511
A5
0D0349A5
0CA51B
00A5
06024125A540A50E
A511
A5
0D0348A50C
A5
1B00A5
06024125A5
40A50EA511
A5
0D0347
A50CA51B
00A50602
4125A540A50E
A511
A50D0346
A50CA51B
00A5
06024125
A540
A50EA511
A5
0D0345A50B
00A506
024125A519
A502
A50FA51A
A5
0D0345A50C
A51B
00A5
06024125
A540A50E
A511
A5
0D0344A50CA5
1B
00A506
024125A5
40A5
0EA511
A5
0D0343A50C
A51B
00A506
0241
25A540A50EA511
A5
0D0343A50C
A51B
00
A506024125
A540A50EA5
11
A5
0D0343A50C
A51B
00A5
060241
26A540A50EA5
11
A5
0D0342A50CA5
1B
00A506024126
A540A50EA5
11
A5
0D0341A50C
A51B
00A506
024126A5
40A50EA511
A5
0D0342A50C
A51B
00A50602
4126A540
A50EA511
A5
0D0345A50C
A51B
00A5
06024126A5
40A50EA5
11
A5
0D0346A50B
00A5
06024126A519
A502A50FA5
1A
A5
0D0345A50C
A51B
00A5
06024126
A540A50EA5
11
A5
0D0345A50C
A51B
00A506
024126A5
40A50EA511
A5
0D0344A50C
A51B
00A5
06024126
A540A50EA5
11
A5
0D0343A50CA5
1B
00A506
024126A5
40A50EA5
11
A5
0D0343A50C
A51B
00A5
06024126
A540A50EA5
11
A5
0D0345A50C
A51B
00A506
024126
A540A50EA511
A5
0D0345A5
0CA51B
00A506
024126A5
40A50EA511
A5
0D0345A5
0CA51B
00A506
024126A5
40A50EA511
A5
0D0345A5
0CA51B
00
A506024126
A540A50EA5
11
A5
0D0345A50B
00
A506024126
A519A502A50FA5
1A
A5
0D0347A5
0CA51B
Jede neue Zeile ist einmal onTriggerAvail aufgerufen.

Marius
Angehängte Dateien
Dateityp: zip pegel_490.zip (293,2 KB, 3x aufgerufen)
Marius
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#5

Re: ComPort mit Interface-Doku - Dezibelmessgerät - Async Pr

  Alt 27. Mär 2009, 13:44
Hallo Marius,

ich nutze ein anderes Objekt zum Auslesen vom Comport. Dies ist aber kostenpflichtig (TMS Software).

Es könnte sein, dass das Ereignis "TriggerAvail" schon ausgelöst wird, aber noch nicht alle Zeichen da sind. Dann ist aber "Count" schon festgelegt. Entweder Du wartest noch eine kurze Zeit und dann rufst Du die Daten ab oder Du liest die Daten in ein globales Objekt ein und wartest, bis dort 2 oder 3 Zeichen drin sind.
Auf jeden Fall solltest Du "Data2" vorab leer machen.

Probiere dies doch mal mit dem Terminalprogramm aus, was ich letztens erwähnt hatte. Dann siehst Du wirklich, wann die Daten kommen

Delphi-Quellcode:
procedure TfrmMain.pegelTriggerAvail(CP: TObject; Count: Word);
var
  Data: String;
  data2:String;
  d:Char;
  I: Integer;
begin
  { OnTriggerAvail; Read the data }
  for I:= 0 to Count-1 do
  begin
       d:=pegel.GetChar;
       Data2 := Data2 + IntToHex(Word(d),2) + sLineBreak;
       Data := Data + d;
  end;
  parse(Data);
  //memData.lines.Add(data2);
end;

Wenn man die Daten einmal sortiert, dann sieht es doch schon ganz gut aus (siehe unten).
Dies bestärkt meine Vermutung, dass Du immer den Empfangsstring löschen mußt, bevor Du Daten sendest und dann die Daten in ein gloabes Array schreibst. Wie es aussieht, kommt der Event schon, wenn noch nicht alle Daten da sind.
A551
A50C
A51B00
A506024125
A540
A50E
A511
A50D0353
A50C
A51B00
A506024125
A540
A50E
A511
A50D0353
A50C
A51B00
A506024125
A540
A50E
A511
A50D0352
A50C
A51B00
A506024125
A540
A50E
A511
A50D0352
A50B00
A506024125
A519
A502
A50F
Matthias
  Mit Zitat antworten Zitat
Benutzerbild von MSSSSM
MSSSSM

Registriert seit: 18. Apr 2008
223 Beiträge
 
Delphi 7 Professional
 
#6

Re: ComPort mit Interface-Doku - Dezibelmessgerät - Async Pr

  Alt 27. Mär 2009, 15:30
Hallo,

(Achso, ich brauche garkeine Daten zu senden)

naja, es geht ja ziemlich schnell, Baudrate:9600, und die Zeitangabe wird nur angezeigt, wenn ich es auf String statt Hex einstelle.
Da scheinen die Stücke kleiner zu sein...

Marius
Marius
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#7

Re: ComPort mit Interface-Doku - Dezibelmessgerät - Async Pr

  Alt 27. Mär 2009, 15:49
So wie Du schreibst, kommen die Daten von alleine?
Da nimm doch ein größeres Array und schreib einfach die Daten rein. Dann suchst Du nach "A5", das scheint ja das Startbyte zu sein und nimmst die Daten, bis wieder "A5" auftaucht. Alles was dazwischen ist, mußt Du dann auswerten.

Das kannst Du auch in der Empfangsroutine machen. Du kannst aber nicht immer hoffen, dass, wenn das Event angetriggert ist, dann auch der komplette Inhalt einer Auswertung drin ist. Es kann sein, dass das Event so schnell ist, dass nur 2 Bytes "reingerutscht" sind. Beim nächsten Event kommt dann der Rest.
Matthias
  Mit Zitat antworten Zitat
Benutzerbild von MSSSSM
MSSSSM

Registriert seit: 18. Apr 2008
223 Beiträge
 
Delphi 7 Professional
 
#8

Re: ComPort mit Interface-Doku - Dezibelmessgerät - Async Pr

  Alt 27. Mär 2009, 15:52
Hallo,

allerdings was ist, wenn in den Daten auch ein A5 vorkommt?

Marius
Marius
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#9

Re: ComPort mit Interface-Doku - Dezibelmessgerät - Async Pr

  Alt 27. Mär 2009, 16:06
Dann kannst Du nur den vorhandenen String analysieren, ob die Länge für dieses Objekt erreicht ist. Es scheint ja nicht immer die gleiche Länge zu sein.
Wenn das erste Byte immer "A5" ist, dann sollte das 2. Byte eine Aussage dafür sein, wie lang der String wird. Dann könnte man mit "case Data[2] of" eine Abfrage machen, wieviel Bytes noch kommen.

Delphi-Quellcode:
case Data[2] of

  #$0C,
  #$0E,
  #$11,
  #$40,
  #$51 : length:=2;

  #$1B : length:=3;


  #$0D : length:=4;
  #$06 : length:=5;
Dies nur alles theoretisch. Vorher mußt Du noch abprüfen, ob Du auf Data[2] zugreifen darfst. Ansonsten gibts einen Fehler. Wenn Länge <2, dann nichts auswerten.

Hoffentlich hilft Dir das weiter.
Matthias
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: ComPort mit Interface-Doku - Dezibelmessgerät - Async Pr

  Alt 27. Mär 2009, 17:10
Hallo MSSSSM,

bei Asyn Pro gibt es die Komponente ApdDataPacket dort ist es möglich einen Start- und End-String zu hinterlegen, währe ein Versuch wert.

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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 00:46 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