myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   [Frage] Daten zwischen Excel und VB.net Programm austauschen (https://mygully.com/showthread.php?t=2443310)

sivro 05.10.11 18:48

[Frage] Daten zwischen Excel und VB.net Programm austauschen
 
Hallo miteinander,

Ich habe folgende Herausforderung;

von einem Datenloggerprogramm werden Temperaturen an eine Excel-Tabelle gesendet.

Ich möchte gerne mit einem Makro die Temperaturen an ein eigen gebasteltes Programm in vb.net senden. Dass dann die Steuerung für die sämtliche Temperaturabhängigen Maschinen übernimmt!.


So jetzt nochmal im Klartext.

Mir wäre geholfen, wenn ein Makro in Excel folgendes kann:

Einen X Beliebigen Satz oder Zahlen an ein geöffnetes Programm in ein Label oder Textbox schreibt.
Dann kann mein Programm die Daten verarbeiten.

Ich habe schon probiert mit FindWindow; FindWindowEx; SendMessage,,,
aber irgendwie scheitert es wahrscheinlich an meiner Begabung / Erfahrung

Was muss ich beachten bzw. Was muss ich in dem .net Programm beachten; dass es die Daten überhaupt annimmt??


Mir wäre wirklich sehr geholfen

Vielen Dank.

haze303 05.10.11 19:05

Kannst du dir nicht direkt die Werte vom Datalogger holen? Wie sind die Datalogger mit dem Rechner verbunden? RS232, USB oder sogar netzwerkfähig?

Warum ist ein Zwischenschritt über ein Excel Makro von nöten? Alles was ein Excel Marko kann (VBA), kann (VB).NET schon lang und 2x besser. ;)

Viele Grüße,
haze303

sivro 05.10.11 19:39

Das ganze läuft über eine RS232 Schnittstelle.

Es ist sogar viel leichter einfach das Gerät abzufragen, aber wir haben da ein sehr Professionelles Tool das verschiedene Diagramme; Tabellen; usw. anzeigen kann; es ist fähig Rechenkanäle zu verarbeiten usw.

Mein Problem ist das diese Software abgespeckt ist und leider nicht als DatenServer funktioniert.

Es kann aber eine Verbindung zu Excel aufbauen und die Daten da abspeichern.

Da die Steuerung die ich Basteln möchte eher Sekundär von der Priorität ist ist es unbedingt notwendig die Daten mit diesem Programm aufzuzeichnen wir ermitteln damit verschiedene Werte usw. sozusagen ein Prüfstand der Daten speichert.

Ich möchte mir nur ein Paar Temperaturen rausholen und an mein Programm senden, leider weiß ich mir nicht anders zu helfen oder du hast einen Tip wie man eine Com Schnittstelle abhören kann oder auch anders auf die Daten zugreifen kann ohne zusätzlich Geld zu investieren :)

Vielen Dank

haze303 05.10.11 20:51

Hier hat sich jemand die Mühe gemacht, eine Klasse bereitzustellen, um Daten von einer RS232 Schnittstelle mit Hilfe von VB.Net abzufragen.

[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

Viele Grüße,
haze303

PS: Scheint sogar wirklich sehr sehr einfach zu sein, damit Daten abzufragen. Im Mikrocontroller Forum schwören die VB-Jungs auch darauf. :)

Epeos 05.10.11 23:31

Wenn haze303's Möglichkeit ausscheidet: Es ist einfacher, von VB.Net aus Excel anzusprechen. Excel stellt einen Haufen COM-Klassen zur Verüfung, die Du mit wenig Aufwand in VB.Net benutzen kannst. Das ist dann aber ein anderer Workflow.

sivro 06.10.11 05:00

Vielen Dank für die Mühe,

aber die Möglichkeit scheidet leider aus, da ich nicht mit zwei Geräten den COM Port ansprechen kann.

Wie oben gesagt ich benötige das andere Programm als Primären Datenlogger. Das heißt erste Verbindung


Leider ist es jetzt nicht mehr möglich mit meinem anderen Tool auf die COM Schnittstelle zuzugreifen.


Also bleibe ich nach wie vor auf meiner Frage hängen.

Ich habe von interkommunikation zwischen zwei Prozessen gehört sog. IPC oder auch mit Named Pipes arbeiten?

Hat da schon iregendwer Erfahrung mit diesen?

Epeos 06.10.11 06:14

Oh, sorry. Ich meinte nicht die COM-Schnittstelle. COM ist ein bestimmter Objekttyp, um in eigenen Programmen Komponenten aus anderen Programmen zu verwenden. [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

Erebos76 06.10.11 10:06

Das erste, das mir einfällt, ist: abspeichern und in VB.net via FileStream auslesen.

Alternativ wäre, wie schon genannt, ein direkter Zugriff auf Excel möglich.

Code:

Dim objXLApp As Excel.Application
Dim objXLWB As Excel.Workbook
Dim objXLWS As Excel.Worksheet
Dim objXLCell As Excel.Range

Set objXLApp = New Excel.Application()
Set objXLWB = objXLApp.Workbooks.Open(Dateiname)

usw.

sivro 06.10.11 21:22

[ Erfolgreich gelöst ]
 
Also ich habe es jetzt gelöst etwas Kompliziert aber gelöst :)



Ich arbeite mit der SendMessage API

Mein Datenlogger schreibt die Daten in eine Excel Tabelle.
Der Datenlogger hat einen Messzyklus von ca. 10 sec.

Meine Steuerung braucht so ein kurzes Intervall nicht.
Ich arbeite mit der Application.OnTime Methode und
Sende alle 60 sec den aktuellen Messwert an eine Textbox in
meinen VB.Net Programm.

'''''''Ganz harte Nuß für mich war den Klassennamen des Controls abzufragen.
Aber nach ewiger Bastelei ist es mir dann geglückt'''''

Und die regelt dann je nach Hysterese
und Anforderung meine Maschine.

''''''' Benutzte API FindWindow / FindWindowEx / SendMessage / GetWindowText ''''''''

Wenn einer Infos braucht

Ich stehe gerne zur Verfügung. Vielen Dank für Eure Mühen.


Achja und wenn wirklich einer Erfahrung hat mit der NAMED_PIPE hat... ich würde gern noch einiges darüber Wissen. Speziell zwischen Excel VBA und VB,Net


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:39 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.