Daten aus dem serial port direkt in Excel tabelle

Gast #517472
Lesenswert?

Hallo Leute,

ich habe ein Problem..... :))

Ich habe mir einen ADXL202 Beschleunigungssensor eingelesen und er gibt 
mir dan sugzesiv die zeiten aus. Jetzt da ich die in einer Array matrix 
gespeichert habe muss ich die mit dem Hyperterminal einlesen und dann 
vom Hyperterminal in einer Textdatei aufzeichnen, die Datei dann in 
Excel implemetieren und aus dem Diagramm machen. Meine Frage ist jetzt, 
ob jemand ne Idee hat wie ich das machen kann das meine Daten direkt in 
eine Excel tabelle gelanden oder direkt in ein Diagramm (noch besser) 
damit ich eine automatische Abarbeitung realisiere.

Ich habe einen 80C535 µC und Arbeite mit dem µVision 2 Paket von Keil.

Wenn jemand mir helfen kann danke ich schon im voraus....

Andy
Gast #517475
Lesenswert?

Die Daten sendest du ja anscheinend jetzt schon über einen UART an den 
PC. Dann kannst du dir in Excel mit VBA ein Makro / Programm (wie man 
das nennen möchte) schreiben, das die Daten direkt in eine Tabelle 
einliest. Über VBA hast du Zugriff auf die serielle Schnittstelle (war 
jedenfalls bei VBA 6 so, danach nix mehr damit gemacht)
Gast #517493
Lesenswert?

Ist ne ewigkeit her, das ich mit VBA was gemacht habe. War noch VBA 6, 
jetzt ist da ja VBA.net drin. Kannst du denn was Basic bzw. Visual 
Basic? Denn dann sollte es eigentlich relativ einfach sein.
Gast #517934
Lesenswert?

Ich weiß, deine Frage war ganz speziell auf excel ausgerichtet und nicht 
nach Alternativen, dennoch würde ich dir Matlab vorschlagen, wenn du 
darauf Zugriff hast (Student, Uni, FH,...)

Gruß
Tom
Gast #517946
Lesenswert?

Excel mit VBA Makros geht ganz gut um mit der UART zu arbeiten.

Die Com-Schnitstelle kannst Du mit einem Commandshell Aufruf 
konfigurieren, zum Beispiel:

RetVal = Shell("mode.com com1 baud=" + br$ + " parity=n data=8 stop=1 
to=on xon=on dtr=on rts=on")

Dann kannst kannst Du die Schnitstelle öffnen, lesen und schreiben, wie 
auf irgend eine andere Datei, nur statt des Dateinamen verwendest Du die 
entsprechende Schnittstellenbezeichnung, zB "Com1", "Com2" oder "LPT" 
etc...

In VBA könnte das in etwa so aussehen:
1
Sub Send_and_Read()
2
  '--------------------------------------------------------
3
  cmnd$ = "Hello World"        'A string to send
4
  '--------------------------------------------------------
5
  Open "COM1" For Binary Access Read Write As #1
6
  cmnd$ = cmnd$ + Chr(13)      'add [CR] to command string
7
  Put #1, , cmnd$              'write string to interface
8
  '--------------------------------------------------------
9
  answer = ""                  'clear response string
10
  char = Input(1, #1)          'get first character
11
  While (answer <> Chr(13))    'loop until [CR]
12
    If (char > Chr(31)) Then
13
      answer = answer + char   'add, if printable char
14
    Else
15
      ' Do what ever you like
16
    End If
17
  Wend
18
  Close #1
19
  '--------------------------------------------------------
20
  Cells(1, 1) = answer        'put response in cell("A1")
21
End Sub
Gast #517949
Lesenswert?

Ups, da hatte es noch Fehler, u.a. hab vergessen den nächsten (bzw die 
nächsten chars) zu lesen:

Sub Send_and_Read()
  '--------------------------------------------------------
  cmnd$ = "Hello World"        'A string to send
  '--------------------------------------------------------
  Open "COM1" For Binary Access Read Write As #1
  cmnd$ = cmnd$ + Chr(13)      'add [CR] to command string
  Put #1, , cmnd$              'write string to interface
  '--------------------------------------------------------
  answer = ""                  'clear response string
  char = Input(1, #1)          'get first character
  While (char <> Chr(13))      'loop until [CR]
    If (char > Chr(31)) Then
      answer = answer + char   'add, if printable char
    Else
      ' Do what ever you like
    End If
    char = Input(1, #1)        'get the next character
  Wend
  Close #1
  '--------------------------------------------------------
  Cells(1, 1) = answer         'put response in cell("A1")
End Sub
Gast #3602627
Lesenswert?

7 Jahre alt, und immer noch super. So einfach.

Das funktioniert bei mir mit Windows 7 und einem alten Excel-Version.
1
    sendVar$ = Worksheets("Sheet1").Range("C26") + Chr(13)
2
    Open "COM1:19200,N,8,1" For Binary Access Read Write As #1 'Open the com port
3
    Put #1, , sendVar$ 'write string to interface
4
    '--------------------------------------------------------
5
    answer = "" 'clear response string
6
    char = "" 'clear character string
7
    While (char <> Chr(13))      'loop until [CR]
8
        char = Input(1, #1)             'get character
9
        If (char > Chr(31)) Then
10
            answer = answer + char   'add, if printable char
11
            'Worksheets("Sheet1").Range("C29") = answer 'OPTIONAL watch cell fill up until carraige return
12
        End If
13
    Wend
14
    Close #1
15
    '--------------------------------------------------------
16
    Worksheets("Sheet1").Range("C27") = answer 'put response in cell

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren