mikrocontroller.net

Forum: PC-Programmierung Serielle Schnittstelle Excel


Autor: Russelduff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich will einen AVR benutzen, um zwecks Reflow löten einen Pizzaofen zu 
steuern. Dazu benutze ich einen Pro Micro (Arduino Leonardo). Er misst 
die Temperatur und steuert das Heizrelais. Die Hardware funktioniert 
soweit.

Per serieller Schnittstelle soll das ganze nun vom PC aus gesteuert 
werden. Auch dies funktioniert mit dem seriellen Monitor von der Arduino 
IDE. Nun wollte ich die ganzen Eingaben mit einem Excel Sheet 
realisieren. Die RS232 Kommunikation sollte daher VBA übernehmen.

Da liegt nun mein Problem. Ich habe ein VBA Skript gefunden und dieses 
würde wunderbar funktionieren. Allerdings braucht der Mikrocontroller 
ein high auf DTR und RTS. Leider vermute ich das dies mit meinem Skript 
nicht funktioniert.

Weiterhin vermute ich das eine andere Methode diese Funktion bietet: 
MSComm Modul mit ActiveX. Ich habe gestern den ganzen Tag damit 
verschissen dieses MSComm zu installieren, aber ich bekomme es nicht 
hin.

Hat wer eine Idee was ich noch tun könnte?

Hier noch der Code ohne MSComm:
' Escape Functions
Const SETRTS = 3                   ' Set RTS high
Const CLRRTS = 4                   ' Set RTS low
Const SETDTR = 5                   ' Set DTR high
Const CLRDTR = 6                   ' Set DTR low
Const SETBREAK = 8                 ' Set the device break line.
Const CLRBREAK = 9                 ' Clear the device break line.
Dim lRetVal, i As Long
Dim Ser As Comm
Dim Temperature As Integer

    
Public Sub OvenCom()
    Set Ser = New Comm
    Ser.CommPort = Range("C2").Value
    Ser.Settings = "9600,N,8,1"
    Ser.Handshaking = None_Handshake
    Ser.TimeOut_ms = 1000
    Ser.EOL_Terminator = "\n"
    Ser.EOL_On = False
    Ser.PortOpen = True
    If Not Ser.PortOpen Then
        temp = MsgBox("Com port is not available", vbOKCancel, "Error")
        Stop
    End If
    
    Ser.WriteLine = "GetTemperature"
    Temperature = Ser.ReadLine
    
    Ser.PortOpen = False
    Set Ser = Nothing
End Sub


: Verschoben durch Moderator
Autor: Typ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Russelduff schrieb:
> Nun wollte ich die ganzen Eingaben mit einem Excel Sheet
> realisieren.

Ist das nicht etwas übertrieben? Wieviele 1000 Temperaturpunkte brauchst 
du denn?

Bring dem Arduino doch lieber bei, ein paar Profile über den seriellen 
Monitor im EEPROM ablegen und von da ausführen zu können.

Autor: Max G. (l0wside) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Braucht der µC einen Statuswechsel auf DTR und CTS, oder müssen die 
einfach nur auf High liegen? Letzteres ließe sich doch einfach mit einer 
Lötbrücke erschlagen.

