Hallo zusammen,
ich nutze Autoit zur Kommunikation zwischen meinem PC und einem Arduino-Board.
Das ganze läuft über USB als serielle Verbindung.
Verwendet wird "commg.dll" und "commMG.au".
Bisher gab es hierbei keine Probleme.
Nach dem versuchsweisen Umstieg auf Win10 funktioniert das Ganze nicht mehr,
also das Programm, das unter Win7 läuft funktioniert unter Win10 nicht mehr.
Es werden zwar die angeschlossenen/verfügbaren COM-Ports (USB-Ports) korrekt angezeigt,
aber das Verbinden mit einem/allen dieser Ports geht nicht mehr.
Das Problem dürfte die "commg.dll" sein, da diese nur funktionert, wenn das Programm (autoit-EXE-File) mit einer 32-Bit-Autoit-Version erstellt wird.
Wird ja auch vom Programmierer drauf hingewiesen, dass es nur unter 32 und nicht unter 64-Bit lauffähig ist.
Die Bit-Version des Betriebssystems ist hier scheinbar egal, da mein Win7 ein 64-Bit-System ist.
Das es zwischen Win7 und Win10 Unterschiede gibt, ist klar, aber was ist zu tun damit das Ganze wieder funktioniert?
Eine Suche im Netz hat bisher nix brauchbares ergeben.
Auch meine Versuche mit einer Variante ohne dll nur aus AU3-Dateien (https://www.autoitscript.com/wiki/CommAPI) funktioniert nicht.
Daher nochmal meine Frage: Weis jemand eine Möglichkeit, wie man unter Win10 serielle Port für USB-Bindungen mit Autoit erstellt.
Als Anhang ein kleines Testprogramm mit Aufbau und er Kontrolle für einen seriellen Port.
Über Info und Tip würde ich mich freuen uns schonmal Danke für die Hilfe.
Oliver
#include <CommMG.au3>
$Port1 = _CommListPorts(0); Welche Ports sind ohne Arduino verfügbar.
MsgBox (0,"","Arduino anschließen")
Sleep (5000)
$Port2 = _CommListPorts(0); Welche Ports sind mit Arduino verfügbar.
For $X = $Port2[0] To 1 Step -1 ; Bestimmung des Arduino-Ports.
For $Xx = $Port1[0] To 1 Step -1
If $Port2[$X] = $Port1[$Xx] Then
_ArrayDelete ($Port2, $X)
ExitLoop
EndIf
Next
Next
$Port = StringReplace ($Port2[1], "COM", "")
MsgBox (0,"Arduino-Port",$Port)
$CMPort = $Port ; Port
$CmBoBaud = 115200 ; Baud
$CmboDataBits = 8 ; Data Bits
$CmBoParity = "none" ; Parity
$CmBoStop = 1 ; Stop
$setflow = 2 ; Flow
$sportSetError = ''
$write=-1
_CommSetDllPath("M:\Arduino\USB_Connect_01\commg.dll")
_CommSetPort($CMPort, $sportSetError, $CmBoBaud, $CmboDataBits, $CmBoParity, $CmBoStop, $setflow)
$Channel = _CommPortConnection(); Abfrage des verbundenen Ports.
MsgBox (0,"",$Channel); Kontrolle des verbundenen Ports.
Alles anzeigen