佳工机电网 在线工博会 我的佳工网 手机版 English
关键字  
  选择展区 >>
您的位置: 首页 > 工业自动化展区 > 数据采集/无线通讯展厅 > 产品库 > 串口扩展器 > 技术论文 > 正文 产品库 会展 人才 帮助 | 注册 登录  
数据采集/无线通讯
 按行业筛选
 按产品筛选
查看本类全部文章
e展厅 产品库 最新动态 技术文章 企业目录 资料下载 视频/样本 反馈/论坛
  技术应用 | 基础知识 | 外刊文摘 | 业内专家 | 文章点评 投稿 发表科技文章 
武汉波仕电子有限公司
武汉波仕电子有限公司 (编号 2343) http://www.bosika.com
公司介绍 | 产品与服务 | 新闻 | 技术文章 | 联系方式
串口波特率转换的纯软件实现
作者:武汉波仕电子有限公司
欢迎访问e展厅
展厅
6
数据采集/无线通讯展厅
通讯卡, 数据采集卡, 无线通讯模块, 远程监控系统, RFID, 信号隔离器, 转换器...
串口通信,就是RS-232/RS-485通信,要求通信的双方波特率等通信格式一样才可以通信成功。可是在许多情况下,两种不同格式比如不同波特率的串口也要相互通信,这就必须进行串口波特率等格式的转换。本文介绍了如何用纯软件实现串口波特率的转换。

如果串口设备1与串口设备2之间需要通信,但是它们之间的通信波特率不一样。纯软件实现串口波特率的转换的原理就是利用计算机的两个串口,称为串口A和串口B,分别设置为不同的波特率、不同的校验位、不同的数据位和不同的停止位。其中串口A按照串口A设置的波特率等格式接收数据立即从串口B按照串口B设置的波特率等格式发送出去,同样串口B以串口B设置波特率等格式收到的数据立即从串口A以串口A设置的波特率等格式发送出去。

newmaker.com

将计算机的串口A接设备1,串口A的通信波特率设置为设备1的波特率、校验位、数据位和停止位。将计算机的串口B接设备2,串口B的通信波特率设置为设备2的波特率、校验位、数据位和停止位。计算机必须至少有两个RS-232串口,扩展串口可以采用USB-串口转换器等。这样就实现了串口设备1与串口设备2之间的通信。

newmaker.com

串口波特率转换软件的界面如图。左边分别是两个串口的设置框,分别可以设置COM口的号码、波特率、校验位、数据位、停止位,默认的格式为(9600,N,8,1)。可以选择的COM口号码为1到16号。COM串口号可以从操作系统的“设备管理器”只能够的“端口”看到。波特率的可选择范围为:256000、128000、115200、57600、38400、28800、19200、14400、9600、 4800、2400、1200、600。校验位可选择:n(无)、o(偶)、e(奇)。数据位可选择:8、7、6、5、4。停止位可选择1和0。

设置好串口格式后,按“打开串口”。注意A和B两个串口都要打开。成功打开串口后会在“打开串口”按钮的旁边显示红色的圆圈。“打开串口”按钮下面为“清空计数”按钮和本串口接收和发送数据的个数。正常情况下,由于串口A接收到的数据都立即发送给了串口B,所以串口A接收的计数与串口B发送的计数时一样的。同理串口B接收的计数与串口A发送的计数时一样的。

串口波特率转换软件的界面右边为测试和检测部分,正常工作时不需要操作。按“手动发送A串口”可以测试串口A的设置是否生效,是否可以正确与设备1通信,接收到的数据显示在“接收区A”框内。串口B的部分是同样的功能。右下角有“字符格式”和“十六进制”的选项,默认为“字符格式”。当选择“十六进制”时,本软件可以实现16进制数据的格式转换,特别适合MODBUS等工控软件。

如果在软件界面上只打开一个串口,比如串口A或者串口B,那么本软件就是一个功能齐全的串口调试助手软件,可以进行每个串口的设置、数据收发等。

