第一個for完成對delay_time參數(shù)的控制,即共循環(huán)多少次內(nèi)部循環(huán)
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供撫松網(wǎng)站建設(shè)、撫松做網(wǎng)站、撫松網(wǎng)站設(shè)計、撫松網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、撫松企業(yè)網(wǎng)站模板建站服務(wù),10多年撫松做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
第二個for(內(nèi)部循環(huán)),完成對j從0到199的控制,共循環(huán)200次。
翻譯成匯編就是:
(R0為傳遞參數(shù))
DELAY:
MOV R1,#200
DJNZ R1,$
DJNZ R0,DELAY
RET
Threading.Thread.Sleep(500)這句是線程停止等待的,在這500毫秒的時間里你的任何動作都是不響應(yīng)的,理論上再SendKeys.Send(TextBox2.Text)這段時間內(nèi)你可以動作,但是send是毫秒級完成的,你還沒有來得及響應(yīng)就進(jìn)入了下一次的循環(huán),所以跟卡死類似
解決方法:通過timer定時器延時
接收單片機(jī)的數(shù)據(jù)沒有事件響應(yīng) 我在While循環(huán)中不停的判斷單片機(jī)所收到的數(shù)據(jù)是否等于我所發(fā)的數(shù)據(jù),若不相等,則我再發(fā)一次,然后再收,程序如下: Private Sub Write_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Write.Click '以下CWSerial是串口通信控件,Read和Write方法分別是收數(shù)據(jù)和發(fā)數(shù)據(jù) CWSerial1.Write(TextOut.Text) '發(fā)數(shù)據(jù) While (CWSerial1.Read() TextOut.Text) 'TextOut.Text是我要發(fā)的數(shù)據(jù) MsgBox( "未能正確收到! ") CWSerial1.Write(TextOut.Text) '再發(fā)一次 End While MsgBox( "已正確收到! ") End Sub 關(guān)鍵是在發(fā)和收之間有個延遲(TimeOut),不可能我剛發(fā)完數(shù)據(jù)后就可以馬上收到數(shù)據(jù),必須等待1s后才有可能收到數(shù)據(jù)(我設(shè)的TimeOut為1000ms),我想要做的就是讓程序等待1s 希望大哥能提供讓程序等待的代碼,例子也行
Imports System.Threading
Thread.Sleep(1000)’延遲1秒
2.PauseWait(1000)’延遲1秒
Public Sub PauseWait(ByVal HowLong As Long)
Dim tick As Long
tick = My.Computer.Clock.TickCount
Do
My.Application.DoEvents()
Loop Until tick + HowLong My.Computer.Clock.TickCount
End Sub