Serielle Schnittstelle mit Excel

Hallo,

nachdem ich einen neuen Win7-PC - noch mit Office 2003 - habe, ist mein Problem an die COM-Schnittstelle ran zu kommen und von dort gelesene Daten mit Excel weiter zu verarbeiten noch etwas offen. Als Alternativen habe ich:

  1. RSCOM.DLL von B. Kainka. Ist schon von Anfang der 90er Jahre und mir etwas suspekt.
  2. Kernel32.DLL. Habe da was aus dem Netz, funktioniert so leidlich.
  3. .NET und VB6. Hab da noch Einarbeitung nötig.m Geht das überhaupt mit Off. 2003?
    Was empfehlen die Fachleute?

Danke
Laika

Guten Tag,

nachdem ich einen neuen Win7-PC - noch mit Office 2003 - habe,
ist mein Problem an die COM-Schnittstelle ran zu kommen und
von dort gelesene Daten mit Excel weiter zu verarbeiten noch
etwas offen. Als Alternativen habe ich:

  1. RSCOM.DLL von B. Kainka. Ist schon von Anfang der 90er
    Jahre und mir etwas suspekt.
  2. Kernel32.DLL. Habe da was aus dem Netz, funktioniert so
    leidlich.
  3. .NET und VB6. Hab da noch Einarbeitung nötig.m Geht das
    überhaupt mit Off. 2003?
    Was empfehlen die Fachleute?

Danke
Laika

Spar dir den ganzen Zirkus mit dlls, Makros,Versionen usw.
Hol dir von http://www.serielleSchnittstelle eines der Shareware-Programme Extract!mini, Extract!basic oder Extract!pro ( je nachdem, was du so für Funktionen alles brauchst - aber davon schreibst du nichts). Die Soft nimmt die Daten von der Schnittstelle, filtert sie und schreibt sie an die Cursor-Position - also in deine Tabelle(n)

Viel Erfolg!

Guten Tag,

nachdem ich einen neuen Win7-PC - noch mit Office 2003 - habe,
ist mein Problem an die COM-Schnittstelle ran zu kommen und
von dort gelesene Daten mit Excel weiter zu verarbeiten noch
etwas offen. Als Alternativen habe ich:

  1. RSCOM.DLL von B. Kainka. Ist schon von Anfang der 90er
    Jahre und mir etwas suspekt.
  2. Kernel32.DLL. Habe da was aus dem Netz, funktioniert so
    leidlich.
  3. .NET und VB6. Hab da noch Einarbeitung nötig.m Geht das
    überhaupt mit Off. 2003?
    Was empfehlen die Fachleute?

Danke
Laika

Spar dir den ganzen Zirkus mit dlls, Makros,Versionen usw.
Hol dir von http://www.serielleSchnittstelle.d eines der Shareware-Programme Extract!mini, Extract!basic oder Extract!pro ( je nachdem, was du so für Funktionen alles brauchst - aber davon schreibst du nichts). Die Soft nimmt die Daten von der Schnittstelle, filtert sie und schreibt sie an die Cursor-Position - also in deine Tabelle(n)

Hallo Laika,

Was empfehlen die Fachleute?

k.A., gehör nicht dazu.

nachdem ich einen neuen Win7-PC - noch mit Office 2003 - habe,
ist mein Problem an die COM-Schnittstelle ran zu kommen und
von dort gelesene Daten mit Excel weiter zu verarbeiten noch
etwas offen. Als Alternativen habe ich:

  1. .NET und VB6. Hab da noch Einarbeitung nötig.m Geht das
    überhaupt mit Off. 2003?

der Vorschlag von JP klingt interessant.

Alle MS-Produkte die Vba kennen haben von .Net Code nix.
VB6 Code funktioniert aber nur dann wenn im Code alles auch in Vba „bekannt“ ist. So gesehen könnte auch .Net Code laufen.

Du schreibst von noch XL2003 was klingt als ob mittelfristig die Version erhöht wird.
Jetzt hält sich seit langer Zeit das Gerücht daß in Office Vba verschwindet und dafür eine .Net Funktionalität eingebaut wird.
Ist aber sehr unklar ob und wann, schau mal hier:
https://www.google.de/#hl=de&sclient=psy-ab&q=zukunf…
Mit besseren Suchwörtern findest du sicher mehr Treffer aber ich
glaube, wissen was kommt weiß nur MS.

Mal angenommen, es kommt wirklich .Net dann ist es sicher nicht unklug
jetzt schon eine .Net-Lösung zu finden, das wäre zukunftssicher.
Problem dabei ist derzeit, du bist angewiesen darauf daß dir jmd.
der VB6 (ebay, 450€) oder .Net hat dir eine exe bastelt.

Die kannst du dann mit Vba starten. Ich stelle mir den Code für so eine .exe relativ simpel vor wenn du nur da deine RS232 Schnittstelle
permanent auslesen willst und das in eine log-Datei reinschreiben läßt.

