VB如何連續讀取串列埠資料,vb怎樣讀取串列埠資料並進行處理?

2021-09-06 02:08:16 字數 5396 閱讀 1380

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