1樓:匿名使用者
vb6.0mscomm控制元件可以利用oncomm事件連續獲取來自外設傳送的訊號。
基於:1)mscomm控制元件的rthreshold 屬性不為0和恰當的接收**。
2)使用電腦主機板物理com口或pci多串列埠卡上的com口com,這樣的com口是全雙工的,傳送與接收不會衝突。
3)高質量的接收**和符合通訊協議和資料幀規約的接收處理**。
例項**:
private sub form_load()
mscomm1.inputmode = cominputmodebinary '採用二進位制傳輸
mscomm1.inbuffercount = 0 '清空接受緩衝區
mscomm1.outbuffercount = 0 '清空傳輸緩衝區
mscomm1.rthreshold = 1 '產生mscomm事件
mscomm1.inbuffersize = 1024
txtsend = ""
txtsend = ""
txtreceive = ""
text2 = ""
end sub
private sub mscomm1_oncomm() '接收資料
dim strbuff as string
select case mscomm1.commevent
case 2
mscomm1.inputlen = 0
strbuff = mscomm1.input
bytreceived() = strbuff
jieshou
leninput = len(strdata)
text2 = leninput \ 2
'資料處理**
end select
end sub
public function jieshou() '接收資料處理為16進位制
dim i as integer
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
txtreceive = strdata
end function
2樓:萍水e相逢
設定 mscomm1.rthreshold 為10在 oncomm 事件中 處理!
當 rthreshold 為10 時 就接收詳細 請看 msdn 吧
3樓:匿名使用者
通訊突然停住的有幾個原因:
1 串列埠設定了接收長度產生中斷,但長時間內接收緩衝區沒達到產生中斷的資料;
2 文字框字串的總長度超過了64k,文字框不再更新;
3 串列埠引數配置不正確。
試試我下面的程式看還會不會停住吧,我的程式是不間斷接收資料的,不會有停住的可能。
private sub command1_click()
timer1.enabled = true
command1.backcolor = vbgreen
end sub
private sub command2_click()
text1.text = ""
end sub
private sub form_load()
'通訊口初始化:
with mscomm1
.settings = "9600,n,8,2"
.commport = 3
.inputmode = cominputmodebinary
.inbuffercount = 0
.outbuffercount = 0
.rthreshold = 0
.sthreshold = 0
.portopen = true
end with
text1.text = ""
end sub
private sub text1_change()
if len(text1.text) > 10000 then text1.text = ""
end sub
private sub timer1_timer()
'採用輪循法採集資料
dim inx() as byte
dim strtemp as string
dim strtemp1 as string
dim receivedlen as integer
timer1.enabled = false '關閉定時器
if mscomm1.inbuffercount > 0 then
receivedlen = mscomm1.inbuffercount
inx = mscomm1.input
for i = 0 to ubound(inx)
strtemp1 = hex(inx(i))
if len(strtemp1) > 1 then
strtemp = strtemp & strtemp1 & " "
else
strtemp = strtemp & "0" & strtemp1 & " "
end if
next i
text1.text = text1.text & format(second(now), "00") & right(format(str(timer), "0.
00"), 3) & " " & strtemp & vbcrlf
text1.selstart = len(text1.text)
end if
timer1.enabled = true '開啟定時器
label1.caption = now()
end sub
vb怎樣讀取串列埠資料並進行處理?
4樓:萍水e相逢
你這個 不難 吧
2方約定好
傳送 4次,前2次是整數部分,後2次是小數部分那麼以後 不管傳送什麼資料 都 沒有問題了,如 3145 個數 就是 31.45
串列埠通訊的 重點 就是 傳送方 和 接收方 要 協商好資料如何傳送,如何接收、識別 等等
vb 裡字元處理等函式很多
關鍵是 靈活應用
祝你順利
5樓:匿名使用者
vb6.0可使用mscomm控制元件實現串列埠通訊。按通訊協議和資料幀規約接收和處理資料。
mscomm 控制元件通過串列埠傳輸和接收資料,為應用程式提供序列通訊功能。
mscomm 控制元件提供下列兩種處理通訊的方式:
事件驅動通訊是處理序列端**互作用的一種非常有效的方法。在許多情況下,在事件發生時需要得到通知,例如,在 carrier detect (cd) 或
request to send (rts) 線上一個字元到達或一個變化發生時。在這些情況下,可以利用 mscomm 控制元件的 oncomm
事件捕獲並處理這些通訊事件。oncomm 事件還可以檢查和處理通訊錯誤。所有通訊事件和通訊錯誤的列表,參閱 commevent
屬性。在程式的每個關鍵功能之後,可以通過檢查 commevent 屬性的值來查詢事件和錯誤。如果應用程式較小,並且是自保持的,這種方法可能是更可取的。
例如,如果寫一個簡單的**撥號程式,則沒有必要對每接收一個字元都產生事件,因為唯一等待接收的字元是調變解調器的“確定”響應。
儘管 mscomm 控制元件有很多重要的屬性,但首先必須熟悉幾個屬性。
6樓:匿名使用者
建議傳送1583,然後上位機除以100
用vb中的mscomm編個程式讀取串列埠資料
7樓:匿名使用者
option explicit'強制變數宣告
private sub command1_click() '傳送
dim number as integer'定義整型
dim outbyte(0) as byte '定義位元組陣列
number = val(text1.text)'轉為數值型
outbyte(0) = cbyte(number) '轉化為位元組型
mscomm1.outbuffercount = 0 '清空傳送緩衝區
mscomm1.output = outbyte '傳送
end sub'結束
private sub command2_click()'按鈕單擊事件
mscomm1.portopen = false'關閉串列埠
unload form1'解除安裝form1
end sub
private sub form_load()'窗體載入事件
mscomm1.commport = 1 '設定串列埠為com1
mscomm1.settings = "9600,n,8,1" '通訊引數 波特率 奇偶校驗 資料位 停止位
mscomm1.inputmode = cominputmodebinary '二進位制接收
mscomm1.portopen = true '開啟串列埠
mscomm1.inbuffercount = 0 '清空接收緩衝區
mscomm1.rthreshold = 1 '緩衝區中接收到一個字元,就產生一次oncomm事件
end sub
private sub mscomm1_oncomm() '有資料傳送時觸發
dim indata as variant'定義變數
dim arr(0) as byte'定義位元組陣列
select case mscomm1.commevent ''commevent屬性:返回最近的通訊事件或錯誤。
通過對它具體屬性值的查詢,我們就可以獲得通訊事件和通 訊錯誤的完整資訊。當其值是comevreceive時表示接收到資料。
case comevreceive '有接收事件
indata = mscomm1.input '接收到的資料存放到indata裡
arr(0) = ascb(indata) '返回indata的值
text2.text = arr(0)'在text2中顯示資料
mscomm1.inbuffercount = 0' 清空接收緩衝區
end select
end sub
在窗體中新增
text1顯示傳送資料,
text2顯示接收資料,
command1傳送按鈕,
mscomm1通訊控制元件,
該看懂了吧,再看不懂我沒辦法了,
vb如何讀取檔案的內容,並且輸出
你好 1 對於txt檔案,用什麼語言都不能實現任意10條內容,只能從頭開始讀取 但可能有變通的辦法 先產生乙個隨機數,開啟txt檔案,從頭開始讀取資料,當已讀取的資料 隨機數時,開始將讀取的資料放到變數中,連續存放10個 2 用office的word文件控制項的dll鏈結到vb中,在vb中建立乙個w...
如何實現基於VB的PC機與DSP的串列埠通訊
上位機程式指的是pc上用寫的獨立串列埠控制程式,需要了解pc下的bios函式,下位機就是dsp的主控程式,他倆是獨立的,聯絡就是彼此之間的串列埠通訊碼。硬體連線,然後程式設計 注意 dsp的串列埠 可能 與 電腦串列埠 電平不一致,需要轉換請看 武漢鴻偉光電 e232ttl rs232 ttl電平無...
vb如何把選中的access資料進行修改
1 對於選中的記錄修改其字段值,然後更新記錄集即可。2 工具 vb6 3 用adodc連線資料庫,用find方法 也可以使用其它方法 選中記錄,用fields value修改字段值,用update更新記錄集,示例如下 private sub form load adodc1.connectionst...