1樓:哈哈
首先必須保證電腦上有物理串列埠com17,才能開啟。雖然串列埠助手顯示出com17,但卻打不開,才顯示出乙個亂碼符號。
你的電腦怎麼會有com17呢?就算是虛擬串列埠,也不會排到com17。
再說了,用串列埠助手是為了除錯串列埠通訊的,用**有什麼用,為什麼非要顯示乙個**呢,與串列埠通訊毫無關係。網上的串列埠助手多的很。換個串列埠助手試試嗎。
2樓:匿名使用者
如果有確定的接收位元組長度,設定rthreshold等於接收位元組長度有利接收正確率提高.由於你的幾個下位機返回資料報位元組不等長,你可根據定址命令發出前預先改變rthreshold值來保證接收返回符合要求的位元組長度.
不然你接收多少位元組符合你改發下一定址命令呢?程式**處理難度較高.
實際下位機返回資料報可在其**中補一定其它位元組來達到等長,從而使接收**變得簡潔.
等長接收資料後可對接收處理清0來等待下次接收.
補充:假如下位機的返回資料按位址號能確定接收位元組長度,下列**可實現接收不等長資料,僅供參考:
private sub mscomm1_oncomm()
on error resume next
dim bytreceived() as byte
dim strbuff as string
dim strdata as string
dim i as integer
dim x as integer
select case mscomm1.commevent
case 2
mscomm1.inputlen = 0
strbuff = mscomm1.input
bytreceived() = strbuff
for i = 0 to ubound(bytreceived)
if len(hex(bytreceived(i))) = 1 then
strdata = strdata & "0" & hex(bytreceived(i))
else
strdata = strdata & hex(bytreceived(i))
end if
next
text3 = text3 + strdata
if left(strdata, 2) = "00" and len(strdata) = 8 then
text1(0).text = left(strdata, 8)
call dataclear
elseif left(strdata, 2) = "01" and len(strdata) = 10 then
text1(1).text = left(strdata, 10)
call dataclear
end if
end select
end sub
public sub dataclear()
mscomm1.outbuffercount = 0 '清空傳送緩衝區
mscomm1.inbuffercount = 0
text3 = ""
end sub
private sub form_load()
mscomm1.commport = 1 'com埠
mscomm1.settings = "9600,n,8,1"
mscomm1.inputmode = cominputmodebinary '採用二進位制傳輸
mscomm1.inbuffercount = 0 '清空接受緩衝區
mscomm1.outbuffercount = 0 '清空傳輸緩衝區
'mscomm1.sthreshold = 1 '如果傳輸緩衝區完全空時產生mscomm事件
mscomm1.rthreshold = 1 '不產生mscomm事件
mscomm1.portopen = true
text3 = "" '開啟埠
end sub
VB串列埠通訊求助,VB串列埠通訊求助
編了乙個小函式,希望能幫你,下面是乙個測試程式function bin2dec byval bin as string as long bin trim bin bitnum len bin for i bitnum to 1 step 1bin2dec bin2dec 2 bitnum i val...
什麼是串列埠通訊啊,什麼是串列埠通訊?
串列埠是計算機上一種非常通用裝置通訊的協議 不要與通用序列匯流排universal serial bus或者usb混淆 大多數計算機包含兩個基於rs232的串列埠。串列埠同時也是儀器儀表裝置通用的通訊協議 很多gpib相容的裝置也帶有rs 232口。同時,串列埠通訊協議也可以用於獲取遠端採集裝置的資...
pc機與微控制器串列埠通訊問題利用串列埠通訊助手將字串發給微控制器微控制器返回字串到串列埠通訊助手
問題出在你傳送時關掉中斷,因為丟掉了資料造成的,解決的辦法是 延時一段時間等待接收完畢後再傳送,比如檢測到有接收資料後,延時10毫秒,之後再傳送回pc。 掃地走人 給你指出幾處明顯的錯誤。1.resv沒有最大值的限定,這樣你的程式在執行的時候ch resv 會指向不明地址,因為ch最大為10個位元組...