vb串列埠傳送二進位資料有疑問

2025-01-06 12:00:02 字數 1814 閱讀 2421

1樓:金聲玉振中煤電器

= outbyte就是把outbyte(0) 輸出,因為陣列的上標為0,只有乙個資料。

例如:dim outbyte(2) as byteoutbyte(0)=1

outbyte(1)=2

outbyte(2)=3

outbyte

的話,就是把outbyte(0),outbyte(1),outbyte(2)輸出,輸出的實際數值為1,2,3.

2樓:網友

乙個元素的陣列也可以定義啊,你沒遇到過不代表不存在啊。

陣列名,意思就是把這個陣列中的所有元素都通過串列埠傳送出去,傳送順序由低到高,當然,就你的例子而言,只傳送了乙個位元組。

3樓:

dim outbyte(0) as byte ||dim outbyte() as byte ??

對於串列埠接收或發出的資料為二進位,所以你還能想出二進位的變數型別是什麼。

char&int&string&..所以對最小單位的 位元組 的讀取,其實就是二進位數的讀取。

outbyte是將位元組陣列中儲存的單元統一輸出,類似於指標,push完乙個,移動到下乙個單元,繼續push,直到為null

4樓:網友

因為mscomm控制項要求在傳送二進位資料時一定要用位元組陣列的形式傳送。所以即使傳送乙個位元組也要將它定義為陣列的形式。

outbyte(0) 是上界為0即只包含乙個位元組的陣列。平時定義乙個位元組變數就不必用陣列了,但這裡就不同了,這是mscomm控制項傳送位元組的要求。

outbyte 表示將outbyte陣列包含的元素內容傳送出去。這裡傳送了outbyte(0)裡包含的資料。

vb串列埠通訊問題

5樓:萍水e相逢

用 2進位方式 讀取 試試看。

推薦 看書。

visual_basic與_rs-232_序列通訊控制。

6樓:做而論道

先用「串列埠助手」試試看。

7樓:網友

你是怎麼讀出來的,能不能把你讀的**show一下方便查詢問題。會不會需要用函式轉換一下,如hex()轉換16進位,oct()轉換8進位等。

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

8樓:網海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怎麼通過串列埠收發資料,謝謝,我是新手,希望能附上**,感激

9樓:匿名使用者

還是買本 vb 串列埠通訊 的書吧,這種原理與**不是一兩頁紙能說清楚的。

VB中二進位制轉十進位制的演算法問題

可以用一個變數儲存2的次方,每次乘2就行了,不用每次都用 2 val b val len a 1 你的 修改如下 option explicit dim a,b,c,d dim num as double dim i as integer function bin2dec 二進位制轉十進位制a nu...

VB怎麼判斷數是二進位制數還是十進位制數或十六進位制數

vb不直接支來持二進位制數 在vb語句裡,所有自直接數都作為十進位制數看待如果數字前加字首 h 那麼vb會認為這是一個十六進位制數,例如 h30 48 10進位制 如果數字前加字首 o 那麼vb會認為這是一個八進位制數,例如 o30 24 10進位制 這個不好判斷,唯一可以利用的就是2進位制數,每一...

matlab如何將字串變成二進位制資料

a aksldjskfhsf 字元 b double a c dec2bin b matlab中如何把一串十六進位制常數轉換為二進位制然後將每位依次賦值給向量中的每個元素?number,cellstr textread a.hex 8d s number為昌號後面的八位二進位制,cellstr為後續...