Diese Log-datei kannst du dann später bequem mit Vba auslesen usw.
Willst du aber mit der .exe die RS232 Schnittstelle steuern/ regeln,
auf Inputs im Code reagieren o.ä. wird der Code viel aufwändiger.

Wenn du nur „auslesen“ willst, so frage im .Net Brett an.
Ich bin da hoffnungsfroh daß du dir dann ein(e) nette®
so eine Exe erstellt.
Zusätzliche Wünsche (steuern/regeln) sind da aufwändiger,
aber wer weiß, vllt. hat da ein .Net benutzer auch so eine
RS232 Schnittstelle und Code dafür.

Gruß
Reinhard

Danke an Euch beide …
… eigentlich will ich nur simple Sachen machen, Auslesen von Daten, angestossen durch Senden eines Zeichens an den MC. Z.B. Senden von „h“ veranlasst das Senden der Heizungsdaten, „q“ quittiert Ereignisse (Quittieren heisst „habe es gesehen, kümmere mich drum“, so wie in der Prozessleittechnik üblich). Regeln - da ist nur der Heizungsvorlauf. Abhängig von der gemessenen Vorlauftemp. wird der Mischer auf- oder zugefahren. Also nix Gewaltiges, alles auch nur gaaaaanz langsame Signale, Reaktionszeiten usw.
Wie gesagt, ist mir die RSCOM.DLL suspekt, bis hin zu Excel- oder gar Systemabstürzen.
Die Kernel32.DLL ist ja was „Hausinternes“, also unverdächtig. Habe VB(A)-Routinen von Darren Richards, „Win32 comms API wrapper for VBA“ und auf http://msdn.microsoft.com/en-us/library/ms810467.aspx was gefunden. muss ich mal anschauen.

Zur allgemeinen Erläuterung: Ich will in einer Excel-Mappe mit div. Tasten jeweils einen Makro aktivieren:

  • Anforderungvon z.B. „Heizungsdaten lesen“ an den MC senden
  • gewünschten Daten in eine Tabelle eintragen
  • diese analysieren, auf Fehler, Plausibilität usw. prüfen
  • umformen für die Zieltabelle
  • eintragen dort.
    Alles ganz simple Dinge mit VBA, in dem ich mich relariv gut auskenne.

@JP:
Der Link führt ins Leere …

Gruss
Laika

PS: @Reinhard: In http://www.herber.de/forum/archiv/716to720/t719039.htm gibt es auch einen Reinhard. Bist Du das?

Hallo Laika,

… eigentlich will ich nur simple Sachen machen,

soso, nur simple Sachen,
die hier bezeichnen das als „Die Ansteuerung … geht ans Eingemachte.“
http://www.excel-center.de/faq/artikel.php?ide=ad200…

PS: @Laika, Ja.

Gruß
Reinhard

So schwer ist es nicht
Hallo Reinhard, hallo Laika,

die RS232-Schnittstelle (oder Serielle Schnittstelle oder COM-Port) lässt sich aus Excel VBA relativ leicht ansteuern. Bei uns in der Firma lese ich damit Werte von einem Lichtmessgerät ein und verarbeite sie in Excel weiter. Das geht so (ich erklär’s mal ausführlicher als es für Reinhard nötig ist, dann ist es für Laika evtl. einfacher zu verstehen).
Man braucht das COMM Control von Windows. Ab Windows7 ist es (wie ich gehört habe) automatisch dabei. Bei älteren Versionen müssen die VB Runtime Dateien installiert sein.
Dann im Excel VBA Editor eine neue Userform anlegen. Dann erscheint ja automatisch die „Werkzeugsammlung“ mit den verschiedenen Objekten für die Userform.
Rechtsklick auf die Werkzeugsammlung und „Zusätzliche Steuerelemente…“ auswählen.
In der List das „Microsoft Communications Control, Verion 5.0“ ankreuzen und die Liste schließen.
In der „Werkzeugsammlung“ ist jetzt ein Telefon. Anklicken und dann auf die Userform klicken.
Dort erscheint jetzt das Telefon. Es sollte den Namen „MSComm1“ haben.
Jetzt in ein Modul den folgenden Code einfügen:

Sub lesen()
 Dim wert As String

 ' RS-232 Schnittstelle initialisieren:
 With UserForm1.MSComm1
 .CommPort = 1
 .Settings = "9600,N,8,1"
 .PortOpen = True
 .RThreshold = 1
 End With

 ' Wert von Gerät lesen:
 With UserForm1.MSComm1
 Do
 .Output = "AusgabeKommando" ' Befehl an das Gerät schicken, damit es einen Messwert ausgibt
 Loop Until Err = 0

 Do While Not .CommEvent = comEvReceive ' Warten, bis das Gerät etwas geschickt hat
 Loop

 Do
 wert = .Input
 Loop While wert = ""
 End With

 ' RS-232 Schnittstelle schließen:
 UserForm1.MSComm1.PortOpen = False
