串口條碼槍vb.net 串口條碼槍掃不出碼

VB.net 串口傳送回數(shù)據(jù)處理的問題

使用委托方式處理:

創(chuàng)新互聯(lián)建站10多年成都企業(yè)網(wǎng)站定制服務(wù);為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計及高端網(wǎng)站定制服務(wù),成都企業(yè)網(wǎng)站定制及推廣,對石牌坊等多個方面擁有豐富設(shè)計經(jīng)驗的網(wǎng)站建設(shè)公司。

Public?Class?Form1

Dim?mSTR?As?String

Dim?strData?As?String

Dim?strDat?As?String

Dim?mRecvByte()?As?Byte

Dim?Hexsj?As?String

Dim?form2?As?Form

Private?Sub?SerialPort1_DataReceived(ByVal?sender?As?Object,?ByVal?e?As?System.IO.Ports.SerialDataReceivedEventArgs)?Handles?SerialPort1.DataReceived

Dim?mSize?As?Integer?=?Me.SerialPort1.BytesToRead

ReDim?mRecvByte(mSize?-?1)

SerialPort1.Read(mRecvByte,?0,?mSize)

BeginInvoke(New?EventHandler(AddressOf?ONMLoadA),?SerialPort1.BytesToRead())?'使用委托方式顯示接收到的字符串

End?Sub

Sub?ONMLoadA(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?'委托

strDat?=?""

TextBox1.Text?=?""

Dim?i?As?Integer

For?i?=?0?To?UBound(mRecvByte)?'mSize?-?1

strData?=?strData??IIf(mRecvByte(i)??15,?Hex(mRecvByte(i)),?"0"??Hex(mRecvByte(i)))??"?"

Next

Dim?sj?As?Byte

For?i?=?1?To?Len(strData)?Step?3?'處理為ASCII字符

sj?=?Val("H"??Mid(strData,?i,?2))

If?sj??32?Or?sj??128?Then?'當(dāng)接收字節(jié)中有Chr(0)時,其后字符被切割

strDat?=?strDat??"."

Else

strDat?=?strDat??Chr(sj)

End?If

Next

TextBox1.Text?=?strDat?'顯示字符

TextBox2.Text?=?strData?'顯示為16進制

TextBox3.Text?=?Len(strData)?/?3

End?Sub

VB.NET中,串口接收數(shù)大量數(shù)據(jù)時如果執(zhí)行SerialPort.close動作,程序會卡死在這里

對同一個串口的操作應(yīng)該放在單個線程里,你的程序應(yīng)該將串口接收和串口關(guān)閉的執(zhí)行都放在一個線程里進行,這樣在接收數(shù)據(jù)的間隙就可以正常執(zhí)行close動作。而不會造成兩個線程都在操作串口。

VB。net 串口接收數(shù)據(jù),用串口調(diào)試助手發(fā)數(shù)據(jù),只有第一次可以正常接收

你定義的委托需要帶參數(shù)才行,DataReceived事件中沒有接收數(shù)據(jù)代碼,下面的代碼經(jīng)測試可用

Delegate Sub SetTextCallback(ByVal InputString As String)

Private Sub ShowString(ByVal comData As String)

txt_Rect.Text += comData '將收到的數(shù)據(jù)入接收文字框中

txt_Rect.SelectionStart = txt_Rect.Text.Length

txt_Rect.ScrollToCaret()

End Sub

Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived

Dim inData As String = SerialPort1.ReadExisting

Dim d As New SetTextCallback(AddressOf ShowString)

BeginInvoke(d, inData)

End Sub

vb.net 串口接收問題

0x3F表示字符"?"

估計是你的發(fā)送指令不正確,設(shè)備返回你發(fā)送的指令后面加''?""

VB如何獲取USB口條碼槍的掃描數(shù)據(jù)?

這么跟你說吧,條碼掃描器就相當(dāng)于自動打字的鍵盤一樣,會把掃描到的條碼自動轉(zhuǎn)換為數(shù)字然后發(fā)送到電腦中。你打開記事本,然后掃描一些條碼試試就知道了。

你的條碼掃描器的說明書應(yīng)該還有各種設(shè)置方法的說明的,可以給掃描器增添各種功能,比如在條碼數(shù)字的后面增加一個回車鍵,這在編程中比較有用。

VB.NET中如何處理串口通信接收的數(shù)據(jù)?

你可以預(yù)先約定一個截止附,讀取的字節(jié)統(tǒng)統(tǒng)放到緩存區(qū)里,直到讀到截止附再處理、顯示。

網(wǎng)頁題目:串口條碼槍vb.net 串口條碼槍掃不出碼
分享路徑:http://www.muchs.cn/article2/dosecoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、定制開發(fā)云服務(wù)器、服務(wù)器托管網(wǎng)站營銷、App設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司