所以,我尝试做的是在按下按钮时运行一段代码(我暂时使用右箭头键),并继续在循环中运行它直到该密钥被释放。
所以,我当前的代码看起来像这样(我已经简化了它,因为它使用的是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获得计算机程序来击败我的轨道
那么,在那篇小文章之后,我想它只是提前感谢,并且我的项目其他领域的任何建议也值得赞赏=)
答案 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