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,...