zwei HEX blöcke senden ..

  • VB.NET

Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von M.P..

    zwei HEX blöcke senden ..

    Hallo zusammen, ich hoffe mir kann einer auf die Sprünge helfen ......

    ich habe folgendes Problem, ich möchte gerne in einer PRIVATE SUB, zwei getrennte HEX Blöcke
    versenden und zwar so dass diese einzeln versendet werden, also block eins neue Zeile zweiter block.
    Block1 01 06 00 03 00 00 79 CA
    Block2 01 06 00 04 00 0B 89 CC

    Könnte mir da jemand auf die Sprünge helfen, Danke im Voraus !!!!!!
    Versendet wird das Ganze dann per Serial, oder hast du was anderes gemeint?

    also ich drücke den Button, und er soll die zwei Blöcke voneinander getrennt senden ....

    So habe ich versucht, aber da schreibt er mir sie Hintereinander, logisch eigentlich ...

    Quellcode

    1. Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
    2. Try
    3. ' Sequenz für Lammelenwinkel 0% (01 06 00 03 00 00 79 CA)in HEX
    4. SerialPort1.Write(New Byte() {&H1}, 0, 1)
    5. SerialPort1.Write(New Byte() {&H6}, 0, 1)
    6. SerialPort1.Write(New Byte() {&H0}, 0, 1)
    7. SerialPort1.Write(New Byte() {&H3}, 0, 1)
    8. SerialPort1.Write(New Byte() {&H0}, 0, 1)
    9. SerialPort1.Write(New Byte() {&H0}, 0, 1)
    10. SerialPort1.Write(New Byte() {&H79}, 0, 1)
    11. SerialPort1.Write(New Byte() {&HCA}, 0, 1)
    12. ' Sequenz für den Startbefehl (01 06 00 04 00 0B 89 CC)in HEX
    13. SerialPort1.Write(New Byte() {&H1}, 0, 1)
    14. SerialPort1.Write(New Byte() {&H6}, 0, 1)
    15. SerialPort1.Write(New Byte() {&H0}, 0, 1)
    16. SerialPort1.Write(New Byte() {&H4}, 0, 1)
    17. SerialPort1.Write(New Byte() {&H0}, 0, 1)
    18. SerialPort1.Write(New Byte() {&HB}, 0, 1)
    19. SerialPort1.Write(New Byte() {&H89}, 0, 1)
    20. SerialPort1.Write(New Byte() {&HCC}, 0, 1)
    21. Catch ex As Exception
    22. MsgBox("keine Verbindung")
    23. End Try
    24. End Sub
    Dann schreib das am besten in zwei getrennte Subs, machts aufjedenfall mal übersichtlicher...
    Und warum jedesmal ein ByteArray erzeugen, wenn es einmalig für einen Block reicht?!

    VB.NET-Quellcode

    1. Sub SendLammelenwinkel()
    2. Dim block() As Byte = New Byte() {&H01, &H06, &H00, &H03, &H00, &H00, &H7, &HCA}
    3. SerialPort1.Write(block,0,block.Length)
    4. End Sub

    dasselbe natürlich noch für die Startbefehlsequenz...
    bei einem Zeilenumbruch ist die Frage, willst du nur LineFeed oder LineFeed mit Carriage Return, oder gar nur Carriage Return?...
    für CR sendest du follgendes Byte(Hex):

    Quellcode

    1. 0D

    für LF sendest du:

    Quellcode

    1. 0A

    für CRLF:

    Quellcode

    1. 0D, 0A
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Ok gebe ich zu der Code ist wesentlich kürzer, nur das mit den subs verstehe ich nicht ganz, sicher kann ich die zwei sequenzen in zwei sub verpacken,
    aber wie soll ich die dann mit einen Button ansprechen ???

    der erste Hex block sagt dem Kontroller was er zu tun hat,
    der zweite block gibt ihn dann den befehl es zu tun
    ok, das mit den sub habe ich hinbekommen, aber wie soll ich jetzt den zeilen sprung mit einbinden, egal was ich versuche er giebt es mir immer als Hex wert wieder ....

    Quellcode

    1. Sub LamelleStart()
    2. ' Sequenz für den Startbefehl (01 06 00 04 00 0B 89 CC)in HEX
    3. Dim start() As Byte = New Byte() {&H1, &H6, &H0, &H4, &H0, &HB, &H89, &HCC}
    4. SerialPort1.Write(start, 0, start.Length)
    5. End Sub
    6. Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
    7. Try
    8. ' Sequenz für Lammelenwinkel 0% (01 06 00 03 00 00 79 CA)in HEX
    9. Dim block() As Byte = New Byte() {&H1, &H6, &H0, &H3, &H0, &H0, &H79, &HCA}
    10. Dim sp() As Byte = New Byte() {&HD, &HA}
    11. SerialPort1.Write(block, 0, block.Length)
    12. SerialPort1.Write(sp, 0, sp.Length)
    13. LamelleStart()
    14. Catch ex As Exception
    15. MsgBox("keine Verbindung")
    16. End Try
    17. End Sub


    Danke schoneinmal fü die Tips !!!!!!
    jep, das weis ich, das ist aber nicht das problem, denn die reinenfolge stimmt, das problem ist das beide blöcke hineinander in einer zeile erscheinen und darf nicht sein,

    Lamellenwinkel 0%, neue Zeile
    LamellenStart

    Quellcode

    1. Private Sub Status_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. Try
    3. ' PORT wird Geöffnet (COM3 / BAUD 19600)
    4. SerialPort1.Open()
    5. Catch ex As Exception
    6. MsgBox("Keine Schnittsteller Vorhanden oder Frei ....")
    7. End Try
    8. End Sub
    9. '####################################
    10. '######## AUF und Ab Fahrt ########
    11. '####################################
    12. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTauf.Click
    13. Try
    14. ' Sequenz zum AUF Fahren des Motors (01 06 00 04 00 03 88 0A)in HEX
    15. Dim block() As Byte = New Byte() {&H1, &H6, &H0, &H4, &H0, &H3, &H88, &HA}
    16. SerialPort1.Write(block, 0, block.Length)
    17. Catch ex As Exception
    18. MsgBox("keine Verbindung")
    19. End Try
    20. End Sub
    21. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTstop.Click
    22. Try
    23. ' Sequenz zum Stoppen der Fahrt des Motors (01 06 00 04 00 02 49 CA)in HEX
    24. Dim block() As Byte = New Byte() {&H1, &H6, &H0, &H4, &H0, &H2, &H49, &HCA}
    25. SerialPort1.Write(block, 0, block.Length)
    26. Catch ex As Exception
    27. MsgBox("keine Verbindung")
    28. End Try
    29. End Sub
    30. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTab.Click
    31. Try
    32. ' Sequenz zum AB Fahren des Motors (01 06 00 04 00 04 C9 C8)in HEX
    33. Dim block() As Byte = New Byte() {&H1, &H6, &H0, &H4, &H0, &H4, &HC9, &HC8}
    34. SerialPort1.Write(block, 0, block.Length)
    35. Catch ex As Exception
    36. MsgBox("keine Verbindung")
    37. End Try
    38. End Sub
    39. '################################################
    40. '############## Referenz ################
    41. '################################################
    42. Private Sub ReferenzfahrtToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ReferenzfahrtToolStripMenuItem.Click
    43. Try
    44. ' Sequenz für Referenzfart des Motors (01 06 00 04 00 01 09 CB)in HEX
    45. Dim block() As Byte = New Byte() {&H1, &H6, &H0, &H4, &H0, &H1, &H9, &HCB}
    46. SerialPort1.Write(block, 0, block.Length)
    47. Catch ex As Exception
    48. MsgBox("keine Verbindung")
    49. End Try
    50. End Sub
    51. '################################################
    52. '############ Lamellenwinkel ################
    53. '################################################
    54. Sub LamelleStart()
    55. Try
    56. ' Sequenz für den Startbefehl (01 06 00 04 00 0B 89 CC)in HEX
    57. Dim start() As Byte = New Byte() {&H1, &H6, &H0, &H4, &H0, &HB, &H89, &HCC}
    58. SerialPort1.Write(start, 0, start.Length)
    59. Catch ex As Exception
    60. MsgBox("keine Verbindung")
    61. End Try
    62. End Sub
    63. Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
    64. Try
    65. ' Sequenz für Lamellenwinkel 0% (01 06 00 03 00 00 79 CA)in HEX
    66. Dim block() As Byte = New Byte() {&H1, &H6, &H0, &H3, &H0, &H0, &H79, &HCA}
    67. Dim sp() As Byte = New Byte() {&HD, &HA}
    68. SerialPort1.Write(block, 0, block.Length)
    69. SerialPort1.Write(sp, 0, sp.Length)
    70. LamelleStart()
    71. Catch ex As Exception
    72. MsgBox("keine Verbindung")
    73. End Try
    74. End Sub
    75. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    76. Try
    77. ' Sequenz für Lamellenwinkel 50% (01 06 00 03 01 F4 79 DD)in HEX
    78. Dim block() As Byte = New Byte() {&H1, &H6, &H0, &H3, &H1, &HF4, &H79, &HDD}
    79. SerialPort1.Write(block, 0, block.Length)
    80. Catch ex As Exception
    81. MsgBox("keine Verbindung")
    82. End Try
    83. End Sub
    84. Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
    85. Try
    86. ' Sequenz für Lamellenwinkel 100% (01 06 00 03 03 E8 79 74)in HEX
    87. Dim block() As Byte = New Byte() {&H1, &H6, &H0, &H3, &H3, &HE8, &H79, &H74}
    88. SerialPort1.Write(block, 0, block.Length)
    89. Catch ex As Exception
    90. MsgBox("keine Verbindung")
    91. End Try
    92. End Sub
    93. Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    94. '' Sequenz für den Startbefehl (01 06 00 04 00 0B 89 CC)in HEX
    95. LamelleStart()
    96. End Sub
    97. Private Sub EXITToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EXITToolStripMenuItem.Click
    98. Close()
    99. End Sub
    100. Private Sub Status_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
    101. ' Es wird Geprüft ob der Port geöffnet ist, wenn ja wird er Geschlossen
    102. If SerialPort1.IsOpen = True Then
    103. SerialPort1.Close()
    104. End If
    105. End Sub


    der Code soll dazu dienen eine Jalousie zu Steuern ....
    hab ich laut hilfe ..

    Parameter

    FileNumber Erforderlich. Ein Integer-Ausdruck mit einer beliebigen gültigen Dateinummer.
    Output Optional. Mindestens ein durch Komma getrennter Ausdruck, der in eine Datei geschrieben wird.

    ok, aber es geht trozdem nicht, oder ich gebe die argumente falsch ein ...
    eine kleine hilfe wäre nicht schlecht ..
    in der hilfe von vb.net, sei mir bitte nicht böse aber damit kann ich nichts anfangen, denn der text ligt ja in vor einer Var. vor Dim block ... , er will aber das ich
    ihn als string makiere, er soll aber den inhalt von block senden, oder verstehe ich da was falsch ...