串口通信,,就是RS-232/RS-485通信,,要求通信的雙方波特率等通信格式一樣才可以通信成功??墒窃谠S多情況下,,兩種不同格式比如不同波特率的串口也要相互通信,這就必須進(jìn)行串口波特率等格式的轉(zhuǎn)換,。本文介紹了如何用純軟件實現(xiàn)串口波特率的轉(zhuǎn)換,。
如果串口設(shè)備1與串口設(shè)備2之間需要通信,但是它們之間的通信波特率不一樣,。純軟件實現(xiàn)串口波特率的轉(zhuǎn)換的原理就是利用計算機(jī)的兩個串口,,稱為串口A和串口B,分別設(shè)置為不同的波特率,、不同的校驗位,、不同的數(shù)據(jù)位和不同的停止位。其中串口A按照串口A設(shè)置的波特率等格式接收數(shù)據(jù)立即從串口B按照串口B設(shè)置的波特率等格式發(fā)送出去,,同樣串口B以串口B設(shè)置波特率等格式收到的數(shù)據(jù)立即從串口A以串口A設(shè)置的波特率等格式發(fā)送出去,。
設(shè)置好串口格式后,,按“打開串口”。注意A和B兩個串口都要打開,。成功打開串口后會在“打開串口”按鈕的旁邊顯示紅色的圓圈,。“打開串口”按鈕下面為“清空計數(shù)”按鈕和本串口接收和發(fā)送數(shù)據(jù)的個數(shù)。正常情況下,,由于串口A接收到的數(shù)據(jù)都立即發(fā)送給了串口B,,所以串口A接收的計數(shù)與串口B發(fā)送的計數(shù)時一樣的。同理串口B接收的計數(shù)與串口A發(fā)送的計數(shù)時一樣的,。
串口波特率轉(zhuǎn)換軟件的界面右邊為測試和檢測部分,,正常工作時不需要操作。按“手動發(fā)送A串口”可以測試串口A的設(shè)置是否生效,,是否可以正確與設(shè)備1通信,,接收到的數(shù)據(jù)顯示在“接收區(qū)A”框內(nèi)。串口B的部分是同樣的功能,。右下角有“字符格式”和“十六進(jìn)制”的選項,,默認(rèn)為“字符格式”。當(dāng)選擇“十六進(jìn)制”時,本軟件可以實現(xiàn)16進(jìn)制數(shù)據(jù)的格式轉(zhuǎn)換,,特別適合MODBUS等工控軟件,。
如果在軟件界面上只打開一個串口,比如串口A或者串口B,,那么本軟件就是一個功能齊全的串口調(diào)試助手軟件,,可以進(jìn)行每個串口的設(shè)置、數(shù)據(jù)收發(fā)等,。
本軟件用Visual Basic軟件編寫,,串口用MSCOMM控件實現(xiàn)。核心功能就是將Mscomm1接收的數(shù)據(jù)立即送到Mscomm2的發(fā)送區(qū),。難點在于對16進(jìn)制數(shù)據(jù)的轉(zhuǎn)換處理,。
Mscomm的核心代碼如下:
Private Sub MSComm1_OnComm()
將計算機(jī)的串口A接設(shè)備1,串口A的通信波特率設(shè)置為設(shè)備1的波特率,、校驗位,、數(shù)據(jù)位和停止位。將計算機(jī)的串口B接設(shè)備2,,串口B的通信波特率設(shè)置為設(shè)備2的波特率,、校驗位、數(shù)據(jù)位和停止位,。計算機(jī)必須至少有兩個RS-232串口,,擴(kuò)展串口可以采用USB-串口轉(zhuǎn)換器等。這樣就實現(xiàn)了串口設(shè)備1與串口設(shè)備2之間的通信,。
串口波特率轉(zhuǎn)換軟件的界面如圖,。左邊分別是兩個串口的設(shè)置框,分別可以設(shè)置COM口的號碼,、波特率,、校驗位、數(shù)據(jù)位,、停止位,,默認(rèn)的格式為(9600,N,8,1),??梢赃x擇的COM口號碼為1到16號。COM串口號可以從操作系統(tǒng)的“設(shè)備管理器”只能夠的“端口”看到,。波特率的可選擇范圍為:256000,、128000,、115200,、57600、38400,、28800、19200,、14400,、9600、 4800,、2400,、1200、600,。校驗位可選擇:n(無),、o(偶)、e(奇),。數(shù)據(jù)位可選擇:8,、7、6,、5,、4。停止位可選擇1和0,。