VB串列埠接收多組資料是發生資料丟失問題

時間 2023-04-21 20:51:08

1樓:36000天

是的。這個其實是用的一個委託,你可以這樣試試,你output後等待50ms然後你read結果就不會出現錯位的問題了。我試過的。

但是你如果非要這樣,那麼是不能監控的,直接讀取就可以讀到,除錯監控會出現值變了。

2樓:匿名使用者

你的這個程式我用虛擬串列埠在57600下試過,沒有問題。不過,你的for迴圈中用cint函式不知什麼意思,難道有小數要取整?加上cint顯示成十進位制形式了。

你把vb源程式打包放上來看看。

3樓:匿名使用者

提供一個思路,一般串列埠的波特率都是9600,那麼你的**能不能在足夠短的時間內完成接收資料的操作呢?你可以試試優化下**,先將波特率設成最低,如果不丟資料,再一步步提高波特率,如果設高了後會丟資料,那麼就是這個問題了。個人猜測,僅供參考。

4樓:設計營地

cint返回值是整型,你改成csng試試。

5樓:匿名使用者

問題解決了麼?我得程式跟你的一樣也是丟資料。

關於串列埠通訊,用vb編的。傳送正常,接收的資料總是不對,資料中多了幾個 00 ,末尾資料錯誤。用其

6樓:網海1書生

這是因為vb使用的是unicode編碼,在這種編碼模式下,任何字元都是佔用兩個位元組的(換句話說不但漢字佔用兩個位元組,連半形的英文字母、數字、符號等也是兩個位元組的),比如。

abc1"這個字串的ascii碼(16進位制)在ansi編碼下為「61 62 63 31」,但在unicode中則變為「61 00 62 00 63 00 31 00」。

要想解決這個問題,你必須用位元組陣列而不是字串變數來接收資料,並且要按位元組讀取而不是按字元讀取。也可以採用編碼轉換函式強制把unicode編碼轉換為ansi編碼,比如:

dim s as string

s = abc1"

s = strconv(s, vbfromunicode)

但要注意,轉換後的字串是不能在vb直接使用的(將是亂碼),只能作為資料來使用(讀取的時候必須按位元組讀取,比如midb(s, 1, 1))。

vb傳送十六進位制串列埠資料,VB 傳送十六進位制串列埠資料

private sub command1 click dim sj as string dim sjbyt as byte dim i as long next i mscomm1.output sjbytend sub private sub form load text1 30h 30h 5fh...

串列埠接收資料怎樣儲存在陣列中呢

dim buffer as variant 表示宣告瞭一個buffer變數,但是這個buffer變數的型別不確定,可以是long integer double object string以及陣列等等,buffer變數的型別由編譯器自行判斷與轉換。dim buffer 100 as variant 表...

微控制器接收串列埠資料,怎麼用微控制器確定串列埠接收資料的時間間隔?

你通過串列埠助手要接受字串或一組資料需要在微控制器端開闢一個緩衝區,否則可能丟失資料。以下程式是較為通用的串列埠收發例程,開闢一個16位元組的緩衝區,兩個指標,一個存數指標,一個取數指標,兩指標相等,證明沒有新的接收資料。include define uchar unsigned charuchar...