Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: MScomm import in Excel

MScomm import in Excel
12.01.2015 15:09:28
Hans
Hallo!
Ich versuche gerade die Anzeige eines Waagenterminals in Excel zu importieren.
Das Terminal hat einen COM Ausgang den ich via COM2USB Adapter mit meinem Computer verbunden habe. Soweit ich es herausbekommen sendet das Terminal lediglich das 5stellige Gewicht das die Waage im jeweiligen Moment anzeigt.
Ziel ist also dass dieses 5stellige Gewicht in einer Excelzelle dauerhaft "in Echtzeit" dargestellt wird. Und zwar als normaler Zahlenwert, damit ich mit der Zelle weiterrechnen kann.
MSCOMM.OCX ist installiert, registiert usw usf, funktioniert also.
Dann habe ich ein entsprechendes Steuerelement eingefügt und mit folgendem Code versehen:

Sub OpenPort()
Worksheets("SerialPort").MSComm1.CommPort = 3
Worksheets("SerialPort").MSComm1.Settings = "9600,n,8,1"
Worksheets("SerialPort").MSComm1.RThreshold = 1
Worksheets("SerialPort").MSComm1.InBufferSize = 4096
Worksheets("SerialPort").MSComm1.PortOpen = True
End Sub

Die Einstellungen passen zum Waagenterminal (liegt auf COMPort 3 usw.) und durch RThreshold = 1 sollte auch eine dauerhafte Weitergabe der Daten möglich sein.
Leider hakt es jetzt bei mir wie ich einen Code schreiben der mir das Gewicht permanent in einer Zelle darstellt....
Irgendwelche Vorschläge?
Meine VBA Kenntnisse sind nicht sehr berauschend, bin schon froh überhaupt so weit gekommen zu sein ;)

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Fragen
18.01.2015 16:16:11
Michael
Hallo Hans,
wenn Du googelst (mscomm1.input), findest Du jede Menge Treffer, wobei unter dem ersten Treffer
http://www.mikrocontroller.net/topic/200720
genau Deine Frage bearbeitet wird - aber leider ohne Lösung. Immerhin enthält er einige links, die interessant sein sollten.
Ich habe noch keine serielle Schnittstelle programmiert, habe aber von "früher" noch so einige Sachen im Hinterkopf: ein Kollege hat mal nen Nachmittag damit verbracht, ein Kabel für einen seriellen Drucker zu konfigurieren, mit Schnittstellentester und Zeug, derweil "serielles Kabel" "serielles Kabel" ist: die Pinbelegung der 9/25-poligen Schnittstelle ist oft herstellerspezifisch.
Das vorausgeschickt würde ich erst Mal grundsätzlich überprüfen, ob die Schnittstelle da ist.
Schnapp Dir mal die Console. Mit Mode kannst Du die Parameter des COM-Ports einstellen (Hilfe mit: mode /?), und im Prinzip müßtest Du Daten bekommen, wenn die Waage denn sendet, so oder so ähnlich:
copy com3 con /b
(das /b ist wahrscheinlich überflüssig) F6 oder Strg-Z beendet das.
Grundsätzlich würde ich mit dem Hersteller Kontakt aufnehmen, ob die ein simples Beispielprogramm haben. Ein "fünfstelliges Gewicht" muß ja irgendwie byteweise kodiert sein, und das gehört sich natürlich auseinandergedröselt.
Grundsätzlich ist jedes Gerät wie eine Datei zu handhaben, d.h. man sollte meinen, daß Du einen Stream bekommst, den Du byteweise auslesen und weiterverarbeiten mußt, bevor Du einen "Wert" hast, den Du in eine Zelle schreiben kannst.
Es könnte sein, daß die Waage ein handshake benötigt, so nach dem Motto: "hallo Waage, schicke mir mal ein Meßergebnis" Waage: "ok, hier haste 10 bytes (00, FF, AC,...)" "ok, danke, hab's bekommen".
Ohne nähere Infos zu dem Teil wirst im Trüben stochern.
Wie gesagt, ich hab so was noch nie gemacht. Ich stelle mir halt vor, wie ein Drucker funktioniert, der braucht ein handshake, weil er nicht nur die zu druckenden Daten empfängt, sondern auch Statusinfos zurückgibt: "habe kein Papier", "bin off-line" usw. Das wiederum im Gegensatz zu einer Maus, von der ich jetzt mal annehme, daß sie nur Bewegungsinformationen sendet, ohne großes handshaking - naja, die ist ereignisgesteuert.
Ein ereignisgesteuertes Beispiel zu COM findest Du hier: http://www.control.com/thread/1026230089
Na dann, viel Spaß,
Michael
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

MSComm Import in Excel: Echtzeitdaten vom Waagenterminal


