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

2021-09-06 02:07:13 字數 5396 閱讀 3845

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讀取access資料

在data1已經有資料的情況下 欄位名 或。取第一個欄位的值。怎麼用vb做的access連線資料庫 通過資料物件會資料控制元件連線access資料庫。基於adodc控制元件和datagrid控制元件的靈活應用。具體做法 新建工程時選資料工程,此時vb6整合除錯環境左邊工具箱內已載入了有關資料庫程式設計必須的控制元件。然...

怎麼串列埠通訊讀取串列埠資料,如何獲取串列埠資料

如果是電腦串列埠,首先串列埠線要連線到rs232晶片,然後把232的輸出,txd.rxd等連線到微控制器或其他ttl訊號端裝置。如何獲取串列埠資料 首先,你可以利用串列埠監聽工具,比如accessport,來監聽串列埠的互動資料,分析它每條資料的格式及涵義,然後程式設計模擬其收發流程,逐步實驗 1 ...

vb 如何讀取和建立文字檔案,VB 怎麼讀取和修改TXT文字檔案的內容?

文件裡每行要求幾個字元?vb 怎麼讀取和修改txt文字檔案的內容?樓上說的已經很詳細了 vb6 怎麼實現 建立txt檔案和對該檔案進行讀寫操作 在vb中如何新建 開啟一個文字檔案 open d 123.txt for output as 1 開啟一個文字檔案,如果不存在就自動建立 print 1,要...