使用委托方式處理:
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供新羅網(wǎng)站建設(shè)、新羅做網(wǎng)站、新羅網(wǎng)站設(shè)計(jì)、新羅網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、新羅企業(yè)網(wǎng)站模板建站服務(wù),十余年新羅做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
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進(jìn)制
TextBox3.Text?=?Len(strData)?/?3
End?Sub
vb.net的話
For
Each
sp
As
String
In
My.Computer.Ports.SerialPortNames
cbxport.Items.Add(sp)
Next
vb6.0的話要調(diào)用API查看串口相關(guān)信息存在的注冊表。
HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM
通過讀注冊表的方法獲得串口數(shù)量,當(dāng)然也可以獲得串口號了。
Option
Explicit
Private
Declare
Function
RegOpenKey
Lib
"advapi32.dll
"
Alias
"RegOpenKeyA
"
(ByVal
hKey
As
Long,
ByVal
lpSubKey
As
String,
phkResult
As
Long)
As
Long
Private
Declare
Function
RegQueryInfoKey
Lib
"advapi32.dll
"
Alias
"RegQueryInfoKeyA
"
(ByVal
hKey
As
Long,
ByVal
lpClass
As
String,
lpcbClass
As
Long,
ByVal
lpReserved
As
Long,
lpcSubKeys
As
Long,
lpcbMaxSubKeyLen
As
Long,
lpcbMaxClassLen
As
Long,
lpcValues
As
Long,
lpcbMaxValueNameLen
As
Long,
lpcbMaxValueLen
As
Long,
lpcbSecurityDescriptor
As
Long,
lpftLastWriteTime
As
Long)
As
Long
Private
Const
HKEY_LOCAL_MACHINE
=
H80000002
'
獲得當(dāng)前系統(tǒng)的
COM
口的數(shù)量
Function
GetCOMCount()
As
Integer
Dim
ret
As
Long,
cntCOM
As
Long
RegOpenKey
HKEY_LOCAL_MACHINE,
"HARDWARE\DEVICEMAP\SERIALCOMM
",
ret
RegQueryInfoKey
ret,
"
",
0,
0,
0,
0,
0,
cntCOM,
0,
0,
0,
GetCOMCount
=
cntCOM
End
Function
Private
Sub
Command1_Click()
MsgBox
"您的機(jī)器有
"
GetCOMCount
"
個串口。
",
vbOKOnly,
"串口數(shù)量
"
End
Sub
不是很明白你的題意
strHex = strHex + [String].Format("{0:X2} "
這里的意思是把每個字節(jié)數(shù)據(jù)轉(zhuǎn)換成了十六進(jìn)制,每個字節(jié)占兩個字符
如果你串口收到的4個字節(jié)數(shù)據(jù):43,27,56,200
那么你的結(jié)果是:2B1B38C8
即receivebytes.Text="2B1B38C8"
不足兩位的補(bǔ)0
如果你串口收到的4個字節(jié)數(shù)據(jù):3,27,56,200
那么你的結(jié)果是:031B38C8
即receivebytes.Text="031B38C8"
文章名稱:vb.net串口源碼 vb串口編程
URL地址:http://jinyejixie.com/article34/hephpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、營銷型網(wǎng)站建設(shè)、電子商務(wù)、外貿(mào)網(wǎng)站建設(shè)、建站公司、網(wǎng)站營銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)