Ich würde gerne folgenden VB-Code in AutoIt übersetzen, allerdings komme ich selbst nicht sehr weit, da ich in Sachen DLLs ansprechen eigentlich keine Ahnung habe. Offensichtlich wird hier die Datei CommandsPD4I.dll benutzt, aber ich kriegs nicht hin diese in AutoIt richtig einzubauen.
Spoiler anzeigen
Public Class Form1
Dim MotorCommands As CommandsPD4I.ComMotorCommands
Dim MotorAdresse As Integer
Dim retVal_Bool As Boolean
Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MotorCommands = New CommandsPD4I.ComMotorCommands()
MotorCommands.SelectedPort = TextBox1.Text
MotorCommands.Baudrate = TextBox2.Text
MotorAdresse = MotorCommands.GetNewMotorAddress()
'Set the ID of the Motorcontroller
MotorAdresse = 1
MotorCommands.SetAddress(MotorAdresse)
'1 entspricht rechts
MotorCommands.SetNewDirection(1)
'Set Traveldistance to 800 steps
MotorCommands.SetNewSteps(800)
If retVal_Bool = False Then
MsgBox("Fehler")
End If
' 1 entspricht dem Positionmode
retVal_Bool = MotorCommands.SetNewOperationMode(1)
If MotorCommands.ErrorFlag Then
MsgBox(MotorCommands.ErrorMessageString)
End If
MotorCommands.StartNewTravelProfile()
End Sub
Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
MotorCommands = New CommandsPD4I.ComMotorCommands()
MotorCommands.SelectedPort = TextBox1.Text
MotorCommands.Baudrate = TextBox2.Text
MotorAdresse = MotorCommands.GetNewMotorAddress()
'Set the ID of the Motorcontroller
MotorAdresse = 1
MotorCommands.SetAddress(MotorAdresse)
'0 entspricht links
MotorCommands.SetNewDirection(0)
'Set Traveldistance to 800 steps
MotorCommands.SetNewSteps(800)
If retVal_Bool = False Then
MsgBox("Fehler")
End If
' 1 entspricht dem Positionmode
retVal_Bool = MotorCommands.SetNewOperationMode(1)
If MotorCommands.ErrorFlag Then
MsgBox(MotorCommands.ErrorMessageString)
End If
MotorCommands.StartNewTravelProfile()
End Sub
Private Sub button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
MotorCommands = New CommandsPD4I.ComMotorCommands()
MotorCommands.SelectedPort = TextBox1.Text
MotorCommands.Baudrate = TextBox2.Text
MotorAdresse = MotorCommands.GetNewMotorAddress()
'Set the ID of the Motorcontroller
MotorAdresse = 1
MotorCommands.SetAddress(MotorAdresse)
MotorCommands.StopTravelProfile()
End Sub
End Class
Alles anzeigen
Alternativ habe ich auch versucht die Motorsteuerung mit ASCII-Kommandos anzusprechen. Die Kommunikation mit dem ComPort funktioniert zwar, aber wenn ich Kommandos (aus dem Programmierhandbuch der Steuerung) übertragen will passiert nichts.
Spoiler anzeigen
#include 'CommMG.au3'
[/autoit] [autoit][/autoit] [autoit]$MsComm = ObjCreate("MSCOMMLib.MsComm.1")
[/autoit] [autoit][/autoit] [autoit]$MsComm.CommPort = 4
$MsComm.Settings = "19200,N,8,1"
$MsComm.Handshaking = 0
$MsComm.InBufferSize = 1024
$MsComm.InputLen = 1
$MsComm.PortOpen = 1
[/autoit] [autoit][/autoit] [autoit]$MsComm.OutBufferCount = 0
$MsComm.InBufferCount = 0
$startset1 = "#1A\r"
[/autoit] [autoit][/autoit] [autoit]If $MsComm.PortOpen = True Then
$MsComm.Output = $startset1
EndIf
$MsComm.InputLen = 0