Forum: PC-Programmierung Serielle Schnittstelle Excel


von Russelduff (Gast)


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:
1
' Escape Functions
2
Const SETRTS = 3                   ' Set RTS high
3
Const CLRRTS = 4                   ' Set RTS low
4
Const SETDTR = 5                   ' Set DTR high
5
Const CLRDTR = 6                   ' Set DTR low
6
Const SETBREAK = 8                 ' Set the device break line.
7
Const CLRBREAK = 9                 ' Clear the device break line.
8
Dim lRetVal, i As Long
9
Dim Ser As Comm
10
Dim Temperature As Integer
11
12
    
13
Public Sub OvenCom()
14
    Set Ser = New Comm
15
    Ser.CommPort = Range("C2").Value
16
    Ser.Settings = "9600,N,8,1"
17
    Ser.Handshaking = None_Handshake
18
    Ser.TimeOut_ms = 1000
19
    Ser.EOL_Terminator = "\n"
20
    Ser.EOL_On = False
21
    Ser.PortOpen = True
22
    If Not Ser.PortOpen Then
23
        temp = MsgBox("Com port is not available", vbOKCancel, "Error")
24
        Stop
25
    End If
26
    
27
    Ser.WriteLine = "GetTemperature"
28
    Temperature = Ser.ReadLine
29
    
30
    Ser.PortOpen = False
31
    Set Ser = Nothing
32
End Sub

: Verschoben durch User
von Typ (Gast)


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.

von Max G. (l0wside) Benutzerseite


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.

von Stefan F. (Gast)


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.

von Russelduff (Gast)


Lesenswert?

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

von X4U (Gast)


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

von X4U (Gast)


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.

von Russelduff (Gast)


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...

von X4U (Gast)


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.

von X4U (Gast)


Lesenswert?

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

Beitrag "Daten von der seriellen Schnittstelle einfach darstellen"

von Freddy (Gast)


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.

von X4U (Gast)


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? .

von Russelduff (Gast)


Angehängte Dateien:

Lesenswert?

X4U schrieb:
> Viel Erfolg.

Jo, wird schön langsam.

von Sebastian L. (sebastian_l72)


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.

von Russelduff (Gast)


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.

von Russelduff (Gast)


Angehängte Dateien:

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.

von Patrick W. (hopa)


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.

von c-hater (Gast)


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?

von Russelduff (Gast)


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.

von Georg (Gast)


Lesenswert?

Russelduff schrieb:
> mit dem man ActiveX Module en- und disablen kann

Das macht sie aber nicht vertrauenswürdig.

Georg

von c-hater (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.