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

時間 2021-09-06 02:07:32

1樓:萍水e相逢

你這個 不難 吧

2方約定好

傳送 4次,前2次是整數部分,後2次是小數部分那麼以後 不管傳送什麼資料 都 沒有問題了,如 3145 個數 就是 31.45

串列埠通訊的 重點 就是 傳送方 和 接收方 要 協商好資料如何傳送,如何接收、識別 等等

vb 裡字元處理等函式很多

關鍵是 靈活應用

祝你順利

2樓:匿名使用者

vb6.0可使用mscomm控制項實現串列埠通訊。按通訊協議和資料幀規約接收和處理資料。

mscomm 控制項通過串列埠傳輸和接收資料,為應用程式提供序列通訊功能。

mscomm 控制項提供下列兩種處理通訊的方式:

事件驅動通訊是處理序列端**互作用的一種非常有效的方法。在許多情況下,在事件發生時需要得到通知,例如,在 carrier detect (cd) 或

request to send (rts) 線上乙個字元到達或乙個變化發生時。在這些情況下,可以利用 mscomm 控制項的 oncomm

事件捕獲並處理這些通訊事件。oncomm 事件還可以檢查和處理通訊錯誤。所有通訊事件和通訊錯誤的列表,參閱 commevent

屬性。在程式的每個關鍵功能之後,可以通過檢查 commevent 屬性的值來查詢事件和錯誤。如果應用程式較小,並且是自保持的,這種方法可能是更可取的。

例如,如果寫乙個簡單的**撥號程式,則沒有必要對每接收乙個字元都產生事件,因為唯一等待接收的字元是數據機的「確定」響應。

儘管 mscomm 控制項有很多重要的屬性,但首先必須熟悉幾個屬性。

3樓:匿名使用者

建議傳送1583,然後上位機除以100

vb如何連續讀取串列埠資料

4樓:匿名使用者

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

5樓:萍水e相逢

設定 mscomm1.rthreshold 為10在 oncomm 事件中 處理!

當 rthreshold 為10 時 就接收詳細 請看 msdn 吧

6樓:匿名使用者

通訊突然停住的有幾個原因:

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

怎麼用matlab讀取串列埠資料?

7樓:碧血玉葉花

s=serial('com1');//設定串列埠

set(s,'baudrate',9600,'stopbits',1,'parity','none','databits',8,'inputbuffersize',255);

//串列埠的一些設定,注意,'none'有引號,有些值如inputbuffersize只能在串列埠關閉時才能設定,

//所以不建議先開啟串列埠

fopen(s)//開啟串列埠

fwrite(s,100);//打100(十進位制)寫入串列埠也可以是一維陣列,可以用示波器測com的第3個引腳

a=fread(s);

//讀出串列埠資料,由於matlab是順序執行的,所以這裡讀不到100,

//程式會卡在這裡直到讀到資料為止,好像是存完buffer吧,這裡忘了。

//自己從com的第2個引腳給資料試試看就清楚了

fclose(s);//關閉串列埠

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

vb6.0mscomm控制元件可以利用oncomm事件連續獲取來自外設傳送的訊號。基於 1 mscomm控制元件的rthreshold 屬性不為0和恰當的接收 2 使用電腦主機板物理com口或pci多串列埠卡上的com口com,這樣的com口是全雙工的,傳送與接收不會衝突。3 高質量的接收 和符合通...

如何通過串列埠讀取plc的資料,怎麼用matlab讀取串列埠資料?

c 語言也帶有串列埠通訊控制項的。只要把微軟的串列埠通訊控制項新增進去,就可以簡單的程式設計了。 你在做資料接收的時候input返回是根據你需要的資料型別自動轉換的,如果你要位元組陣列那麼返回位元組陣列,你要long返回long,但要注意的是,返回位元組陣列的時候你不能把位元組陣列定義成固定大小的陣...

VB讀取資料庫多條資料賦值給陣列

dim pubconn as new adodb.connection dim strconn as string with pubconn if state adstateclosed then strconn provider sqloledb user id sa password sa da...