Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Neuen Beitrag zur Code-Library hinzufügen (https://www.delphipraxis.net/33-neuen-beitrag-zur-code-library-hinzufuegen/)
-   -   Waagenwerte über com-Schnittstelle einlesen (https://www.delphipraxis.net/163885-waagenwerte-ueber-com-schnittstelle-einlesen.html)

Carsten1812 21. Okt 2011 13:05

AW: Waagenwerte über com-Schnittstelle einlesen
 
Sorry, lag an mir. jetzt stürzt das Programm nicht mehr ab.
Und wo gebe ich jetzt an das die Werte im Com7 abgeholt werden sollen?

fkerber 21. Okt 2011 13:07

AW: Waagenwerte über com-Schnittstelle einlesen
 
Hi,

ich würde schätzen im Objektinspektor, wenn du deine Comport-Komponenten-Instanz auf dem Formular ausgewählt hast.


LG, Frederic

Carsten1812 21. Okt 2011 13:10

AW: Waagenwerte über com-Schnittstelle einlesen
 
da ist auch bei 'Port:com7' eingestellt.
sollte er denn jetzt schon Waagenwerte in den Memofeldern anzeigen?

fkerber 21. Okt 2011 13:12

AW: Waagenwerte über com-Schnittstelle einlesen
 
Hi,

hast du denn das RxChar-Event mit deiner Methode verknüpft?
Dann sollte er was anzeigen, wenn die Waage was sendet.


LG, Frederic

Bummi 21. Okt 2011 13:15

AW: Waagenwerte über com-Schnittstelle einlesen
 
Du kannst auch mal einen Brechpunkt da reinhängen, gegf. kommen da #0 Zeichen am Anfang, dann siehst Du nichts.
Es kann auch sein dass Du erst einen sinnvollen "String" schicken musst um eine Antwort zu bekommen ....

Carsten1812 21. Okt 2011 13:17

AW: Waagenwerte über com-Schnittstelle einlesen
 
was meinst du denn mit 'Methode'?

fkerber 21. Okt 2011 13:20

AW: Waagenwerte über com-Schnittstelle einlesen
 
Hi,

irgendwo in deinem Code steht doch

Delphi-Quellcode:
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
s: AnsiString;
begin
  ComPort1.ReadStr(s, Count);
  FInBuffer := FInBuffer + s;
  InterPretInbuffer;
end;

Das ist eine Methode. Die wird aber nicht durch göttliche Eingebung aufgerufen, sondern dafür muss sie passend mit der Komponente verknüpft sein.
Auf der zweiten Registerkarte im Objektinspektor bei ausgewählter Comport-Instanz sollte in der Zeile OnRxChar rechts daneben was stehen - wenn da nur ein leeres weißes Feld ist, dann da mal nen Doppelklick reinmachen (wobei ich grad nicht weiß, ob er es hinbekommt, wenn es eine Methode des Names dann schon gibt).


LG, Frederic

Carsten1812 21. Okt 2011 13:25

AW: Waagenwerte über com-Schnittstelle einlesen
 
Also dann müsste die Methode aufgerufen werden, denn dass hatte ich vorhin schon gemacht.
Momentan sieht mein ganzer Quelltext grade so aus.
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, CPort;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    ComPort7: TComPort;
    Edit1: TEdit;
    Memo1: TMemo;
    Memo2: TMemo;
    procedure FormActivate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ComPort7RxChar(Sender: TObject; Count: Integer);
  private
  FInBuffer: AnsiString;
      procedure InterPretInBuffer;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  hcomm         : THandle;
  COM_enum      : integer;

implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);
begin
 ComPort7.Connected := true
end;

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

procedure TForm1.ComPort7RxChar(Sender: TObject; Count: Integer);
var
s: AnsiString;
begin
  ComPort7.ReadStr(s, Count);
  FInBuffer := FInBuffer + s;
  InterPretInbuffer;
end;

procedure TForm1 .InterpretInbuffer;
var
     i:Integer;
     part:AnsiString;
begin
     i := Pos(#10,FInBuffer);
     Memo1.Lines.Add(FInBuffer);
     while i>0 do
        begin
           Part := Copy(FInBuffer,1,i-1);
           FInBuffer := Copy(FInBuffer,i+1,Length(FInBuffer));
           Memo2.Lines.Add(Part);
           i := Pos(#10,FInBuffer);
        end;
end;
end.

fkerber 21. Okt 2011 13:27

AW: Waagenwerte über com-Schnittstelle einlesen
 
Hi,

dann solltest du Thomas' Ansatz mit dem Breakpoint weiterverfolgen.


LG, Frederic

Carsten1812 21. Okt 2011 13:54

AW: Waagenwerte über com-Schnittstelle einlesen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Mit den Breakpoints komme ich nich weiter, habe mehrere gesetzt, aber ich bekomme keine Werte von der Waage zu sahen.
Was kann man denn eigentlich anhand dieser Tabelle erkennen?Anhang 35412 Seite 147 Tabelle 11-7
Muss ich anhand dessen auch noch etwas einstellen?

guinnes 21. Okt 2011 14:12

AW: Waagenwerte über com-Schnittstelle einlesen
 
Hast du mal gemessen ( mit einem Messgerät ), ob über die Schnittstelle überhaupt was kommt ? Milliampermeter in Reihe in eine Leitung : 20mA, wenn die Waage nicht sendet.
Ist der Loop überhaupt versorgt ?
Leuchten die LED's auf dem Umsetzer ?

Carsten1812 21. Okt 2011 14:19

AW: Waagenwerte über com-Schnittstelle einlesen
 
Die Waage funktioniert, habe das extra Siwarex Waagenprogramm bei mir auf dem PC installiert und da kommen auch immer die richtigen Waagenwerte an.
Die RX und die Power-Leuchte an dem Konvereter leuchten beide

Klaus01 21. Okt 2011 14:31

AW: Waagenwerte über com-Schnittstelle einlesen
 
Hallo,

läuft das Waagenprogramm wenn Du mit Deiner Applikatio probierst?
Wenn ja, könnte es sein, dass das Wagenprogramm die Schnittstelle (com7) blockiert.

Grüße
Klaus

Carsten1812 21. Okt 2011 14:44

AW: Waagenwerte über com-Schnittstelle einlesen
 
Daran liegt es nicht. Das Siwarex Programm läuft auch wenn das Delphi Programm in betrieb ist.

p80286 21. Okt 2011 15:02

AW: Waagenwerte über com-Schnittstelle einlesen
 
Ich kann mich ja irren, aber irgendwie muß die Waage doch mitbekommen, daß auf der Gegenseite jemand ihre Daten lesen möchte. und ich meine mich zu erinnern, daß da ein Handshake-Protokoll darunter liegt. Wird das automatisch von der Komponente erledigt?

Gruß
K-H

Medium 21. Okt 2011 15:07

AW: Waagenwerte über com-Schnittstelle einlesen
 
Da COM Ports imho nicht so ohne weiteres von mehreren Prozessen geteilt werden können, scheint das ein Indiz dafür zu sein, dass dein Programm überhaupt keine Verbindung öffnet. Lass dir den Wert von "Connected" mal mittels eines Timers regelmäßig anzeigen. Nicht, dass die Verbindung fehlschlägt oder kurz nach Öffnen durch irgendwas wieder gekappt wird.

Edit: @p80286: Es gibt auch Waagen, die einfach stumpf immer ihre Gewichtsdaten bei Änderung rausjubeln. Ob man requesten muss, wäre dann wieder der Waagendoku zu entnehmen.

divBy0 21. Okt 2011 16:11

AW: Waagenwerte über com-Schnittstelle einlesen
 
Du könntest dir z.B. den PortMonitor von Sysinternals runterladen und damit mal untersuchen was das origial Waageprogramm so versendet und empfängt.

Welchen Anschluss benutzt du genau? RS232 (Klemme 3, 4, 5) oder TTL (Klemme 6, 7)???

In der Anleitung Punkt 10.1 ganz unten hört sich auch interessant an.

@Medium: Ich wollte dich nicht verwirren, Sorry! :-D

Chemiker 21. Okt 2011 19:29

AW: Waagenwerte über com-Schnittstelle einlesen
 
Hallo,
das ist hier ein lustiges Ratespiel.
Zitat:

Zitat von Klaus01
läuft das Waagenprogramm wenn Du mit Deiner Applikatio probierst?
Wenn ja, könnte es sein, dass das Wagenprogramm die Schnittstelle (com7) blockiert.

Zitat:

Zitat von Carsten1812
Daran liegt es nicht. Das Siwarex Programm läuft auch wenn das Delphi Programm in betrieb ist.

Wenn das Siwarex Programm läuft wird der COM-Port blockiert, dass geht nach dem Prinzip, wer zuerst kommt, mahlt zuerst .

Man sollte vieleicht etwas systematischer vorgehen, sonst gibt es zu viele Unbekannte und man kann das Problem nicht lösen.
1. Funktioniert das Delphi Programm?
Dies kann man überprüfen, indem man sich ein kleines Sende-Programm schreibt und mittels eines virtuellen COM-Ports (z.B. COM0COM) Daten sendet und nachschaut, ob das Delphi Programm prinzpell in der Lage ist Daten über den COM-Port zu empfangen und anzuzeigen.
2. Stimmen die Einstellungen vom COM-Port?
Dies muss man in der Dokumentation nachlesen und entsprechend im Delphi Programm einstellen.
3. Ist der COM-Port durch ein anderes Programm blockiert?
Alle anderen Programme beenden, die evt. zugriff auf den COM-Port haben könnten.
4. Sendet die Waage Daten?
Muss man den Datentransfer mit einem Befehl anstoßen, oder werden die Daten zyklisch gesendet, dass sollte in der Dokumentation stehen.

Das sind im Groben die Arbeitsschritte um das Problem zu lösen.


Bis bald Chemiker

Der.Kaktus 21. Okt 2011 20:38

AW: Waagenwerte über com-Schnittstelle einlesen
 
Entschuldigt Bitte, aber ich lese das schon ne Weile mit..

ich hab sowas fuer ne LKW-Waage gemacht mit TP7..(Objekt Professional)..das ging ganz flott..aber ohne "Grundkenntnisse"..gehts nun mal nett.
...bissl Eigeninitiative iss dann schon gefragt!!!


Sorry..aber musste ich mal schreiben:-(

Carsten1812 27. Okt 2011 14:14

AW: Waagenwerte über com-Schnittstelle einlesen
 
Hallo,
gibt es Programme die eine Schnittstelle auslesen und mir dann am Ende den Waggenwert anzeigen zu kaufen?

mkinzler 27. Okt 2011 14:17

AW: Waagenwerte über com-Schnittstelle einlesen
 
Wenn, dann vom Hersteller der Waage.

Carsten1812 27. Okt 2011 14:20

AW: Waagenwerte über com-Schnittstelle einlesen
 
das ist schlecht, denn sowas ist bei Siemens meiner Meinung nach nicht im Programm.
Wo finde ich freie Programmierer die sowas machen?

bassman 27. Okt 2011 14:35

AW: Waagenwerte über com-Schnittstelle einlesen
 
Holl dir mal PortMon:

http://technet.microsoft.com/en-us/s...rnals/bb896644

Sehr nützlich um sich die Kommunikation von com_ports anzuschauen.

Damit kannst Du genau sehen was die Originalsoftware an die Waage schickt, von ihr zurück kommt.

Gruss, Jörn

user0815 27. Okt 2011 14:49

AW: Waagenwerte über com-Schnittstelle einlesen
 
da wir gerade bei Programmen sind, hier ist auch ein schönes 4free
HTerm 0.8.1beta das beta muss man nicht wirklich ernst nehmen.

http://www.heise.de/software/download/hterm/53283

Carsten1812 27. Okt 2011 15:07

AW: Waagenwerte über com-Schnittstelle einlesen
 
Zitat:

Zitat von bassman (Beitrag 1132914)
Holl dir mal PortMon:

http://technet.microsoft.com/en-us/s...rnals/bb896644

Sehr nützlich um sich die Kommunikation von com_ports anzuschauen.

Damit kannst Du genau sehen was die Originalsoftware an die Waage schickt, von ihr zurück kommt.

Gruss, Jörn

Also dein Programm funktioniert ja ganz gut, nur wenn ich die Waage über das SiwarexTool auslese, erscheint da nicht.

bassman 27. Okt 2011 15:25

AW: Waagenwerte über com-Schnittstelle einlesen
 
Wenn das SiwarexTool auch via com-port kommuniziert, muss da was zu sehen sein.

Carsten1812 27. Okt 2011 15:29

AW: Waagenwerte über com-Schnittstelle einlesen
 
Die Siwarex ist an RS232 über einen USB Konverter an com4 angeschlossen.
aber in dem Protokoll wird nichts angezeigt. Auch wenn in dem SiwarexTool der Wagenwert angezeigt wird

Medium 27. Okt 2011 15:35

AW: Waagenwerte über com-Schnittstelle einlesen
 
Bist du sicher, dass dies der einzige Weg ist, über den die Waage angeschlossen ist? Nicht, dass du noch via Ethernet an die SPS kommst, die die Waage auch kennt, und das Siwarex-Tool sich dass da ausm Eingangsabbild rausnuckelt :)

Carsten1812 27. Okt 2011 15:55

AW: Waagenwerte über com-Schnittstelle einlesen
 
Nein, sonst ist wirklich nichts angeschlossen. habe extra alles andere vorher vom PC getrennt

bassman 27. Okt 2011 15:59

AW: Waagenwerte über com-Schnittstelle einlesen
 
Bist du sicher, dass du PortMon richtig verwendest? Schau da mal in die Hilfe, ist nicht sehr viel...

1. Erst all Programm schliessen welche auf den Port, die Waage zugreifen

2. PortMon starten (Kann sein, dass du es als Admin starten musst)

3. Computer->Connect Local

4. Unter Capture->Ports deinen Port wählen

5. Capture->Capture Events

6. SiwarexTool starten

Nun müsste eigentlich die Kommunikation in PortMon sichtbar sein

Carsten1812 27. Okt 2011 16:15

AW: Waagenwerte über com-Schnittstelle einlesen
 
Soweit ich das sehe war alles richtig. angeziegt hat er aber wieder nichts


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:44 Uhr.
Seite 2 von 2     12   

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