上位機軟件接收大量數(shù)據(jù)并顯示,會造成界面卡頓,可采用雙緩沖技術(shù),即將數(shù)據(jù)存到內(nèi)存,再將其繪制到界面,比將數(shù)據(jù)直接繪制到界面要省很多時間
創(chuàng)新互聯(lián)2013年至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目網(wǎng)站制作、成都做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元東昌府做網(wǎng)站,已為上家服務(wù),為東昌府各地企業(yè)和個人服務(wù),聯(lián)系電話:18980820575
添加在子進程里面,就加在你批量傳輸代碼里的每一個傳輸后面,也就是大批量中的每傳輸一個數(shù)據(jù)就暫停一下,而不是每一個大批量才暫停一下。
在 VB.NET 中,判斷串口發(fā)送是否為空可以通過判斷 SerialPort 類的 IsOpen 和 BytesToWrite 屬性來實現(xiàn)。
IsOpen 屬性可以判斷串口是否已經(jīng)打開,如果串口沒有打開,則無法發(fā)送數(shù)據(jù),因此 IsOpen 屬性可以用來判斷串口發(fā)送是否可行。
BytesToWrite 屬性可以獲取當(dāng)前串口發(fā)送緩沖區(qū)中待發(fā)送的字節(jié)數(shù),如果 BytesToWrite 屬性的值為 0,則說明當(dāng)前串口發(fā)送緩沖區(qū)為空,可以進行下一次發(fā)送操作。
下面是一個簡單的示例代碼:
```
Dim serialPort As New SerialPort()
' 設(shè)置串口參數(shù)...
If serialPort.IsOpen AndAlso serialPort.BytesToWrite = 0 Then
' 發(fā)送數(shù)據(jù)...
End If
```
在使用串口發(fā)送數(shù)據(jù)時,需要始終注意串口是否已經(jīng)打開,以及當(dāng)前發(fā)送緩沖區(qū)中是否有待發(fā)送的數(shù)據(jù),否則可能會出現(xiàn)發(fā)送失敗的情況。
不知道你是不是用51單片機往串口發(fā)數(shù)據(jù),是的話那是因為51的sbuf最多存放8個字節(jié),所以你發(fā)12個字節(jié)會分成兩次發(fā)完。還有在接收的時候最好定義好通信協(xié)議,比如加一個偵頭,一個偵尾,通過這兩個字節(jié)的內(nèi)容來接收數(shù)據(jù)。
老兄,提問還是給點懸賞分嘛,不要吝嗇哪點分,知識是無價的,你給得越多,回答你的人才會越多。