首先:
成都创新互联主营闽清网站建设的网络公司,主营网站建设方案,成都APP应用开发,闽清h5小程序定制开发搭建,闽清网站营销推广欢迎闽清等地区企业咨询
textbox里没有显示,是因为SerialPort1和袭汪TextBox2不是同一线程创建的,需要跨线程操作。需要携洞用到拍隐仔委托,这样才能显示出来。
其次:
我觉得用串口的接收数据事件更好一些。
下面代码供参考:
'----------------------
'串口接收数据事件,其实比用定时器更好,
'触发事件的条件可以自己在form_load中设置ReceivedBytesThreshold属性数值,默认为ReceivedBytesThreshold=1
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim strRecvData As String = ""
strRecvData = SerialPort1.ReadExisting
Call disPlayComData(strRecvData)
End Sub
Delegate Sub callback(ByVal strT As String) '定义委托
Sub showString(ByVal comdata As String) '显示结果
Me.TextBox1.Text = "结果:" comdata
End Sub
Sub disPlayComData(ByVal strTmp As String) '判定是否为跨线程
If Me.TextBox1.InvokeRequired Then
Dim d As New callback(AddressOf showString)
Me.Invoke(d, New Object() {strTmp})
Else
Me.TextBox1.Text = strTmp
End If
End Sub
1.定义变量记录键是否被按下,按下的累计时间
Dim 按下A键 As Boolean
Dim 按下A键时间 世和高As Integer
2.添加一个TextBox1用于接收键盘事件,或者直接用窗体的键盘事件(确保KeyPreview为True)
在KeyDown事件中添加如下代搜尺码:
If e.Keycode = keys.A Then 按下A键 = True
在KeyUp事件中添加如下代码:
If e.Keycode = keys.A Then 按下A键 = False
3.添加一个Timer1控件,调整Timer1的Interval来决定按键频率,记得要把Timer1.Enable开启
在Tick事件中添加如下代码:
If 棚册按下A键 = True
按下A键时间+=1
Call 音量设置(按下A键时间 * 10)
End If
PS: 按下的秒数 = 按下A键时间*Timer1.Interval / 1000
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As 行锋中System.EventArgs) Handles Timer1.Tick
m = m + 1
n = m.tostring
档山 TextBox1.Text = n
End Sub
m=m+1
n = m.tostring
textbox1.text = n
把这几句原来在button2 click事件里面的代码,直接写在 timer事件里面,把timer的Enabled属性设置为True, Interval属性基棚设置为1000,就可以了。