Buchempfehlung
Windows System Programming
Windows System Programming
Das Kompendium liefert viele interessante Informationen zur Windows-Programmierung auf Englisch. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

fb:porticula NoPaste

Info
Info / Hilfe
Liste
Übersicht / Liste
Neu
Datei hochladen
Suche
Quellcode suchen
Download
Dateidownload

Relaiskarte 4

Uploader:AdministratorSebastian
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