Archiv verlassen und diese Seite im Standarddesign anzeigen : VB-Programm über Kommandozeile steuern
Stormtrooper
2008-02-16, 12:12:25
Hallo,
ich hab ein VB Programm zum steuern einer Relaiskarte.
Funktioniert auch alles soweit .... nun möchte ich aber das ich das Programm auch im Hintergrund steuern kann über Parameter.
Also meinetetwegen c:\programm /11111111 /on ...
was dann bedeuten würde das alle Relais auf on gesetzt werden.
Wie kann man sowas realisieren?
Kinman
2008-02-16, 12:35:35
Steuern während das Programm läuft, oder das Programm mittels Kommandozeile + Parameter so starten, dass es das Gewünschte ausführt?
Für zweiteres siehe hier: http://www.vbarchiv.net/archiv/tipp_details.php?pid=960
mfg Kinman
Stormtrooper
2008-02-16, 13:05:49
also das funktioniert schonmal gut,
aber ich will ja mit meinem parameter nicht einen text in ein listfeld schreiben sondern ein kommando ausführen.
Kinman
2008-02-16, 13:19:41
Wo ist der Unterschied?
Du überprüfst den Wert und je nach dem was drinsteht führst Du deine Fuktionen aus.
mfg Kinman
Stormtrooper
2008-02-16, 13:45:36
Public Function cmdParser(ByRef ParseArray As Variant, _
Optional ByVal cmdSeparator As String = " ") As Long
Dim tmpstr As String
Dim tmpArray() As String
Dim x1 As Long
Dim x2 As Long
' Funktion initialisieren
cmdParser = 0
If Command$ = "" Then Exit Function
' Command$ ermitteln und über die Split-Funktion
' in das tmpArray übertragen. Dabei wird geprüft,
' ob der Command$ in Anführungszeichen steht. Wenn
' ja, dann Anführungszeichen löschen.
tmpstr = Command$
If Left(Command$, 1) = Chr(34) Then
If Right$(Command$, 1) = Chr(34) Then
tmpstr = Mid$(Command$, 2, Len(Command$) - 2)
End If
End If
tmpArray = Split(tmpstr, cmdSeparator)
' ParseArray initialisieren
x1 = 0
ReDim ParseArray(x1)
' Schleife über alle Einträge aus dem tmpArray
For x2 = LBound(tmpArray) To UBound(tmpArray)
' ParseArray normalisieren
If tmpArray(x2) <> "" Then
ParseArray(x1) = Trim(tmpArray(x2))
x1 = x1 + 1
ReDim Preserve ParseArray(x1)
End If
Next x2
' Letztes Redim Preserve zurücksetzen
If x1 > 0 Then
ReDim Preserve ParseArray(x1 - 1)
End If
' Rückgabewert setzen
cmdParser = x1
End Function
Private Sub Form_Load()
Dim x As Long
Dim cmdParseList() As String
If cmdParser(cmdParseList, "/") > 0 Then
For x = LBound(cmdParseList) To UBound(cmdParseList)
List1.AddItem cmdParseList(x)
Next x
End If
End Sub
Naja ... sorry, hab nicht viel ahnung ...
wo muß ich denn jetzt reinschreiben das er das nicht in die listbox schreibt sondern das relais steuert?
Der Code ist im übrigen für die Relaiskarte
Dim messagestring As String 'will contain all messages to transmit
Dim charcounter As Integer 'will keep track of the position in messagestring
Dim address As Integer
Dim factor As Integer
Dim port As String 'keeps serial port #
Private Sub Combo1_Change()
If comm.PortOpen = True Then comm.PortOpen = False
port = Combo1.Text
comm.CommPort = Val(Combo1)
comm.Handshaking = None
comm.Settings = "2400,N,8,1"
comm.OutBufferSize = 4096
comm.InputLen = 0
comm.RThreshold = 1
comm.SThreshold = 1
comm.DTREnable = True
comm.PortOpen = True
End Sub
Private Sub Combo1_Click()
If comm.PortOpen = True Then comm.PortOpen = False
port = Combo1.Text
comm.CommPort = Val(Combo1)
comm.Handshaking = None
comm.Settings = "2400,N,8,1"
comm.OutBufferSize = 4096
comm.InputLen = 0
comm.RThreshold = 1
comm.SThreshold = 1
comm.DTREnable = True
comm.PortOpen = True
End Sub
Private Sub Combo2_Change()
address = Val(Combo2.Text)
End Sub
Private Sub Combo2_Click()
address = Val(Combo2.Text)
End Sub
Private Sub Command1_Click()
checksum = (255 - ((((13 + address + Asc("S") + Asc("1")) / 256) - Int((13 + address + Asc("S") + Asc("1")) / 256)) * 256)) + 1
messagestring = Chr$(13) & Chr$(address) & "S1" & Chr$(checksum)
messagestring = messagestring & messagestring
messagestring = messagestring & messagestring
comm.Output = messagestring
End Sub
Private Sub Command10_Click()
checksum = (255 - ((((13 + address + Asc("S") + Asc("3")) / 256) - Int((13 + address + Asc("S") + Asc("3")) / 256)) * 256)) + 1
messagestring = Chr$(13) & Chr$(address) & "S3" & Chr$(checksum)
messagestring = messagestring & messagestring
messagestring = messagestring & messagestring
comm.Output = messagestring
End Sub
Private Sub Command11_Click()
checksum = (255 - ((((13 + address + Asc("C") + Asc("3")) / 256) - Int((13 + address + Asc("C") + Asc("3")) / 256)) * 256)) + 1
messagestring = Chr$(13) & Chr$(address) & "C3" & Chr$(checksum)
messagestring = messagestring & messagestring
messagestring = messagestring & messagestring
comm.Output = messagestring
End Sub
Private Sub Command12_Click()
checksum = (255 - ((((13 + address + Asc("S") + Asc("4")) / 256) - Int((13 + address + Asc("S") + Asc("4")) / 256)) * 256)) + 1
messagestring = Chr$(13) & Chr$(address) & "S4" & Chr$(checksum)
messagestring = messagestring & messagestring
messagestring = messagestring & messagestring
comm.Output = messagestring
End Sub
Private Sub Command13_Click()
checksum = (255 - ((((13 + address + Asc("C") + Asc("4")) / 256) - Int((13 + address + Asc("C") + Asc("4")) / 256)) * 256)) + 1
messagestring = Chr$(13) & Chr$(address) & "C4" & Chr$(checksum)
messagestring = messagestring & messagestring
messagestring = messagestring & messagestring
comm.Output = messagestring
End Sub
Private Sub Command14_Click()
checksum = (255 - ((((13 + address + Asc("S") + Asc("5")) / 256) - Int((13 + address + Asc("S") + Asc("5")) / 256)) * 256)) + 1
messagestring = Chr$(13) & Chr$(address) & "S5" & Chr$(checksum)
messagestring = messagestring & messagestring
messagestring = messagestring & messagestring
comm.Output = messagestring
End Sub
Private Sub Command15_Click()
checksum = (255 - ((((13 + address + Asc("C") + Asc("5")) / 256) - Int((13 + address + Asc("C") + Asc("5")) / 256)) * 256)) + 1
messagestring = Chr$(13) & Chr$(address) & "C5" & Chr$(checksum)
messagestring = messagestring & messagestring
messagestring = messagestring & messagestring
comm.Output = messagestring
End Sub
Private Sub Command16_Click()
checksum = (255 - ((((13 + address + Asc("S") + Asc("6")) / 256) - Int((13 + address + Asc("S") + Asc("6")) / 256)) * 256)) + 1
messagestring = Chr$(13) & Chr$(address) & "S6" & Chr$(checksum)
messagestring = messagestring & messagestring
messagestring = messagestring & messagestring
comm.Output = messagestring
End Sub
Private Sub Command17_Click()
checksum = (255 - ((((13 + address + Asc("C") + Asc("6")) / 256) - Int((13 + address + Asc("C") + Asc("6")) / 256)) * 256)) + 1
messagestring = Chr$(13) & Chr$(address) & "C6" & Chr$(checksum)
messagestring = messagestring & messagestring
messagestring = messagestring & messagestring
comm.Output = messagestring
End Sub
Private Sub Command18_Click()
checksum = (255 - ((((13 + address + Asc("S") + Asc("7")) / 256) - Int((13 + address + Asc("S") + Asc("7")) / 256)) * 256)) + 1
messagestring = Chr$(13) & Chr$(address) & "S7" & Chr$(checksum)
messagestring = messagestring & messagestring
messagestring = messagestring & messagestring
comm.Output = messagestring
End Sub
Private Sub Command19_Click()
checksum = (255 - ((((13 + address + Asc("C") + Asc("7")) / 256) - Int((13 + address + Asc("C") + Asc("7")) / 256)) * 256)) + 1
messagestring = Chr$(13) & Chr$(address) & "C7" & Chr$(checksum)
messagestring = messagestring & messagestring
messagestring = messagestring & messagestring
comm.Output = messagestring
End Sub
Private Sub Command2_Click()
checksum = (255 - ((((13 + address + Asc("C") + Asc("1")) / 256) - Int((13 + address + Asc("C") + Asc("1")) / 256)) * 256)) + 1
messagestring = Chr$(13) & Chr$(address) & "C1" & Chr$(checksum)
messagestring = messagestring & messagestring
messagestring = messagestring & messagestring
comm.Output = messagestring
End Sub
Private Sub Command20_Click()
checksum = (255 - ((((13 + address + Asc("S") + Asc("8")) / 256) - Int((13 + address + Asc("S") + Asc("8")) / 256)) * 256)) + 1
messagestring = Chr$(13) & Chr$(address) & "S8" & Chr$(checksum)
messagestring = messagestring & messagestring
messagestring = messagestring & messagestring
comm.Output = messagestring
End Sub
Private Sub Command21_Click()
checksum = (255 - ((((13 + address + Asc("C") + Asc("8")) / 256) - Int((13 + address + Asc("C") + Asc("8")) / 256)) * 256)) + 1
messagestring = Chr$(13) & Chr$(address) & "C8" & Chr$(checksum)
messagestring = messagestring & messagestring
messagestring = messagestring & messagestring
comm.Output = messagestring
End Sub
Private Sub Command24_Click(Index As Integer)
Command5.SetFocus
Timer2.Enabled = False
End Sub
Private Sub Command3_Click()
checksum = (255 - ((((13 + address + Asc("S") + Asc("9")) / 256) - Int((13 + address + Asc("S") + Asc("9")) / 256)) * 256)) + 1
messagestring = Chr$(13) & Chr$(address) & "S9" & Chr$(checksum)
messagestring = messagestring & messagestring
messagestring = messagestring & messagestring
comm.Output = messagestring
End Sub
Private Sub Command4_Click()
checksum = (255 - ((((13 + address + Asc("C") + Asc("9")) / 256) - Int((13 + address + Asc("C") + Asc("9")) / 256)) * 256)) + 1
messagestring = Chr$(13) & Chr$(address) & "C9" & Chr$(checksum)
messagestring = messagestring & messagestring
messagestring = messagestring & messagestring
comm.Output = messagestring
End Sub
Private Sub Command5_Click()
checksum = (255 - ((((13 + address + Asc("E") + Asc("1")) / 256) - Int((13 + address + Asc("E") + Asc("1")) / 256)) * 256)) + 1
messagestring = Chr$(13) & Chr$(address) & "E1" & Chr$(checksum)
messagestring = messagestring & messagestring
messagestring = messagestring & messagestring
comm.Output = messagestring
End Sub
Private Sub Command6_Click()
checksum = (255 - ((((13 + address + Asc("D") + Asc("1")) / 256) - Int((13 + address + Asc("D") + Asc("1")) / 256)) * 256)) + 1
messagestring = Chr$(13) & Chr$(address) & "D1" & Chr$(checksum)
messagestring = messagestring & messagestring
messagestring = messagestring & messagestring
comm.Output = messagestring
End Sub
Private Sub Command7_Click()
checksum = (255 - ((((13 + address + Asc("A") + Val(Combo3.Text)) / 256) - Int((13 + address + Asc("A") + Val(Combo3.Text)) / 256)) * 256)) + 1
messagestring = Chr$(13) & Chr$(address) & "A" & Chr$(Val(Combo3.Text)) & Chr$(checksum)
messagestring = messagestring & messagestring
messagestring = messagestring & messagestring
comm.Output = messagestring
Combo2.Text = Combo3.Text
End Sub
Private Sub Command8_Click()
checksum = (255 - ((((13 + address + Asc("S") + Asc("2")) / 256) - Int((13 + address + Asc("S") + Asc("2")) / 256)) * 256)) + 1
messagestring = Chr$(13) & Chr$(address) & "S2" & Chr$(checksum)
messagestring = messagestring & messagestring
messagestring = messagestring & messagestring
comm.Output = messagestring
End Sub
Private Sub Command9_Click()
checksum = (255 - ((((13 + address + Asc("C") + Asc("2")) / 256) - Int((13 + address + Asc("C") + Asc("2")) / 256)) * 256)) + 1
messagestring = Chr$(13) & Chr$(address) & "C2" & Chr$(checksum)
messagestring = messagestring & messagestring
messagestring = messagestring & messagestring
comm.Output = messagestring
End Sub
Private Sub Form_Load()
address = 1
For t = 1 To 255
Combo2.AddItem (Str$(t))
Combo3.AddItem (Str$(t))
Next t
Combo2.Text = "1"
Timer1.Enabled = False
On Error GoTo no_port
flag = True
comm.CommPort = "1"
comm.PortOpen = True
Combo1.AddItem ("1")
comm.PortOpen = False
retry_port:
flag = False
comm.CommPort = "2"
comm.PortOpen = True
Combo1.AddItem ("2")
comm.PortOpen = False
Combo1.Text = Combo1.List(0)
Exit Sub
no_port:
If flag = True Then GoTo retry_port
Combo1.Text = Combo1.List(0)
End Sub
Private Sub Form_Terminate()
comm.DTREnable = False
If comm.PortOpen = True Then comm.PortOpen = False
End Sub
Private Sub Timer1_Timer()
tekst = Mid$(messagestring, charcounter, 1)
If tekst = "$" Then tekst = Chr$(11)
comm.Output = tekst
charcounter = charcounter + 1
If charcounter = Len(messagestring) + 1 Then Timer1.Enabled = False
End Sub
Private Sub Timer2_Timer()
comm.Output = messagestring
End Sub
Kinman
2008-02-16, 16:45:33
Ich hatte eigentlich nicht gedacht, dass Du den gesamten Tipp kopierst, sondern eher dass du Dich mit dem Command$ vertraut machst.
Ich habe leider schon über 2 Jahre nicht mehr mit VB programmiert und VS6 nicht mehr installiert, darum kann ich Dir auch nicht besser helfen.
mfg Kinman
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.