End Sub

Es ist nur Beispielcode, der einen Wert von einem fiktiven Gerät einliest.
Die Port Nr., Baud Rate usw. müssen für ein echtes Gerät entsprechend angepasst werden. Aber man sieht, dass man mit relativ wenigen Zeilen Werte von einem Gerät lesen kann. Die Werte kann man natürlich direkt weiter in Excel verwenden.

Eine ausführliche Erklärung gibt es hier:
http://www.activevb.de/tutorials/tut_com/com.html

Gruß, Andreas

Hallo Andreas,

die RS232-Schnittstelle (oder Serielle Schnittstelle oder
COM-Port) lässt sich aus Excel VBA relativ leicht ansteuern.

richtiges Wort „relativ“. Wie vieles in Excel, ein Diagramm, eine Pivottabelle hat man schnell erstellt. Aber Feineinstellungen,
daran kann man verzweifeln :frowning:

Laika hat da wohl einen Mikrocomputer am seriellen Port.
Von Excel aus (und von mir) gesehen ist das quasi eine Platine die
„dranhängt“.
Sie sollte auf Outputs des PCs reagieren.
Umgekehrt sollte der PC reagieren wenn da diese Platine was zum PC sendet.

Ob das in allen Fällen einfach ist weiß ich nicht. Ich bin kein
Theoretiker, ich bräuchte auch so eine „Platine“ um zu testen.
Dazu kommt, bei der Recherche zu Laikas diesbezüglichen Anfragen sah
ich schon daß es da Problematiken gibt, je nach Version der benutzen Programme, Betriebssysteme.

Scheinbar sind da 64 Bit Varianten von Übel.
Und, bei der Recherche stieß ich öfters da auf diesen B.Kainla oder
wie der heißt, er hat/hatte sich wohl damals, mit älteren
Programmversionen beschäftigt und netterweise seine Codes
veröffentlicht, Danke dafür.

Leider hapert es bei den Codes wohl bei neueren Versionen.
Warum das so ist weiß ich nicht. RS232 ist uralt, alles daran bekannt, es wäre für Fachleute ein Klacks da eine Treiber dll
o.ä. zu basteln sodaß Normalanwender diese .dll benutzen können
aber wenn z.B. MS seinen Fachleuten keinen solchen Auftrag erteilt
so bleibt es halt wie bisher, Laika steht im Regen, ich an ihrer
Stelle natürlich auch.

Was will man/frau auch machen wenn man im Internet nix brauchbares
findet? Sicher, ein Weg ist sicher gangbar, Taucheranzug anziehen und
ganz tief in das Windows-Betriebssystem tauchen, in das von Office auch und sich dann so eine Wunsch-dll selbst basteln.
Kann man sicher schaffen, geschätzte Dauer 1-3 Jahre, je nachdem
ob man da 2, 4,10 Stunden pro Tag aufwendet

Gruß
Reinhard

Und nochmal Danke an Euch beide …
… die Sache von Andreas kannte ich noch nicht - sieht richtig gut aus! Muss mir das mal zu Gemüte führen.

Nein, schwierig finde ich das alles nicht. Habe früher von Assembler über C bis zu einigen Hochsprachen alles mal programmiert. Aber das ist lange her, und als Rentner habe ich heute furchtbar viel anderes zu tun :wink:)

Nochmal zur Erläuterung: Es handelt sich um einen CControl-Microcomputer. Er wird in einem BASIC-Dialekt programmiert. Damit steuere und überwache ich seit 15 Jahren alles Mögliche in meinem Haus. Damit ist auch gesagt, dass der MC ziemlich alt ist und nur COM „versteht“. Ich könnte mir was Moderneres kaufen, aber es läuft recht gut und das Programm - ca. 2100 LOC incl. Kommentar - ist sehr stabil. Durch Senden eines Zeichens wird der MC veranlasst, Daten an den PC zu senden, zwischen einigen 10 und mehr als 2000 Bytes/Zeichen. Die hatte ich bisher mit der RSCOM.DLL vom B.Kainka empfangen und in Excel weiter verarbeitet. Die gefällt mir aber nicht mehr. Hatte auch lange gedauert, bis ich die im Griff hatte und Excel bei manchen Aufrufen nicht mehr abstürzte. Vor einer Weile hörte ich von der Kernel32.DLL, hatte aber keine vernünftige Beschreibung.
Dann habe ich das alte Hyperterminal wieder aktiviert. Sowohl die ältere Version als auch die neuere für Win 7 machen Probleme.

Langer Rede kurzer Sinn: Wenn die Routinen von Andreas das halten, was sie auf dem ersten Blick versprechen, wäre das super!
Ich melde mich wieder. Kann ein bisschen dauern.

Gruss
Laika