PDA

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