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

時間 2021-09-06 02:07:32

1樓:匿名使用者

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

dim buffer(100) as variant 表示宣告瞭一個陣列buffer,該陣列有100個成員,陣列的每一個成員都沒有指定具體的資料型別,由編譯器自行判斷與轉換

dim receive(100) as byte 表示宣告瞭一個陣列receive,該陣列有100個成員,陣列的每一個成員都是byte型。

dim buffer() as byte 表示宣告瞭一個陣列buffer,該陣列成員數目未知,陣列的每一個成員都是byte型。在確定陣列成員數量之前是不能通過buffer(xx)的這種方式訪問buffer裡的成員的。

dim buffer() as byte

.......

'接受........

buffer = mscomm.input

這種方法實際上是把mscomm接收快取裡的所有資料讀出來並儲存到buffer陣列中,buffer陣列的大小由mscomm接收快取實際快取的資料量決定,因為mscomm的接收快取裡實際的資料量是不確定的,所以不能使用

dim receive(100) as byte

.......

接受資料

receive = mscomm.input

這樣的方式。

dim receive(100) as byte

.......

接受資料

receive(i) = mscomm.input

這樣是可以的,這樣實際上是一次從mscomm的接收快取裡讀一個位元組的資料,你這樣做不行估計是因為資料傳輸速率和rthreshold設定的問題,因為賦值語句執行的時間要遠比串列埠傳輸速率快很多倍,所以你必須等mscomm的接收快取裡有100個位元組以上的資料時你才能通過迴圈用mscomm.input依次讀出100個位元組的資料,否則就肯定會出錯,所以如果你把rthreshold設定為100,也就是每收到100個位元組的資料觸發一次oncomm事件就可以通過receive(i) = mscomm.input把資料讀出來。

2樓:匿名使用者

可以加一個整數索引,對加入的資料長度進行標識。更好的是對這個資料進行擴充套件,變成一個堆疊,對其進行操作。

#include

#include

#define byte unsigned charbyte queue_buf[20], idx = 0;

void push(byte n) //當串列埠每接收一個資料,就用push新增一個資料

byte pop()

return ret;

}byte size()

byte clear()

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

是的。這個其實是用的一個委託,你可以這樣試試,你output後等待50ms然後你read結果就不會出現錯位的問題了。我試過的。但是你如果非要這樣,那麼是不能監控的,直接讀取就可以讀到,除錯監控會出現值變了。你的這個程式我用虛擬串列埠在57600下試過,沒有問題。不過,你的for迴圈中用cint函式不...

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

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

怎麼用串列埠除錯工具接收plc傳送的資料

你是想檢測串列埠與plc的資料還是,用串列埠除錯工具與plc通訊,如果是檢測串列埠與plc的資料,那就需要串列埠檢測軟體,如果是用串列埠除錯工具與plc通訊,那就需要知道plc的通訊協議 瘋狂的門 如果只是檢測plc通訊口傳送的資料,需要一個485轉232轉換器,連線到電腦 筆記本還需要一個usb轉...