Schritt-für-Schritt-Anleitung

  1. MSComm Steuerelement einfügen:

    • Öffne Excel und gehe in den Entwicklermodus.
    • Wähle "Einfügen" und füge ein MSComm-Steuerelement hinzu (MSComm Control).
  2. VBA-Editor öffnen:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsm)" und wähle "Einfügen" > "Modul".
  3. Code einfügen:

    • Kopiere und füge den folgenden Code in das Modul ein:
    Sub OpenPort()
       Worksheets("SerialPort").MSComm1.CommPort = 3
       Worksheets("SerialPort").MSComm1.Settings = "9600,n,8,1"
       Worksheets("SerialPort").MSComm1.RThreshold = 1
       Worksheets("SerialPort").MSComm1.InBufferSize = 4096
       Worksheets("SerialPort").MSComm1.PortOpen = True
    End Sub
    
    Sub GetWeight()
       Dim weight As String
       If Worksheets("SerialPort").MSComm1.Input <> "" Then
           weight = Worksheets("SerialPort").MSComm1.Input
           Worksheets("SerialPort").Range("A1").Value = weight
       End If
    End Sub
  4. Daten in Echtzeit anzeigen:

    • Füge einen Timer hinzu, um die GetWeight-Subroutine regelmäßig auszuführen.
    • Setze den Timer beispielsweise auf 1000 ms (1 Sekunde).
  5. Testen:

    • Starte die Subroutine OpenPort und überwache die Zelle A1, um das aktuelle Gewicht vom Waagenterminal zu sehen.

Häufige Fehler und Lösungen

  • Fehler: Kein Gewicht angezeigt:

    • Überprüfe die COM-Port-Einstellungen. Stelle sicher, dass das Waagenterminal korrekt verbunden ist und auf COM3 sendet.
  • Fehler: MSComm1 nicht gefunden:

    • Stelle sicher, dass das MSComm Control ordnungsgemäß registriert ist. Du kannst die Registrierung mit der mscomm32.ocx Datei überprüfen.
  • Fehler: Daten werden nicht aktualisiert:

    • Vergewissere dich, dass die RThreshold-Eigenschaft richtig gesetzt ist und der Timer korrekt konfiguriert ist.

Alternative Methoden

  • Verwendung von anderen COM-Bibliotheken:

    • Neben dem MSComm Control kannst du auch alternative Bibliotheken wie SerialPort in .NET verwenden und diese über Excel VBA ansteuern.
  • Direktes Auslesen über die Windows Konsole:

    • Du kannst die Windows-Konsole verwenden, um die Daten direkt vom COM-Port zu lesen, bevor du sie in Excel importierst.

Praktische Beispiele

  • Gewichtsausgabe in einer Zelle:

    • Der obenstehende VBA-Code zeigt, wie du das Gewicht aus dem Waagenterminal in die Zelle A1 schreiben kannst.
  • Datenprotokollierung:

    • Du kannst eine Schleife erstellen, die die empfangenen Daten in eine Tabelle protokolliert, um historische Daten zu analysieren.
Sub LogWeight()
    Dim lastRow As Long
    lastRow = Worksheets("SerialPort").Cells(Rows.Count, 1).End(xlUp).Row + 1
    Worksheets("SerialPort").Cells(lastRow, 1).Value = Now
    Worksheets("SerialPort").Cells(lastRow, 2).Value = Worksheets("SerialPort").MSComm1.Input
End Sub

Tipps für Profis

  • Verwende Fehlerhandhabung:

    • Integriere On Error Resume Next und On Error GoTo 0, um Fehler während der Kommunikation zu behandeln.
  • Optimierung der Performance:

    • Reduziere die Häufigkeit der Abfragen, um Excel nicht unnötig zu belasten, insbesondere bei hoher Aktualisierungsrate.
  • Sicherheit beim Datenhandling:

    • Stelle sicher, dass du nur die notwendigen Berechtigungen hast, um auf die COM-Ports zuzugreifen.

FAQ: Häufige Fragen

1. Was ist MSCOMM?
MSComm ist ein Steuerelement in VBA, das es ermöglicht, serielle Daten über COM-Ports zu empfangen und zu senden.

2. Wie kann ich die Geschwindigkeit des COM-Ports anpassen?
Die Geschwindigkeit kann über die Settings-Eigenschaft des MSComm Controls eingestellt werden, z.B. "9600,n,8,1".

3. Was mache ich, wenn die Verbindung zur Waage abbricht?
Überprüfe die physische Verbindung und stelle sicher, dass der Treiber für den COM-Port korrekt installiert ist.

4. Wo finde ich das MSComm Control?
Das MSComm Control ist in der Regel in der mscomm32.ocx Datei enthalten, die du registrieren musst, um sie in deinem Excel-Projekt zu verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige