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

時間 2021-08-30 09:19:41

1樓:匿名使用者

**如下:

private sub form_load()

mscomm1.settings = "9600,n,8,1" '設定通訊口引數

mscomm1.inbuffersize = 40 '設定mscomm1接收緩衝區為40位元組

mscomm1.outbuffersize = 2 '設定mscomm1傳送緩衝區為2位元組

mscomm1.inputmode = cominputmodebinary '設定接收資料模式為二進位制形式

mscomm1.inbuffercount = 0 '清除接收緩衝區

mscomm1.outbuffercount = 0 '清除傳送緩衝區

'mscomm1.rthreshold = 1 '設定接收一個位元組產生oncomm事件

mscomm1.commport = 5

mscomm1.portopen = true '開啟通訊口

end sub

private sub command2_click()

dim data() as byte '串列埠傳送位元組

redim data(7)

data(0) = &h81

data(1) = &h81

data(2) = &h52

data(3) = &h00

data(4) = &h00

data(5) = &h00

data(6) = &h53

data(7) = &h00

mscomm1.output = data

接收有幾種辦法:1.延時接收

timer1.enabled = true

t1_c0:

if t1_flag0 = true then goto t1_c1

doevents

goto t1_c0

t1_c1:

t1_flag0 = false

dim bintput() as byte

dim binputa as variant

binputa = mscomm1.input ' 從接收佇列中讀入字串

bintput() = binputa

dim i as integer

for i = 0 to ubound(bintput)

if len(hex(bintput(i))) = 1 then

strdata = strdata & "0" & hex(bintput(i))

else

strdata = strdata & hex(bintput(i))

end if

next

text3.text = strdata

2樓:小陳

可以參考以下貼:

詳細的說吧,用mscomm傳送資料有兩種方式,一種是文字模式傳送,這時要寫:

mscomm1.inputmode=cominputmodetextdim stext="abc"

mscomm1.output=stext

'把"abc"用文字方式傳送出去.

第二種是二進位制模式傳送,這時必須要用一個位元組陣列才能傳送,即使是一個位元組也要用陣列:

mscomm1.inputmode=cominputmodebinary

bytes(1)= &h25

bytes(2)= &h00

bytes(3)= &h00

bytes(4)= &hff

bytes(5)= &h0e

bytes(6)= &h9a

buffer=bytes()

mscomm1.output=buffer

3樓:匿名使用者

參閱

補充

bytsend(1) = &h0

bytsend(2) = &h0

bytsend(3) = &h0

bytsend(4) = &hff

bytsend(5) = &he

bytsend(6) = &h9a

mscomm1.output = bytsend

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

4樓:匿名使用者

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 63h 31h 0dh"

mscomm1.settings = "9600,n,8,1"

mscomm1.portopen = trueend sub

5樓:

dim sandcher() as byteredim sandcher(5)

sandcher(0) = &h30

sandcher(1) = &h30

sandcher(2) = &h5f

sandcher(3) = &h63

sandcher(4) = &h31

sandcher(5) = &h0d

with mscomm1

if .portopen = false then .portopen = true

.output = sandcher

end with

6樓:滿以柳

關鍵是要搞清楚,想傳送的資料型別,如字串,還是二進位制數(命令),我的理解是你要通過串列埠某些裝置的資料,那就要傳送二進位制命令資料.....

先定義一個byte 陣列,把要傳送的16進位制字元放如陣列,然後傳送就ok.

exp:

sendbuffer(2)=&h30

sendbuffer(3)=&h5f

......

mscomm.output=sendbuffer

7樓:匿名使用者

只要傳送嗎,我這有一份程式,你看看能不能用。這個程式是沒有問題的,把text1中的文字以16進位制的形式傳送出去(不包括轉換16進位制的過程)。

'十六進位制傳送

private sub hexsent()

dim hexchrlen%, hexchr as string, hexcyc%, hexmid as byte, hexmiddle as string, cmdlenth as integer

dim hexchrgroup() as byte, i as integer

hexchrlen = len(text1text)

for hexcyc = 1 to hexchrlen '檢查text1文字框內數值是否合適

hexchr = mid(text1text, hexcyc, 1)

if instr("0123456789abcdefabcdef", hexchr) = 0 then

msgbox "無效的數值,請重新輸入", , "錯誤資訊"

exit sub

end if

next

redim hexchrgroup(1 to hexchrlen \ 2) as byte

for hexcyc = 1 to hexchrlen step 2 '將文字框內數值分成兩個、兩個

i = i + 1

hexchr = mid(text1text, hexcyc, 2)

hexchrgroup(i) = hexmid

next

cmdlenth = 5 + hexchrgroup(5) * 2

mscomm1.rthreshold = cmdlenth

mscomm1.output = hexchrgroup

end sub

8樓:匿名使用者

dim 資料(8) as byte

資料(0) = &h68

資料(1) = &h11

資料(2) = &h22

資料(3) = &h33

資料(4) = &h44

資料(5) = &h55

資料(6) = &h66

資料(7) = &h77

串列埠1.write(資料, 0, 8)

//陣列可以,單個資料就不對

十六進位制AB CD等於多少,十六進位制AB CD分別轉換為二進位制,八進位制,十進位制 麻煩給一下運算過程 謝謝

十六進位制ab cd a相當於10進位制的10,b 11,c 12,d 13,e 14,f 15 ab化為10進位制 ax16 b 10x16 11 171cd化為10進位制 cx16 d 12x16 13 205 ab cd 171 205 376376化為16進位制 376 16 23 8 23...

十六進位制轉二進位制,十六進位制如何轉換為二進位制

灰灰吃瓜 轉換如下 首先把十六進位制數04271544中的每一位數轉換為二進位制數,每個數要分四位,不足四位的前面加零,請看下面演示 0 0000 4 0100 2 0010 7 0111 1 0001 5 0101 4 0100 4 0100 將得出四位二進位制數串連起來就是結果了 所以,十六進位...

C語言二進位制轉十六進位制問題,十六進位制轉換成二進位制

include include int main result 0 結果清零。k 0 表示位權的k清零。k 初始位權為1 b j 0 printf 結果是 for i strlen b 1 i 0 i printf c b i printf return 0 10111111換成10進位制是191,...