Hallo,
ich habe vor, ein Excel-Makro zu schreiben, um einen von einem Photometer gesendeten Datenstring in eine Tabelle einzutragen. Dabei soll eine Spalte die Messzeit enthalten, die andere die zugehörigen Messwerte. Leider scheitere ich immer am "Laufzeitfehler 1004". Kann mir da vielleicht jemand weiterhelfen?
Ich benutze zum Auslesen der seriellen Schnittstelle die Software "StrokeReader" bzw. das zugehörige ActiveX Steuerelement. Im Anhang findet sich beispielhaft eine mit einem Terminalprogramm aufgezeichnete Datenreihe sowie das Projekt.
Parameter der Verbindung:
- Baud Rate: 19200
- Parität: keine
- Data Bits: 8
- Stop Bits: 1
Hier nochmal der Code:
*Topic verschoben*
ich habe vor, ein Excel-Makro zu schreiben, um einen von einem Photometer gesendeten Datenstring in eine Tabelle einzutragen. Dabei soll eine Spalte die Messzeit enthalten, die andere die zugehörigen Messwerte. Leider scheitere ich immer am "Laufzeitfehler 1004". Kann mir da vielleicht jemand weiterhelfen?
Ich benutze zum Auslesen der seriellen Schnittstelle die Software "StrokeReader" bzw. das zugehörige ActiveX Steuerelement. Im Anhang findet sich beispielhaft eine mit einem Terminalprogramm aufgezeichnete Datenreihe sowie das Projekt.
Parameter der Verbindung:
- Baud Rate: 19200
- Parität: keine
- Data Bits: 8
- Stop Bits: 1
Hier nochmal der Code:
Visual Basic-Quellcode
- Dim zeile_idx As Integer
- Dim spalte_idx As Integer
- Dim buf As String
- Private Sub StrokeReader1_CommEvent(ByVal Evt As StrokeReaderLib.Event, ByVal data As Variant)
- Select Case Evt
- Case EVT_DISCONNECT '
- MsgBox "Keine Verbindung :(" '
- '
- Case EVT_CONNECT '
- MsgBox "Verbunden" '
- '
- Case EVT_DATA 'Verschiedene Events werden unterschieden
- buf = buf + data
- Umbruch = InStr(buf, Chr(10)) '
- buf = Right(buf, Umbruch) '"Probe n" wird vom String abgeschnitten
- Umbruch = InStr(buf, Chr(10)) '
- buf = Right(buf, Umbruch) '"Abs. Start..." wird vom String abgeschnitten
- Umbruch = InStr(buf, Chr(10)) '
- buf = Right(buf, Umbruch) '"Abs. Ende..." wird vom String abgeschnitten
- Umbruch = InStr(buf, Chr(10)) '
- buf = Right(buf, Umbruch) '"Steigung A/min..." wird vom String abgeschnitten
- Umbruch = InStr(buf, Chr(10)) '
- buf = Right(buf, Umbruch) '"Linearität (r²)..." wird vom String abgeschnitten
- Umbruch = InStr(buf, Chr(10)) '
- buf = Right(buf, Umbruch) '"Ergebnis..." wird vom String abgeschnitten
- Umbruch = InStr(buf, Chr(10)) '
- buf = Right(buf, Umbruch) 'Leerzeile wird vom String abgeschnitten
- Do
- Tabulator = InStr(buf, vbTab) 'der Tabulator zwischen Zeitpunkt und Absorption wird gesucht
- Zeit = Left(buf, Tabulator) 'Der Bereich links vom ersten Tabulator ist die erste Messzeit
- Cells(zeile_idx, spalte_idx) = Zeit 'Zeit wird in Zelle B2 geschrieben
- spalte_idx = spalte_idx + 1 'spalte_idx wird um 1 erhöht
- buf = Right(buf, Tabulator) 'buf ist nun nur noch alles rechts vom ersten Punkt
- Umbruch = InStr(buf, Chr(10)) 'restlicher Datenstring wird nach dem nächsten Zeilenumbruch durchsucht
- Absorption = Left(buf, Umbruch - 1) 'alles links vom Zeilenumbruch ist die Absorption
- Cells(zeile_idx, spalte_idx) = Absorption 'Absorption wird in Zelle C2 geschrieben
- buf = Right(buf, Absorption)
- zeile_idx = zeile_idx + 1 '
- spalte_idx = spalte_idx - 1 'zeile_idx und spalte_idx werden angepasst
- Loop
- End Select
- End Sub
*Topic verschoben*
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()