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

時間 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()

有個n整數,儲存在陣列array中,使其前面各數順序向後移動m個位置,最後的m個數變成最前面的m個數,並輸出

忘掉你的指標吧。移動後的結果,只是array陣列的重新排列。結果 array 10 最後輸出也只是將重新排列好的陣列列印出來。假如寫成這樣 int array move array move 乾的是按要求排列陣列的活for i 0 i 6 i printf d array i 是否就不存在困擾呢? ...

labview串列埠接收到的資料怎樣實時更新

如果你每次收到的位元組數能確定 比如每條發過來的命令位元組數固定,或者最前一兩個位元組表示後面的位元組數 就按照位元組數接收。然後直接把收到的字串給顯示控制元件,不使用移位暫存器或反饋節點當然就不顯示之前的字元了。別加 等待 之類的函式 手錶圖示哪個 串列埠讀取函式會在讀到指定數量的字元或到達超時之...

c 如何將多個類儲存在陣列中,c 如何將多個類儲存在乙個陣列中

所謂陣列,就是相同資料型別的元素按一定順序排列的集合,就是把有限個型別相同的變數用乙個名字命名,然後用編號區分他們的變數的集合,這個名字稱為陣列名,編號稱為下標。所以在陣列中只能儲存相同型別的類物件。要儲存多個物件,只需要定義乙個類物件陣列,然後賦值進去即可。如類名為a,要儲存最多100個物件,需要...