Vb.net 关于密钥释放处理程序

Vb.net 关于密钥释放处理程序,vb.net,keypress,keyup,eventhandler,Vb.net,Keypress,Keyup,Eventhandler,所以,我要做的是在按下按钮时运行一段代码(我将暂时使用向右箭头键),并在循环中继续运行它,直到该键被释放 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("righ

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

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
因此,我当前的代码看起来是这样的(我简化了它,因为它使用串行端口,代码不容易理解):

最终,我要做的是通过串口函数控制和控制arduino。我已经把它连接到一辆便宜的rc汽车上(我通常有几个arduino项目在进行中),并且有代码允许我通过IDE中的箭头键来控制它

然而,我对VB.NET的了解有限(我才做了几年),所以我在谷歌的帮助下挣扎着,这是一个上帝的终结,同时我试图找出如何保持serialport打开(由于代码中的逻辑错误,它一直关闭)

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

另外,考虑到这是一个原型,我打算最终将arduino和VB程序连接到我的业余爱好等级rc,看看我是否能用预先编程的iScontractions获得计算机程序,以完成我的任务


好吧,在那篇小文章之后,我想这只是提前感谢,我的项目的其他方面的任何建议也都很感激=)

为什么要把这件事搞复杂呢。只要按键处于关闭状态,您似乎就想发送一些内容,然后在释放时关闭端口

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

从我的测试中可能会出现重复的情况(我以后才能用我的arduino进行测试),这会告诉我它成功了。我遇到了一个问题,在它第一次通过串口发送东西和其他时候之间有一个停顿。例如,我按下向上箭头键,它将汽车向前移动一点,暂停,然后再平稳地向前移动。@Phynix如果它工作正常,那么你应该将它标记为回答:啊,我一直按箭头,它说信誉不够。明白了:)