conrad relaiskarte 8 fach nur seriell

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von coolcat1975.

    conrad relaiskarte 8 fach nur seriell

    hallo zusammen!

    ich habe hier 4 conrad 8-fach seriell karten die sich unter vb 6.0 einwandfrei ansteuern haben lassen. bedingt durch eine systemumstellungen musste ich den code komplett neu schreiben und habe mich für vb 2008 express entschieden.

    ich hab den code portiert und grundsätzlich kann ich die karten ansprechen.

    und jetzt das aber:

    die relais 1 - 8 entsprechen 1,2,4,8,16,32,....,128

    relais 1 - 7 funktioniert , relais 8 spricht nicht an auf keiner karte.

    ich weiss leider echt nicht mehr weiter

    ich hänge den vb6 und den vb 2008 code mal an

    VB.NET-Quellcode

    1. Function senden(kommando As Byte, karte As Byte, relais As Byte)
    2. Dim sendf As String
    3. Dim s As Integer
    4. outbuf(0) = kommando
    5. outbuf(1) = karte
    6. outbuf(2) = relais
    7. s = IniRead("portdefinitionen", "relais")
    8. Tastenpult.MSComm1.CommPort = s
    9. Tastenpult.MSComm1.Settings = "19200,n,8,1"
    10. Tastenpult.MSComm1.PortOpen = True
    11. outbuf(3) = outbuf(0) Xor outbuf(1) Xor outbuf(2)
    12. sendf = Chr$(outbuf(0)) + Chr$(outbuf(1)) + Chr$(outbuf(2)) + Chr$(outbuf(3))
    13. Tastenpult.MSComm1.Output = sendf
    14. Tastenpult.MSComm1.PortOpen = False
    15. End Function


    .net

    VB.NET-Quellcode

    1. Function senden(ByVal kommando As Byte, ByVal karte As Byte, ByVal relais As Byte)
    2. Dim outbuf(8) As Integer
    3. Dim sendf As String
    4. Dim s As Integer
    5. outbuf(0) = kommando
    6. outbuf(1) = karte
    7. outbuf(2) = relais
    8. SerialPort2.BaudRate = "19200"
    9. SerialPort2.PortName = comporthaus
    10. SerialPort2.StopBits = Ports.StopBits.One
    11. SerialPort2.Parity = Ports.Parity.None
    12. SerialPort2.DataBits = 8
    13. outbuf(3) = outbuf(0) Xor outbuf(1) Xor outbuf(2)
    14. sendf = Chr(outbuf(0)) + Chr(outbuf(1)) + Chr(outbuf(2)) + Chr(outbuf(3))
    15. SerialPort2.PortName = comporthaus
    16. SerialPort2.Open()
    17. SerialPort2.DiscardInBuffer()
    18. SerialPort2.DiscardOutBuffer()
    19. SerialPort2.Write(sendf)
    20. SerialPort2.Close()
    21. End Function


    lg

    cc
    Hi!

    Vb.net verwendet sinnvollerweise Encodings, bei Serial Ports standardmäßig Ascii, und da gibts nicht >127.
    Du kannst entweder mehrmals den Aufruf SerialPort.WriteByte(myByte) verwenden, oder direkt ein Array an die SerialPort.Write(myByteArray, 0, myByteArray.Length) Methode übergeben, um Encodings zu umgehen.

    Ein wenig Google hätte dir das aber vermutlich auch verraten ;)


    mfG
    Andy