在密钥释放处理程序

时间:2014-04-06 14:23:40

标签: vb.net keypress keyup eventhandler

所以,我尝试做的是在按下按钮时运行一段代码(我暂时使用右箭头键),并继续在循环中运行它直到该密钥被释放。

所以,我当前的代码看起来像这样(我已经简化了它,因为它使用的是SerialPorts,并且不易理解代码):

Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown

    Select Case e.KeyCode

        Case Keys.Right

            Do Until (CODE LOOKING FOR RIGHT-ARROW KEY RELEASE)
                SerialPort1.Write("right")
            Loop

            e.Handled = True
            SerialPort1.Close()
End Sub

最终,我尝试做的是通过串口功能控制和arduino。我把它连接到廉价的rc汽车(我通常在旅途中有几个arduino项目),并且有代码允许我通过IDE本身的箭头键来控制它。

但是,我的VB.NET知识有限(我只有几年了),所以我有点在谷歌的帮助下挣扎,这是一个神的目的,同时试图弄清楚如何保持串口打开(由于我的代码中的逻辑错误,它继续关闭)。

目标是,一旦我可以通过VB.NET中的箭头键控制它,我就可以设置一个更高级的程序,允许预编程路线(例如,我可以尝试"教&#34 ;汽车指令集,以便我可以自动跟踪电路,并将各种预先编程的路线加载到其中)。我还计划一个屏幕上的gui来显示按下了什么按钮,以及我想到的任何其他内容。

另外,鉴于这是一个原型,我打算最终将arduino和VB程序连接到我的爱好等级rc,看看我是否可以通过预先编程的isntructions获得计算机程序来击败我的轨道

那么,在那篇小文章之后,我想它只是提前感谢,并且我的项目其他领域的任何建议也值得赞赏=)

1 个答案:

答案 0 :(得分:0)

为什么要这么复杂。看起来你想在密钥关闭时发送一些东西,然后在释放时关闭端口。

Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
    If e.KeyCode = Keys.Right AndAlso keydelay >= 1 Then
        Debug.WriteLine("DWN") 'SerialPort1.Write("right")
        e.Handled = True
    ElseIf e.KeyCode = Keys.Right Then
        keydelay += 1
    End If
End Sub

Dim keydelay As Integer = 0

Private Sub Form1_KeyUp(sender As Object, e As KeyEventArgs) Handles Me.KeyUp
    If e.KeyCode = Keys.Right Then
        keydelay = 0
        Debug.WriteLine("UP") 'SerialPort1.Close()
    End If
End Sub