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