用户中心
· 企业空间 首页 | 资讯 | 技术 | 产品 | 企业 | 直播 | 专题 | 智能制造 | 论坛| 在线研讨会
武汉波仕电子有限公司
企业空间 > 案例应用 > 正文
  • 串口波特率转换的纯软件实现
  • 发布时间:2012/2/24 14:48:27   修改时间:2012/2/24 14:48:27 浏览次数:1935
  •                     武汉波仕电子有限公司 _孙汉华 http://www.bosika.com_

     

    串口通信,就是RS-232/RS-485通信,要求通信的双方波特率等通信格式一样才可以通信成功。可是在许多情况下,两种不同格式比如不同波特率的串口也要相互通信,这就必须进行串口波特率等格式的转换。本文介绍了如何用纯软件实现串口波特率的转换。

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

     串口波特率转换的纯软件实现

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

     串口波特率转换的纯软件实现
    串口波特率转换软件的界面如图。左边分别是两个串口的设置框,分别可以设置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的两个串口进行波特率等格式的设置,而两个串口在内部进行数据透明传输。这种产品就是硬件波特率转换器,我们将以另外文章《串口波特率转换的纯硬件实现》予以介绍。

  • 企业介绍
波士电子1993年创立于北京。波士电子致力于RS232/RS485产品的开发。 波士电子创造了许多种世界上第一的RS232/RS485产品,拥有数10项专利。 2007年:世界上第一个以太网-串口光纤转换器:(OPET232L1) 2007年:世界上第一个USB-串口光纤转换器:…  更多>>
  • 联系方式

武汉波仕电子有限公司

联系人:孙汉华

地址:关东科技工业园

邮编:430074

电话:027-87561487

传真:027-87561486

公司网址:http://www.bosika.com

  • 该空间手机版

扫描此二维码即可访问该空间手机版

  • 在线反馈
1.我有以下需求:



2.详细的需求:
姓名:
单位:
电话:
邮件:
您还没有登录,请登陆,
如果您还没有注册,点击这里注册.
  • 网友反馈
  • 李孝浪 在2022/8/5 10:22:00留言
  • 留言类型:我想得到贵公司产品详细资料,
  • 详细留言:有没有921600转115200的波特率转换器
  • Mike Ma 在2020/1/30 14:06:00留言
  • 留言类型:得到贵公司产品的价格信息,贵公司产品销售人员联系我,
  • 详细留言:我要买20个无源CAN隔离器,可以给我报价吗? 我公司是OSC Automation Engineering Blk 178 Edgefield Plains 09-224 Singapore 820178
  • 王力 在2014/12/15 18:05:00留言
  • 留言类型:贵公司产品销售人员联系我,
  • 详细留言:我已经购买了贵公司的ARK-2120无风扇嵌入式工控机,除了你家我还看了: E+H:http://www.endress-h.com pilz:http://www.pilz-zh.com 邦纳:http://www.banner-cn.com 穆格:http://www.moog-cn.com 穆格伺服阀:http://www.moog-cn.com 哈威:http://www.hawe-zh.com 力士乐:http://www.rexroth-zh.com 请问这些是正规的吗?可以开发票吗?
  • 汤庆 在2014/11/7 15:57:00留言
  • 留言类型:我想得到贵公司产品详细资料,我让贵公司产品销售人员联系我,我让贵公司技术支持人员联系我,
  • 详细留言:能否将电话的音频信号转换成485信号传输?有没有这样的设备?
  • 林老师 在2014/10/8 21:59:00留言
  • 留言类型:贵公司技术支持人员联系我,
  • 详细留言:usb3.0转RS485 win8.1 用于校园消机费机下载数据。
更多请进入空间管理中心查看
关于我们 | 网站地图 | 联系我们
© 2003-2018    经营许可编号:京ICP证120335号
公安机关备案号:110102002318  服务热线:010-82053688
我要反馈