AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Wie kann man die RS 232 Schnittstelle auslesen?

Wie kann man die RS 232 Schnittstelle auslesen?

Ein Thema von Andi · begonnen am 20. Okt 2002 · letzter Beitrag vom 25. Aug 2005
Antwort Antwort
Seite 2 von 4     12 34   
Daniel B
(Gast)

n/a Beiträge
 
#11
  Alt 21. Okt 2002, 12:51
Hallo Hansa,

HandShake ist zwar schön und gut, aber nicht jedes Gerät arbeitet damit. Egal ob Soft- oder Hardware Handshake. Deswegen würde es mich nicht wundern das es schon geht, bzw. ohne Handshake.

Grüsse, DAniel
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#12
  Alt 21. Okt 2002, 13:24
Hi,

ja ausgeschlossen ist das nicht, aber die serielle Schnittstelle hat zwei Seiten, die beide dieselbe "Sprache" sprechen müssen, damit es funktioniert, also HW oder SW - Handshake. Die Baudrate muß natürlich auch stimmen und und und. War schon mal fast soweit, daß ich das serielle Kabel zweckentfremden wollte. Dann hätte ich das hier aber nicht mehr schreiben können.

Verfolge mal das Thema mit.

Gruß
Hansa
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#13
  Alt 21. Okt 2002, 17:50
Hallo Hansa,

was genau meinst Du damit, das da immer was reinkommt?
Ich hab hier Geräte die ich über die Serielle anspreche. Die einen brauchen HW-Hanshake, ein anderes darf gar keins haben, manche wieder SW-Handshake. Was in erster Linie zählt ist BAud, Stopbits, Datenbits und Paritätsbits. Ich mach mir ums HS keine so grossen Gedanken.
Aber beschreib doch etwas näher was Du mit reinspucken meinst.

Grüsse, Daniel //der jetzt ganz schnell seine Steuererkläreungen für 2000 und 2001 schreiben muss.
  Mit Zitat antworten Zitat
Andi

Registriert seit: 20. Okt 2002
16 Beiträge
 
Delphi 6 Personal
 
#14

WOW! Vielen Dank!!

  Alt 21. Okt 2002, 18:49
Hi!!


Erst mal ein grosses LOB!

Da "stolpert" man hier grad mal rein, und es wird einem hier ohne Ende
geholfen!! Echt klasse!!

Dank Eurer Tips hab ich jetzt erstmal viel zu tun und zu tüfteln.

@Daniel: Danke! Die Deutsche Help hab ich auch!

@Hansa: Ich glaub ich brauch mich nicht um HS scheren, weil das so ganz gut funzt!! Aber danke für den Hinweis!!!

Nicht schlecht, wie schnell man hier geholfen wird!!!

MAcht alle weiter so!!!


MfG
Andi
  Mit Zitat antworten Zitat
Andi

Registriert seit: 20. Okt 2002
16 Beiträge
 
Delphi 6 Personal
 
#15

hat fast geklappt!!

  Alt 21. Okt 2002, 22:10
Hi!

Da bin ich schon wieder!

Ich habs mal ausprobiert.

Ich habe eine Form1 erstellt.dann n Button1, wenn man daraufclickt,soll ausgelesen werden und der Label1.Caption mit dem Gewichtswert beschrieben werden!
Klappt nur halb,denn der Gewichtswert wird nicht aktualisiert( die Waage sendet ja permanent Daten),erst wenn ich nochmal auf den Button clicke kommt was neues,allerdings schiebt sich der String(gewichtswert) von links nach rechts ins label,aber immer nur um ein Zeichen pro klick!
Wenn ich also andauernd clicke,dann schiebt sich der wert immer wieder rein!
Er soll sich aber komplett überschreiben.

Hier mal mein Code:

procedure TForm1.Button1Click(Sender: TObject);
var str:string;

begin
comport1.readstr(str,18); //weil insgesamt 18 bytes ,siehe DAten der Waage //

edit1.Text:=(str);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
comport1.showsetupdialog;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;

end.


so,und das hier habe ich in der Betriebsanweisung der Waage gefunden:

Baudrate:2400
dataBits 8
StopBits 1
CODE:ASCI

HEAD 1 (2bytes) :
OL Überlast
ST Anzeige stabil(gewichtswert)
US Anzeige instabil

Head 2 (2 Bytes): NT Netto Modus

Daten(8bytes): 2D HEX : "-" minus
20 Hex : " " Leerzeichen
2E Hex : "." Dezimalpunkt