Autor: Stefan Us (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Allerdings braucht der Mikrocontroller ein high auf DTR und RTS.

Das ergibt sich von ganz alleine, wenn du den seriellen Port öffnest. 
Denn das ist die Standardvorgabe von Windows.

Abgesehen davon könntest du die Leitungen beim µC abtrennen und fest an 
die Spannungsversorgung löten. Achtung: Dort sind die Signale meisten 
invertiert, also bei LOW Pegel aktiv.

Autor: Russelduff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also mir reichts, das mit excel funtioniert so nicht. Ich mach mir jetz 
ein kleines Programm in C#.

Autor: X4U (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Typ schrieb:
> Ist das nicht etwas übertrieben? Wieviele 1000 Temperaturpunkte brauchst
> du denn?

Würde ich auch so machen, wg. der Grafik und Flexibilität. Excel ist 
super für die real time Anzeige und  Darstellung und du kannst das 
jederzeit anpassen.

Hab das bei einigen Loggern für Kunden gemacht. Die sind begeistert weil 
es sehr gut funktioniert und Sie in ihren gewohnten Programmen arbeiten 
können.


Aber wi immer in der Microsoft Welt ....:
Das hier hat mir viel Zeit und Ärger gespart, ist aber auch sehr 
mächtig:

" This VB module is a collection of routines to perform serial port I/O 
without using the Microsoft Comm Control component.  This module uses 
the Windows API to perform the overlapped I/O operations necessary for 
serial communications."

http://www.thescarms.com/VBasic/commio.aspx

Autor: X4U (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Russelduff schrieb:
> lso mir reichts, das mit excel funtioniert so nicht.

Excel und seriell funzt auch bei mir nicht, die Lösung s. meine letzten 
Beitrag. Lohnt sich aber nur wenn man mehr damit machen will.

Aber in einem Spreadsheet das Temperaturprofil eingeben, es gleich 
grafisch zu sehen (in beliebigen Formaten), Soll/Ist in realtime 
darstellen,  verschiedene Profile, beliebig zu speichern, die 
Dokumentation mit drin, gleich rechnen zu können (z.B Wärmemenge, °C 
delta, änderung durch Aussentemperatur...  und entsprechende Anpassung) 
und alles ohne auch nur eine Zeile zu proggen.

Das kann sich lohnen und wie.

Autor: Russelduff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
X4U schrieb:
> Das kann sich lohnen und wie.

Das glaube ich. Die serielle Schnittstelle in Excel hätte ich schon 
öfter brauchen können. Sozusagen Matlab light für den armen Mann. Naja 
jetzt hab ich mit C# schon angefangen...

Autor: X4U (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Russelduff schrieb:
> X4U schrieb:
>> Das kann sich lohnen und wie.
>
> Das glaube ich. Die serielle Schnittstelle in Excel hätte ich schon
> öfter brauchen können. Sozusagen Matlab light für den armen Mann.

Das funzt gut sogar realtime (wenn diese nicht > 0,1s ist ;-) ).

> jetzt hab ich mit C# schon angefangen...

Viel Erfolg.

Autor: X4U (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt hier übrigens eine fertige Anzeigesoftware via seriell die auch 
ein wenig Control kann.

Beitrag "Daten von der seriellen Schnittstelle einfach darstellen"

Autor: Freddy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde empfehlen die Schnittstelle per DLL anzusprechen. Das sollte 
auch in VBA gehen.
Kann man recht einfach mit C++ und Boost oder QT erstellen. Da hast dann 
direkt Code für Seriell und Code für CircularBuffer.
Ich hatte mal eine Anwendung in LabView mit serieller Schnittstelle. 
Allerdings empfand ich die Stringbearbeitung in LabView relativ 
unübersichtlich. Vor allem wenn man den String zuerst dreht, dann 
extrahiert, dann ..., dann ... Klar bekommt man per SubVI das ganze auch 
ohne Spagetti-Code hin.
Allerdings waren es in C-Code 20 Zeilen und das dann per DLL einbinden.

Autor: X4U (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Freddy schrieb:
> Ich würde empfehlen die Schnittstelle per DLL anzusprechen. Das sollte
> auch in VBA gehen.

Freddy, Sorry falls das eine triviale Frage ist. Aber wo ist der 
Unterschied in VBA via API oder DLL auf die serielle zuzugreifen? .

Autor: Russelduff (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
X4U schrieb:
> Viel Erfolg.

Jo, wird schön langsam.

Autor: Sebastian L. (sebastian_l72)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Russelduff schrieb:
> Ich will einen AVR benutzen, um zwecks Reflow löten einen Pizzaofen zu
> steuern. Dazu benutze ich einen Pro Micro (Arduino Leonardo). Er misst
> die Temperatur und steuert das Heizrelais. Die Hardware funktioniert
> soweit.
Wie stabil regelt denn dein 2 Punkt Regler die pt2 Strecke "Pizzaofen"?
Stabil genug?
nicht das ich der Meister des Reflow bin, aber 2punkt Regler und PT2 
Strecken sind ja normalerweise hübsche Schaukeln.

Autor: Russelduff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das weis ich noch nicht. Da bin ich auch schon gespannt. Die Hardware 
steht zwar schon soweit, allerdings muss ich das ganze Zeug noch in den 
Pizzaofen reinbaun und ich hab im Moment keine Bohrmaschine da.

Autor: Russelduff (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier mein zweiter Versuch, falls es wen interessiert. Das funktioniert 
ja besser als ich dachte, ich bin begeistert :-D

Ein Problem ist noch wenn das Heizerrelais anzieht, dann springt die 
Temperatur um 10 °C hoch. Vermutlich bricht die Versorgungsspannung ein. 
Aber das dürfte leicht in den Griff zu bekommen sein.

Weis jemand eine Bezugsquelle für gute Lötpaste? Conrad vertraue ich da 
nicht.

Autor: Patrick H. (hopa)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Russelduff schrieb:
> X4U schrieb:
>> Das kann sich lohnen und wie.
>
> Das glaube ich. Die serielle Schnittstelle in Excel hätte ich schon
> öfter brauchen können. Sozusagen Matlab light für den armen Mann. Naja
> jetzt hab ich mit C# schon angefangen...

Du kannst ja mal Scilab ausprobieren.
Ist Open source und kann fast so viel wie Matlab, wenn man etwas 
Geschick mitbringt.

Autor: c-hater (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Russelduff schrieb:

> Weiterhin vermute ich das eine andere Methode diese Funktion bietet:
> MSComm Modul mit ActiveX. Ich habe gestern den ganzen Tag damit
> verschissen dieses MSComm zu installieren, aber ich bekomme es nicht
> hin.

Wo ist das Problem? Dazu sind doch nur drei absolut triviale Schritte 
nötig.

1) Besorge mscomm.ocx. Das ist der schwierigste Schritt, denn dieses 
Active-X-Control gehört nicht zu MSOffice, sondern zu den alten 
VB-Versionen bis VB6. Theoretisch ist also die Nutzung illegal, solange 
du nicht so eine olle VB-Version besitzt...

2) Kopiere die Datei nach c:\windows\system32

3) öffne eine Instanz von cmd.exe mit Adminrechten. Dann eintippen:
regsvr32 c:\windows\system32\mscomm.ocx

Wo ist jetzt das Problem, mit dem man einen ganzen Tag verbringen 
könnte?

Autor: Russelduff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
c-hater schrieb:
> Wo ist jetzt das Problem, mit dem man einen ganzen Tag verbringen
> könnte?

Weil man auf Mscomm erstmal kommen muss?

Und weil ich die Schritte, die du aufgeführt hast schon erfolgreich 
ausgeführt hab. Danach kam bei mir nur eine Meldung von Excel dass das 
Modul nicht Vertrauenswürdig oder so sei. Daraufhin hab ich mir ein Tool 
runtergeladen, mit dem man ActiveX Module en- und disablen kann. Hat 
leider nix gebracht.

Autor: Georg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Russelduff schrieb:
> mit dem man ActiveX Module en- und disablen kann

Das macht sie aber nicht vertrauenswürdig.

Georg

Autor: c-hater (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Russelduff schrieb:

> Danach kam bei mir nur eine Meldung von Excel dass das
> Modul nicht Vertrauenswürdig oder so sei.

Dann war es wohl nicht das Original, sondern irgendwas, was nur genauso 
heißt und wer weiß was tut...

Das Original ist nämlich von Microsoft signiert und deswegen hat Excel 
auch kein Poblem damit...

Oder anders ausgedrückt: mit an Sicherheit grenzender Wahrscheinlichkeit 
hast du dir da einen Downloader für einen Trojaner installiert. Du hast 
Glück, dass Excel in neueren Versionen so mäklig ist, sonst wäre der 
Downloader aktiv geworden und du hättest dein Kiste neu installieren 
können, um die Malware wieder loszuwerden, die er nachlädt...

Du solltest also keinesfalls versuchen, das Control mit einer anderen, 
weniger mäkligen Anwendung zu benutzen, sondern schleunigst wieder 
deinstallieren.

Auch wieder nur zwei einfach Schritte:

1)
regsvr32 /u c:\windows\system32\mscomm.ocx
2)
del c:\windows\system32\mscomm.ocx

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.

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