VB 2010 Tastendruck

  • C#
  • .NET (FX) 1.0–2.0

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    VB 2010 Tastendruck

    Hallo,
    Ich bin gerade dabei eine Art "Klavier" mit VB 2010, einem Arduino und einem Schrittmotor umzusetzen.
    Nun habe ich in meinem Programm 15 Buttons die jeweils für einen "Ton" zuständig sind. Ich möchte aber meine Tastatur als "Klavier" benutzen. Wie kann ich Tastatureingaben in mein Programm einbinden? Also wenn ich z.b. den Buchstaben A drücke das dann der selbe Befehl gesendet wird wie mit einem Button.
    Vielen Dank für eure Hilfe!

    Hier der Code:

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.IO.Ports
    3. Imports System.Threading
    4. Public Class Form1
    5. Shared _continue As Boolean
    6. Shared _serialPort As SerialPort
    7. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    8. SerialPort1.Close()
    9. SerialPort1.PortName = "com9" 'change com port to match your Arduino port
    10. SerialPort1.BaudRate = 9600
    11. SerialPort1.DataBits = 8
    12. SerialPort1.Parity = Parity.None
    13. SerialPort1.StopBits = StopBits.One
    14. SerialPort1.Handshake = Handshake.None
    15. SerialPort1.Encoding = System.Text.Encoding.Default 'very important!
    16. End Sub
    17. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    18. SerialPort1.Open()
    19. SerialPort1.Write("1")
    20. SerialPort1.Close()
    21. End Sub
    22. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    23. SerialPort1.Open()
    24. SerialPort1.Write("2")
    25. SerialPort1.Close()
    26. End Sub
    27. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    28. SerialPort1.Open()
    29. SerialPort1.Write("3")
    30. SerialPort1.Close()
    31. End Sub
    32. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    33. SerialPort1.Open()
    34. SerialPort1.Write("4")
    35. SerialPort1.Close()
    36. End Sub
    37. Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
    38. SerialPort1.Open()
    39. SerialPort1.Write("5")
    40. SerialPort1.Close()
    41. End Sub
    42. Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
    43. SerialPort1.Open()
    44. SerialPort1.Write("6")
    45. SerialPort1.Close()
    46. End Sub
    47. Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
    48. SerialPort1.Open()
    49. SerialPort1.Write("7")
    50. SerialPort1.Close()
    51. End Sub
    52. Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
    53. SerialPort1.Open()
    54. SerialPort1.Write("8")
    55. SerialPort1.Close()
    56. End Sub
    57. Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
    58. SerialPort1.Open()
    59. SerialPort1.Write("9")
    60. SerialPort1.Close()
    61. End Sub
    62. Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
    63. SerialPort1.Open()
    64. SerialPort1.Write("a")
    65. SerialPort1.Close()
    66. End Sub
    67. Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click
    68. SerialPort1.Open()
    69. SerialPort1.Write("b")
    70. SerialPort1.Close()
    71. End Sub
    72. Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click
    73. SerialPort1.Open()
    74. SerialPort1.Write("c")
    75. SerialPort1.Close()
    76. End Sub
    77. Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
    78. SerialPort1.Open()
    79. SerialPort1.Write("d")
    80. SerialPort1.Close()
    81. End Sub
    82. Private Sub Button14_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button14.Click
    83. SerialPort1.Open()
    84. SerialPort1.Write("e")
    85. SerialPort1.Close()
    86. End Sub
    87. Private Sub Button15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button15.Click
    88. SerialPort1.Open()
    89. SerialPort1.Write("f")
    90. SerialPort1.Close()
    91. End Sub
    92. Private Sub
    93. If E Then
    94. End Class
    Zum FormDesigner habich kein tut. das ist das Dingens, wo man die buttons aufs Form macht. Auf der Seite ist meist ein Property-Grid, und da kann man die Properties editieren.
    Da musste halt das Form anwählen, und dann die Property "KeyPreview" im PropertyGrid suchen.
    Dassis so simpel, da kann man kein Tut zu machen.

    Zum Event-empfangen habich ein allgemeines Tut, da gibts auch ein Video for Beginners
    Warum so viele Code? ?(
    Ich habe deinen Code optimiert.
    Nun ist er viel kürzer und auch besser zum Lesen.
    Freue mich falls ich dir damit weiter helfen könnte.

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles _
    2. Button1.Click, Button2.Click, Button3.Click
    3. Select Case True
    4. Case sender Is Button1
    5. SerialPortSettings("1"c)
    6. Case sender Is Button2
    7. SerialPortSettings("2"c)
    8. Case sender Is Button3
    9. SerialPortSettings("3"c)
    10. End Select
    11. End Sub
    12. Private Sub SerialPortSettings(value As Char)
    13. SerialPort1.Open()
    14. SerialPort1.Write(value)
    15. SerialPort1.Close()
    16. End Sub
    Visual Basic.NET 8o
    MS-SQL
    8o
    @Sandro2504 Und:
    Das Port bleibt über die Laufzeit des Programms geöffnet, final schließt Du es wieder.
    Da musst Du nur noch senden.
    Wenn Du die zu sendenden Zeichen im Designer der Tag-Property der Buttons zuweist, musst Du nicht mehr die einzelnen Buttons abfragen, sondern nur noch sender zu einem Control casten, die Tag-Property auslesen (die ist per Designer ein String), in einen Char konvertieren und senden.
    Feddich.

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click, Button3.Click
    2. Dim btn = DirectCast(sender, Button)
    3. Dim tag = btn.Tag.ToString()
    4. If tag.Length = 1 Then
    5. SerialPort1.Write(Convert.ToChar(tag))
    6. End If
    7. End Sub

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!