Gewichtseinheit (4bytes)
g: 20-20-6B-67 HEX
lb: 20.20-6C-62 HEX
tl.T 74-6C-2E-54 Hex

die beiden lb und tl.T werden aber nicht verwendet,da nur in gramm gewogen wird!

CR (2bytes) das soll wohl carriage-return bedeuten !?

Vielleicht hängt es ja damit irgendwie zusammen, daß es nicht so klappt,wie ich möchte?!?

Du hast ja gesagt, daß ich keinen Button brauche, habe es aber nur mit Button geschafft.Ich frage mich , welchen Fehler ich gemacht habe.

Ich hoffe, Ihr könnt mir noch mal helfen!

Danke schon mal!!

MfG

Andi
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#16
  Alt 21. Okt 2002, 22:30
Hallo Andi,

1. Im OnShow des Form1 schreibst Du ComPort1.Open;
{da sich bei Dir die Einstellungen der Seriellen nciht ständig ändern, stellst Du die richtigen sachen wie Port, Baud usw. im Object Inspector ein. Somit kannst Du Dir die Button2 Prozedur sparen.}
Baudrate:2400
dataBits 8
StopBits 1
Fest im OI einstellen. Spielen mit dem Dialog kann man auch noch wenn es so geht wie Du es möchtest.

2. Natürlich ändert sich der Wert im Label nur auf Button klick, denn nur dann liest Du was von der Schnittstelle. Daher mein erster hinweis mit dem OnRxChar. Sobald ein neuer Wert ankommt wird er gleich im Label angezeigt.

3. Um auf ganz sicher zu gehen, da wo die Caption festgelegt wird, schreibst Du davor noch Label.Caption := ''; //Damit wird sie auf jedenfall geleert und es steht nur noch der neue Wert drin.

4. In der Button3 Prozedur, mit dem Close, nicht vergessen auch den Port wieder zu schliessen. Comport.Close; //Ganz wichtig

5.
Zitat:
Gewichtseinheit (4bytes)
g: 20-20-6B-67 HEX
CR (2bytes) das soll wohl carriage-return bedeuten !?
Du bekommt also ein Leer, Leer, k, g.
CR ist Carriage Return.
LF ist Line Feed.

HTH

Grüsse, Daniel
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#17
  Alt 21. Okt 2002, 22:59
Hi,

Zitat:
die Waage sendet ja permanent Daten
Darum ist das was ich geschrieben habe ja auch wichtig, weißt Du was ich hatte :einen Münzgeldrückgeber. Stell Dir vor der würde so abgehen.

Gruß
Hansa
  Mit Zitat antworten Zitat
Andi

Registriert seit: 20. Okt 2002
16 Beiträge
 
Delphi 6 Personal
 
#18
  Alt 24. Okt 2002, 18:22
Hi!!

Und nochmal herzlichen Dank an Euch!!!

Ich werde mir wohl mal viel Zeit nehmen und dann alles autesten.



@daniel :

Was genau ist mit ONSHOW gemeint? Habe dieses nicht in meinem Code gefunden. Oder ist es was ganz banales? mir auf die Sprünge helf?

Jetzt werd ich erst mal alles testen!!

Besten Dank nochmal!!!

MfG

Andi
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#19
  Alt 24. Okt 2002, 19:02
Hallo Andi,

es ist banal.
Klicke das Form1 an, keine Kompo, sondern das Form selbst. Nun klicke im Object Inspector auf Eigenschaften, da sind ja die ganzen Prozeduren aufgelistet, die Form1 bietet. Unter anderem auch OnShow und OnClose. Die OnShow-Prozedur tritt ein sobald das Formular angezeigt wird. //Zur Laufzeit. Vorher kommt noch Create usw. Soll dich jetzt aber nciht stören. OnClose tritt ein sobald Du das fenster schliesst, bzw. die Anwendung Terminierst/Closed. Mach im Object Inspector einen Doppelklick auf die jeweiligen Namen der Prozeduren. Dann werde sie automatisch im Source angelegt/angezeigt. Da schreibst Du den Code rein den ich Dir beschrieben habe.
HTH.

Grüsse, Daniel
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#20
  Alt 24. Okt 2002, 20:08
Moin Daniel B,

um's etwas zu präzisieren:

OnShow wird aufgerufen unmittelbar bevor das Formular angezeigt wird. Es ist zu diesem Zeitpunkt noch nicht zu sehen.

OnClose wird (ebenso wie OnCloseQuery) nicht aufgerufen, wenn man die Anwendung mit Application.Terminate beendet.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  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 23:03 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