串口波特率轉換的純軟件實(shí)現
如果串口設備1與串口設備2之間需要通信,但是它們之間的通信波特率不一樣。純軟件實(shí)現串口波特率的轉換的原理就是利用計算機的兩個(gè)串口,稱(chēng)為串口A(yíng)和串口B,分別設置為不同的波特率、不同的校驗位、不同的數據位和不同的停止位。其中串口A(yíng)按照串口A(yíng)設置的波特率等格式接收數據立即從串口B按照串口B設置的波特率等格式發(fā)送出去,同樣串口B以串口B設置波特率等格式收到的數據立即從串口A(yíng)以串口A(yíng)設置的波特率等格式發(fā)送出去。

將計算機的串口A(yíng)接設備1,串口A(yíng)的通信波特率設置為設備1的波特率、校驗位、數據位和停止位。將計算機的串口B接設備2,串口B的通信波特率設置為設備2的波特率、校驗位、數據位和停止位。計算機必須至少有兩個(gè)RS-232串口,擴展串口可以采用USB-串口轉換器等。這樣就實(shí)現了串口設備1與串口設備2之間的通信。

串口波特率轉換軟件的界面如圖。左邊分別是兩個(gè)串口的設置框,分別可以設置COM口的號碼、波特率、校驗位、數據位、停止位,默認的格式為(9600,N,8,1)??梢赃x擇的COM口號碼為1到16號。COM串口號可以從操作系統的“設備管理器”只能夠的“端口”看到。波特率的可選擇范圍為:256000、128000、115200、57600、38400、28800、19200、14400、9600、4800、2400、1200、600。校驗位可選擇:n(無(wú))、o(偶)、e(奇)。數據位可選擇:8、7、6、5、4。停止位可選擇1和0。
設置好串口格式后,按“打開(kāi)串口”。注意A和B兩個(gè)串口都要打開(kāi)。成功打開(kāi)串口后會(huì )在“打開(kāi)串口”按鈕的旁邊顯示紅色的圓圈。“打開(kāi)串口”按鈕下面為“清空計數”按鈕和本串口接收和發(fā)送數據的個(gè)數。正常情況下,由于串口A(yíng)接收到的數據都立即發(fā)送給了串口B,所以串口A(yíng)接收的計數與串口B發(fā)送的計數時(shí)一樣的。同理串口B接收的計數與串口A(yíng)發(fā)送的計數時(shí)一樣的。
串口波特率轉換軟件的界面右邊為測試和檢測部分,正常工作時(shí)不需要操作。按“手動(dòng)發(fā)送A串口”可以測試串口A(yíng)的設置是否生效,是否可以正確與設備1通信,接收到的數據顯示在“接收區A”框內。串口B的部分是同樣的功能。右下角有“字符格式”和“十六進(jìn)制”的選項,默認為“字符格式”。當選擇“十六進(jìn)制”時(shí),本軟件可以實(shí)現16進(jìn)制數據的格式轉換,特別適合MODBUS等工控軟件。
如果在軟件界面上只打開(kāi)一個(gè)串口,比如串口A(yíng)或者串口B,那么本軟件就是一個(gè)功能齊全的串口調試助手軟件,可以進(jìn)行每個(gè)串口的設置、數據收發(fā)等。
本軟件用Visual Basic軟件編寫(xiě),串口用MSCOMM控件實(shí)現。核心功能就是將Mscomm1接收的數據立即送到Mscomm2的發(fā)送區。難點(diǎn)在于對16進(jìn)制數據的轉換處理。
Mscomm的核心代碼如下:
Private Sub MSComm1_OnComm()
Dim BytReceived() As Byte
Dim strBuff As String
Dim i As Integer
select Case MSComm1.CommEvent 事件發(fā)生
Case 2
MSComm1.InputLen = 0 讀入緩沖區全部?jì)热?/div>
strBuff = MSComm1.Input讀入到緩沖區
If MSComm1.InputMode = comInputModeBinary Then
BytReceived() = strBuff如果是二進(jìn)制接收模式則進(jìn)行數據處理,否則直接顯示字符串
For i = 0 To UBound(BytReceived)
If Len(Hex(BytReceived(i))) = 1 Then
strData = strData & "0" & Hex(BytReceived(i)) & " "
如果只有一個(gè)字符,則前補0,如F顯示0F,最后補空格
Else 方便顯示觀(guān)察如:00 0F FE
strData = strData & Hex(BytReceived(i)) & " "
End If
Next
Text1 = strData
Call hexSend2 發(fā)送一個(gè)16進(jìn)制
strData = ""
Else
Text1 = Text1 & strBuff
If MSComm2.PortOpen = False Then
MsgBox "請打開(kāi)串口B"
End If
On Error GoTo uerror3
MSComm2.Output = strBuff
Label14.Caption = Label14.Caption + Len(strBuff) 發(fā)送計數
End If
End Select
uerror3:
End Sub
本文介紹的串口波特率轉換的純軟件方法和程序,對不同格式之間的串口通信具有一定的使用價(jià)值。本軟件不僅僅實(shí)現了波特率的轉換,還同時(shí)實(shí)現了校驗位、數據位和停止位的轉換。文中介紹的軟件可以從波仕電子的網(wǎng)站下載。純軟件波特率轉換的不足之處在于占用了一臺計算機,并且必須配有兩個(gè)專(zhuān)門(mén)用于波特率轉換的串口。如果要實(shí)現方便簡(jiǎn)單的波特率轉換,還是要用具有雙串口的單片機或者FPGA。通過(guò)對單片機或者FPGA的兩個(gè)串口進(jìn)行波特率等格式的設置,而兩個(gè)串口在內部進(jìn)行數據透明傳輸。這種產(chǎn)品就是硬件波特率轉換器,我們將以另外文章《串口波特率轉換的純硬件實(shí)現》予以介紹。
關(guān)鍵詞:
串口波特率轉換純軟
相關(guān)推薦
技術(shù)專(zhuān)區
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線(xiàn)
- 開(kāi)關(guān)電源
- 單片機
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開(kāi)發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機控制
- 藍牙
- PLC
- PWM
- 汽車(chē)電子
- 轉換器
- 電源管理
- 信號放大器
評論