所以,我要做的是在按下按钮时运行一段代码(我暂时使用右箭头键),并继续循环运行它,直到释放该键。
所以,我当前的代码看起来像这样(我已经简化了它,因为它使用的是串行端口,并且代码不容易理解):
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。我已经将它连接到一辆便宜的遥控车上(我通常有一些 arduino 项目),并且有代码允许我通过 IDE 本身中的箭头键控制它。
但是,我VB.NET 的知识有限(我只做过几年),所以我在谷歌的帮助下有点挣扎,这是一个上帝的结局,同时试图弄清楚如何保持串行端口打开(由于我的代码中的逻辑错误,它一直关闭)。
目标是,一旦我可以通过 VB.NET 中的箭头键控制它,我就可以设置一个更高级的程序,该程序将允许预编程路线(例如,我可以尝试"教"汽车指令集,以便我可以让它自动跟随电路,并将各种预编程的路线加载到其中)。我还计划在屏幕上显示按下了什么按钮,以及我想到的任何其他内容。
另外,鉴于这是一个原型,我打算最终将arduino和VB程序连接到我的爱好等级rc,看看我是否可以让带有预编程结构的计算机程序击败我的轨道。
好吧,在那篇小论文之后,我想这只是提前感谢,也非常感谢我项目其他领域的任何建议=)
为什么要让事情变得复杂。 看起来只要密钥关闭,您就想发送一些东西,然后在释放端口时关闭端口。
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