應(yīng)該是你的轉(zhuǎn)換格式不正確,下面代碼就是將文本框中以一個(gè)空格隔開(kāi)的十六進(jìn)制轉(zhuǎn)為字節(jié)的代碼,文本框中數(shù)字格式為:01 02 03
創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括湘陰網(wǎng)站建設(shè)、湘陰網(wǎng)站制作、湘陰網(wǎng)頁(yè)制作以及湘陰網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,湘陰網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到湘陰省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
Dim TestArray() As String = Split(TextBox1.Text)
Dim hexBytes() As Byte
ReDim hexBytes(TestArray.Length - 1)
Dim i As Integer
For i = 0 To TestArray.Length - 1
hexBytes(i) = Val("h" TestArray(i))
Next
SerialPort.Write(hexBytes, 0, hexBytes.Length)
如果有問(wèn)題可以再聯(lián)系。
0x3F表示字符"?"
估計(jì)是你的發(fā)送指令不正確,設(shè)備返回你發(fā)送的指令后面加''?""
上面的代碼看不出問(wèn)題,如果初始化串口控件時(shí)已經(jīng)注冊(cè)了AxMSComm1_OnComm,有數(shù)據(jù)接收應(yīng)該能觸發(fā),至于為什么沒(méi)有觸發(fā),要看看你的接收方是否已經(jīng)收到你的發(fā)出指令,是否已經(jīng)有響應(yīng)數(shù)據(jù)回發(fā)。
建議分開(kāi)調(diào)試,用一個(gè)通用的串口助手,如格西烽火串口助手之類的,分別調(diào)試你的上位機(jī)和下位機(jī)。格西烽火串口助手能輕松的定制如你上面的發(fā)送數(shù)據(jù)。
你定義的委托需要帶參數(shù)才行,DataReceived事件中沒(méi)有接收數(shù)據(jù)代碼,下面的代碼經(jīng)測(cè)試可用
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
會(huì)用C,就用C做.
會(huì)用 dehphi7 就用 dehphi7 做,
最后才考慮用 VB 做.
VB做這些底層的東西,有點(diǎn)難度.
我也是自己摸索開(kāi)發(fā)出來(lái)的每一款VBtoCOM通訊,有具體的思路如下:
給你推薦一個(gè)工具“com串口測(cè)試工具 ComTone V1.0 中文綠色版”
1、打開(kāi)你的噪音計(jì)的測(cè)試軟件,調(diào)整好串口號(hào)、通訊頻率等等,我用溫度計(jì)舉例說(shuō)明。
開(kāi)始查詢后有返回?cái)?shù)值,這個(gè)Receive:就是返回的數(shù)值000304012200004b05,
打開(kāi)串口監(jiān)視精靈,監(jiān)視軟件的com口事件:
這里面的Write是測(cè)試軟件發(fā)出的查詢指令,read是設(shè)備返回的數(shù)據(jù)指令
Private?Sub?Command1_Click()?'發(fā)送指令
If?Not?MSComm1.PortOpen?Then
MSComm1.CommPort?=?7?'串口為7
MSComm1.Settings?=?"9600,n,8,1"
MSComm1.InBufferCount?=?0?'清除接收緩沖區(qū)
MSComm1.OutBufferCount?=?0?'清除發(fā)送緩沖區(qū)
MSComm1.InputMode?=?comInputModeBinary?'二進(jìn)制接收
MSComm1.InputLen?=?0?'讀取接收緩沖區(qū)的所有字符
MSComm1.PortOpen?=?True??'打開(kāi)串口
MSComm1.RTSEnable?=?False?'置為發(fā)送狀態(tài)
End?If
Dim?pu()?As?Byte
Dim?strdata??As?String
Dim?crc_js()?As?Byte
ReDim?pu(7)??'這個(gè)數(shù)組是8位的查詢指令
pu(0)?=?"H00"?'溫度計(jì)地址
pu(1)?=?"H03"?'查詢指令
pu(2)?=?"H00"?'2、3為溫度計(jì)地址
pu(3)?=?"H00"?'2、3為溫度計(jì)地址
pu(4)?=?"H00"?'4、5為讀取寄存器長(zhǎng)度
pu(5)?=?"H02"?'4、5為讀取寄存器長(zhǎng)度
pu(6)?=?"HC5"?'6、7為CRC校驗(yàn)碼?因?yàn)槲覀儾恢涝O(shè)備的CRC校驗(yàn)規(guī)則所以用測(cè)試軟件產(chǎn)生的校驗(yàn)碼
pu(7)?=?"HDA"?'6、7為CRC校驗(yàn)碼
MSComm1.Output?=?pu
'不做任何事情,僅僅允許其它應(yīng)用程序處理它們的事件。
DoEvents
MSComm1.InBufferCount?=?0?'清除接收緩沖區(qū)
MSComm1.RThreshold?=?9?'所要接收的數(shù)據(jù)長(zhǎng)度,我們通過(guò)COM檢測(cè)精靈看到了回傳數(shù)據(jù)一共是9字節(jié)
MSComm1.RTSEnable?=?True?'轉(zhuǎn)為接收狀態(tài)
End?Sub
Private?Sub?Command2_Click()
Timer1.Enabled?=?False
End?Sub
Private?Sub?Form_Unload(Cancel?As?Integer)
If?MSComm1.PortOpen?Then
MSComm1.PortOpen?=?False??'關(guān)閉串口
End?If
Timer1.Enabled?=?False
End?Sub
Private?Sub?MSComm1_OnComm()?'COM事件
Dim?PA()?As?Byte
Dim?PB?As?String
Select?Case?MSComm1.CommEvent
Case?comEvReceive
MSComm1.InputLen?=?0?'讀取接收緩沖區(qū)的所有字符
PB?=?MSComm1.Input
PA()?=?PB
For?i?=?0?To?UBound(PA())
'Print?"PA("??i??")";?PA(i)
If?Len(Hex(PA(i)))?=?1?Then
strdata?=?strdata??"0"??Hex(PA(i))
Else
strdata?=?strdata??Hex(PA(i))
End?If
Next
'回傳的數(shù)據(jù)串:000304012600000AC4,這9字節(jié)根據(jù)通訊協(xié)議我們進(jìn)行拆分
'00為協(xié)議內(nèi)回傳機(jī)號(hào),03為讀命令,04為返回的數(shù)據(jù)長(zhǎng)度?0126?為我要的溫度數(shù)據(jù)為十六進(jìn)制表達(dá),下面我進(jìn)行數(shù)據(jù)處理
wd?=?CLng("H"??Left(Right(strdata,?12),?4))?/?10??"℃"???'根據(jù)通訊協(xié)議換算成溫度
Text1?=?Text1??vbCrLf??strdata??"??"??wd
strdata?=?""
MSComm1.PortOpen?=?False??'關(guān)閉串口
End?Select
End?Sub
Private?Sub?Timer1_Timer()
Call?Command1_Click
End?Sub
這是我的測(cè)試結(jié)果。
下面是通訊協(xié)議
這個(gè)是我的軟件用檢測(cè)精靈檢測(cè)的結(jié)果
網(wǎng)站欄目:包含vb.net串口助手實(shí)例的詞條
URL鏈接:http://jinyejixie.com/article34/dodoepe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)、網(wǎng)站營(yíng)銷、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站設(shè)計(jì)公司、企業(yè)建站、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)