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

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

1樓:匿名使用者

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

2樓:

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

3樓:滿以柳

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

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

exp:

sendbuffer(2)=&h30

sendbuffer(3)=&h5f

......

mscomm.output=sendbuffer

4樓:匿名使用者

只要傳送嗎,我這有一份程式,你看看能不能用。這個程式是沒有問題的,把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

5樓:匿名使用者

dim 資料(8) as byte

資料(0) = &h68

資料(1) = &h11

資料(2) = &h22

資料(3) = &h33

資料(4) = &h44

資料(5) = &h55

資料(6) = &h66

資料(7) = &h77

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

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

vb 中怎樣傳送十六進位制資料

6樓:匿名使用者

**如下:

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

7樓:小陳

可以參考以下貼:

詳細的說吧,用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

8樓:匿名使用者

參閱

補充

bytsend(1) = &h0

bytsend(2) = &h0

bytsend(3) = &h0

bytsend(4) = &hff

bytsend(5) = &he

bytsend(6) = &h9a

mscomm1.output = bytsend

vb如何顯示十六進位制資料,vb如何顯示十六進位制資料

1 vb使用 h字首拼接十六進位制字串,可作為16進位制數直接使用。適當範圍內的數字,字首以 h,可以直接表示十六進位制數字。例如,十六進位制表示法的 h10 代表十進位制的 16。2 使用hex 函式可返回代表十六進位制數值的 string。hex 函式示例 本示例使用 hex 函式來得到某數值的...

vb程式設計將十進位制數轉換成十六進位制數

刺友互 1 執行 microsoft visual studio 2010 2 vs 的視窗彈出後,找到選單欄,滑鼠左鍵單擊標題為 檔案 f 的選項。3 在彈出的列表中滑鼠左鍵單擊標題為 新建專案 p 的項。4 在彈出的標題為 新建專案 滑鼠左鍵選擇標題為 visual basic 項,在選擇標題為...

十六進位制轉換為二進位制怎麼操作,十六進位制轉換為二進位制怎麼操作

最簡單的方法就是,點選開始選單 程式 附件 計算器 選擇科學計算型 檢視科學計算型 選擇十六進位制 輸入數字 再點選二進位制就完事了。若需要手算,請看樓上的回答。舉例說明 首先把十六進位制數中的每一位數轉換為二進位制數,每個數要分四位,不足四位的前面加零,請看下面演示 十六進位制數04271544轉...