本软件用Visual Basic软件编写,串口用MSCOMM控件实现。核心功能就是将Mscomm1接收的数据立即送到Mscomm2的发送区。难点在于对16进制数据的转换处理。

Mscomm的核心代码如下:

Private Sub MSComm1_OnComm()
Dim BytReceived() As Byte
Dim strBuff As String
Dim i As Integer
Select Case MSComm1.CommEvent'事件发生
Case 2
MSComm1.InputLen = 0 '读入缓冲区全部内容
strBuff = MSComm1.Input '读入到缓冲区
If MSComm1.InputMode = comInputModeBinary Then
BytReceived() = strBuff '如果是二进制接收模式则进行数据处理,否则直接显示字符串
For i = 0 To UBound(BytReceived)
If Len(Hex(BytReceived(i))) = 1 Then
strData = strData & "0" & Hex(BytReceived(i)) & " "
'如果只有一个字符,则前补0,如F显示0F,最后补空格
Else '方便显示观察如: 00 0F FE
strData = strData & Hex(BytReceived(i)) & " "
End If
Next
Text1 = strData
Call hexSend2 ' '发送一个16进制
strData = ""

Else
Text1 = Text1 & strBuff
If MSComm2.PortOpen = False Then
MsgBox "请打开串口B"
End If
On Error GoTo uerror3
MSComm2.Output = strBuff
Label14.Caption = Label14.Caption + Len(strBuff) '发送计数
End If
End Select
uerror3:
End Sub

本文介绍的串口波特率转换的纯软件方法和程序,对不同格式之间的串口通信具有一定的使用价值。本软件不仅仅实现了波特率的转换,还同时实现了校验位、数据位和停止位的转换。文中介绍的软件可以从波仕电子的网站下载。纯软件波特率转换的不足之处在于占用了一台计算机,并且必须配有两个专门用于波特率转换的串口。如果要实现方便简单的波特率转换,还是要用具有双串口的单片机或者FPGA。通过对单片机或者FPGA的两个串口进行波特率等格式的设置,而两个串口在内部进行数据透明传输。这种产品就是硬件波特率转换器,我们将以另外文章《串口波特率转换的纯硬件实现》予以介绍。(end)
文章内容仅供参考 (投稿) (3/5/2012)
武汉波仕电子有限公司联系方式:
网址: http://www.bosika.com 电话:86-027-87561487
地址: 中国·湖北·武汉关东科技工业园 邮编430074
查看更多串口扩展器相关文章: more
查看更多数据采集/无线通讯相关文章: more
·RS-485的手拉手连接 武汉波仕电子孙汉华 (11/26/2014)
·RS-485及RS-422的自动交叉连接 武汉波仕电子有限公司 (11/24/2014)
·RS-232/485转换器的复用 武汉波仕电子有限公司 (11/3/2014)
·RS-232的高电压隔离 newmaker (11/12/2013)
·串口波特率转换的纯软件实现 武汉波仕电子有限公司 (3/5/2012)
·好灵通即时通信--串口远程通信的革命 武汉波仕电子有限公司 (7/18/2011)
·用WINSOCK编程实现WIFI与串口通信 武汉波仕电子公司 (3/28/2011)
·正确选择笔记本串口扩展卡 武汉波仕电子公司 (6/21/2010)
·新一代串口光纤转换器简化光纤组网 武汉波仕电子有限公司 孙汉华 (6/8/2010)
·串口光纤通信的组网方式 波仕电子 孙汉华 (12/1/2009)
查看相关文章目录:
·工业自动化展区 > 数据采集/无线通讯展厅 > 串口扩展器 > 数据采集/无线通讯文章
文章点评 查看全部点评 投稿 进入贴吧


对 数据采集/无线通讯 有何见解?请到 数据采集/无线通讯论坛 畅所欲言吧!


网站简介 | 企业会员服务 | 广告服务 | 服务条款 | English | Showsbee | 会员登录  
© 1999-2024 newmaker.com. 佳工机电网·嘉工科技