fb:porticula NoPaste
Relaiskarte 4
Uploader: | Sebastian |
Datum/Zeit: | 08.09.2013 19:00:28 |
'Verwendung ausschliesslich auf eigene Gefahr!
'Der Autor des Code-Beispiels uebernimmt keinerlei Gewaehrleistung oder Haftung!
Const COMEinstellungen = "COM3:4800,N,8,1"
If (Open Com ( COMEinstellungen For Binary As #1 ) <> 0 ) Then
Print "Der Port konnte nicht geoeffnet werden!"
Sleep: End
Else
Print "COM-Port geoeffnet."
End If
Dim As String Taste
Dim As UByte Buffer, ChannelNo
Dim As Integer bytesRead
Print "Sende Initialisierung (16 mal &HC0)..."
Buffer = &HC0
For i As Integer = 1 To 16
PUT #1, , Buffer
Next i
Print "Fertig."
Print
Print "Druecken Sie eine Taste von [1]-[6], um den jeweiligen Ausgang zu togglen,"
Print "oder druecken Sie [E], um die Zustaende von Relais und Eingaengen abzufragen."
Print "Druecken Sie [0], um ein komplettes Nullbyte zu senden."
Print "Mit [ESC] beenden Sie das Programm."
Print
DO
Taste = Inkey
If (Taste <> "") Then
If (UCase(Taste) = "E") Then
'Das Geraet auffordern, die Zustaende zu senden.
'Zitat: >>Um den Status zu erfragen ohne ihn zu aendern kann man das Status-Bit 8 mit dem Toggle-Bit 7 kombinieren und
'0b11000000 (= 0xC0) senden. Dies bedeutet: "Toggle nichts, und gib mir anschliessend den Status der Ports zurueck".<<
Print "Frage Status ab..."
Buffer = &b11000000
PUT #1, , Buffer
sleep 50
bytesRead = 0
Do
If (Loc(1) > 0) Then
Get #1, , Buffer
Print "Antwort vom Geraet (" & (bytesRead+1) & ". Byte): " & Buffer & " dezimal (" & BIN(Buffer,8) & " binaer)"
bytesRead += 1
End If
Loop Until bytesRead >= 2
ElseIf ((ASC(Taste) >= 49) AND (ASC(Taste) <= 54)) Then '49 = 1, 54 = 6
ChannelNo = ASC(Taste)-48
PRINT "Toggle Kanal Nr. " & ChannelNo
Buffer = (2^(ChannelNo-1)) Or &H40
PUT #1, , Buffer
ElseIf (Taste = "0") Then
PRINT "Sende 0-Byte..."
Buffer = 0
PUT #1, , Buffer
End If
End If
sleep 1
Loop Until Taste = Chr(27) 'Zum Beenden ESC druecken
Print
Print "Programm beendet."
End