mikrocontroller.net

Forum: PC-Programmierung COM-Port Auslesen und an EXCEL-Datei senden


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Manfred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich suche ein Programm oder einen EXCEL-Skript mit welchem ich Daten die 
über den COM-Port gesendet werden in EXCEL einlesen lassen kann. Hat 
jemand zufällig ein fertiges Programm für so etwas ?


MfG

Manfred

: Verschoben durch Moderator
Autor: Prog R. (daniel_v)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Manfred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank,

ich werde mich gleich heute Abend nach der Abreit hinsetzen und es 
ausprobieren :)

Autor: Horst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was kommen da für Daten, dass du das unbedingt in Excel packen musst?

Klingt eher wieder wie ein Fall: "Ich kenne nur Excel für Daten"

Autor: C. M. (chrisso1986)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
16Bit Zahlenwerte die ich in EXCEl Abspeichern möchte

Autor: C. M. (chrisso1986)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also vielen Dank, hat alles super geklappt vll. kann mir jemand noch 
eine Frage zu dem Quellcode beantworten.

Ich würde gerne wissen, wo man in dem Quellcode die Zelle festlegen kann 
wo ich die Dateien gerne abgespeichern möchte und ob es auch möglich ist
immer nur den vorhandenen Wert durch den aktuellen zu ersetzen. Jetzt 
werden die daten in der ersten Spalte abwärts abgespeichert.

Vielen Dank schon mal.

MfG

------------------------------------------------------------------------ 
---
------------------------------------------------------------------------ 
---

Dim buf As String 'Buffer for incoming serial data
Dim cell_idx As Integer 'The row number cell to store a received barcode

Private Sub StrokeReader1_CommEvent(ByVal Evt As StrokeReaderLib.Event, 
_
                                    ByVal data As Variant)
  Select Case Evt  'Can be EVT_DISCONNECT or EVT_DATA or EVT_SERIALEVENT
    Case EVT_DISCONNECT 'if USB serial port adapter is just disconnected 
from the PC
        MsgBox "Serial port converter disconnected"
    Case EVT_CONNECT
        MsgBox "Connected" 'if RS232 or RS485 port adapter is just 
connected to USB bus

    Case EVT_DATA  'Incoming serial data
        buf = buf + StrokeReader1.Read(Text) 'Incoming serial data 
accumulated in buf
        Do
           LF = InStr(buf, Chr(10)) 'Most of scanners send ASCII <LF> 
after each barcode

           If LF = 0 Then Exit Do 'Waiting for ASCII <LF> to be received

           s = Left(buf, LF - 1) 'Copy the data before <LF> code as the 
barcode text
           s = Replace(s, Chr(13), "") 'Some scanners could send 
<CR><LF>. Remove <CR> if present

           buf = Right(buf, Len(buf) - LF) 'Cut the parsed data from the 
buffer
           'This is useful if the external hardware sends multiple 
barcodes in a time.

           cell_idx = cell_idx + 1 'increment the row number of cell 
where the barcode will be stored
          Cells(cell_idx, 1) = s
         Loop
  End Select
End Sub

Autor: Prog R. (daniel_v)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
C. M. schrieb:
> Also vielen Dank, hat alles super geklappt vll. kann mir jemand noch
> eine Frage zu dem Quellcode beantworten.
>
> Ich würde gerne wissen, wo man in dem Quellcode die Zelle festlegen kann
> wo ich die Dateien gerne abgespeichern möchte

  cell_idx = cell_idx + 1 'increment the row number of cell
  Cells(cell_idx, 1) = s

Du kannst die Variable cell_index, die hier bei jedem neuen, empfangenen 
Datenwort um 1 erhöht wird, schon vorher auf einen Wert initialisieren, 
bzw. einfach einmal ein Offset dazuaddieren (achtung, nicht immer :) )
cell_idx und 1, also die beiden Argumente in Cells (x,y), geben Reihe 
und Spalte an.

> und ob es auch möglich ist
> immer nur den vorhandenen Wert durch den aktuellen zu ersetzen. Jetzt
> werden die daten in der ersten Spalte abwärts abgespeichert.

Klar, indem du einfach Cells(x, y) = s schreibst, wobei x und y 
konstante Zahlen sind und wieder Reihe und Spalte darstellen. z.B. 
Cells(5,3) = s

> Vielen Dank schon mal.

Kein Problem.

: Bearbeitet durch User
Autor: hj (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
test

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.