.NET 串口通讯

Vs2005自带了一个串口通讯的控件SerialPort,该控件类似于VB6.0的串口Mscomm,但又有一定区别

 

 

1.串口的打开/关闭
 VB6.0串口打开是MSComm1.PortOpen =True,VB2005则直接调用SerialPort1.Open
 VB6.0串口关闭是MSComm1.PortOpen= False,VB2005则直接调用SerialPort1.Close


2.参数的设置对比
 VB串口设置可以单独设置,也可以通过其Setting属性设置如:MSComm1.Settings = "9600,n,8,2"
 而VB2005的串口属性只能分别设置,如:
 端口:SerialPort1.PortName
 波特率:SerialPort1.BaudRate
 数据位长度:SerialPort1.DataBit
 奇偶校验:SerialPort1.Parity
 停止位:SerialPort1.StopBits


3.向串行端口输出缓冲区写数据
 VB6.0向串口写数据是MSComm1.Output方法,其传递的是字符串或数据的起始地址
 VB2005向串口写数据是通过SerialPort1.Write方法,该方法有三种方式:
 (1).直接输出字符串,该方式只有一个参数,string,如:SerialPort1.Write SendString   
 这里面SendString是一个字符串
 (2).以字节方式输出,这种方式有三个参数:
 第一个参数是要输出的字节数据的起始地址
 第二个参数是从字节数据的第几个开始
 第三个参数是要发送的字节个数
 例如:SerialPort1.Write (SendByte,1,10)就是指把字节数组的SendByte的第1到第10个字节发送到输出缓冲区
 (3).以字符方式输出,这种方式也有三个参数:
 第一个参数是要输出的字符数据的起始地址
 第二个参数是从字符数据的第几个开始
 第三个参数是要发送的字符个数
 例如:SerialPort1.Write (SendChar,1,10)就是指把字符数组的SendByte的第1到第10个字符发送到输出缓冲区


4.从串行端口输入缓冲区读数据
 VB6.0从串口读数据是MSComm1.Input方法,其返回的是字符串或一个一维数据
 VB2005从串口读数据是通过SerialPort1.Read方法,该方法有二种方式:
 (1).以字节方式读出,这种方式有三个参数:
 第一个参数buffer,是将输入写入到其中的字节数组
 第二个参数offset,缓冲区数组中开始读出的偏移量,对于从头读的数据,应将其设为1
 第三个参数count,要读取的字节数,如果读当前缓冲区所有数据,则可用其属性SerialPort1.BytesToRead作为参数传递
 这里面SerialPort1.BytesToRead就是所接收的个数
 例如:SerialPort1.Read (ReadByte,1,10)就是指把缓冲区的第1到第10个字节读到ReadByte字节数组中
 (2).以字节方式读出,这种方式有三个参数:

 

 

5、加载本机所有的com

    Sub GetSerialPortNames()
        For Each sp As String In My.Computer.Ports.SerialPortNames
            ComboBox1.Items.Add(sp)
        Next
        If ComboBox1.Items.Count > 0 Then
            ComboBox1.SelectedIndex = 0
        End If
    End Sub

 

6、打开串口

       If SerialPort1.IsOpen Then
            SerialPort1.Close()
        End If

        Try
            With SerialPort1
                .PortName = ComboBox1.Text
                .BaudRate = 9600

                .Parity = IO.Ports.Parity.None '奇偶校验
                .DataBits = 8 '数据位
                .StopBits = IO.Ports.StopBits.One '停止位
            End With
            '打开
            SerialPort1.Open()

            Label1.Text = "Connected"
            Button1.Enabled = False
            Button2.Enabled = True
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try

 

7、关闭串口

SerialPort1.close()

 

8、发送数据

一般的数据

dim data as string=textbox1.text

SerialPort1.write(data)

十六进制字符串

发送十六进制字符串时,我们用数组保存要发送的信息

比如发送数据为:FF 01 00 00 01 00 00 FE

        Try
            Dim data(8) As Byte
            data(0) = &HFF
            data(1) = &H1
            data(2) = &H0
            data(3) = &H0
            data(4) = &H1
            data(5) = &H0
            data(6) = &H0
            data(7) = &HFE
            SerialPort1.DiscardOutBuffer()
            SerialPort1.Write(data, 0, 8)
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try

9、接收数据

SerialPort有个DataReceived事件,我们可以在里面写接受数据代码

接受字符串:SerialPort.ReadExisting

接受流数据:

dim byteToRead as int16=SerialPort.bytestoread(读取缓冲区的字节长度)

dim ch(byteToRead) as byte

dim bytesRead as int16=0

bytesRead=SerialPort.read(ch,0,bytetoread)

for i as int16=0 to bytesRead-1

  indata=indata & DecToHex(ch(i))

next

 

indata 就是读取到的数据

自定义函数:DecToHex (返回十六进制字符)

    Public Function DecToHex(ByVal DecNumber As Byte) As String '转换成十六进制字符串
        If DecNumber <= 15 Then
            DecToHex = "  0" & Hex(DecNumber)
        Else : DecToHex = "  " & Hex(DecNumber)
        End If
    End Function

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
书名:《Visual C#.NET串口通信及测控应用典型实例》(电子工业出版社.李江全.邓红涛.刘巧.李伟) PDF格式扫描版,全书分为8章,共369页。2012年5月出版。 全书压缩打包成3部分,这是第1部分 内容简介 本书从工程应用的角度出发,通过8个典型应用实例,包括PC与PC、PC与单片机、PC与PLC、PC与远程I/O模块、PC与智能仪器、PC与无线数传模块、Pc与USB数据采集模块等组成的测控系统,利用SerialPort控件和MSComm控件编写C#.NET串口通信程序,并对计算机测控系统中的4类典型应用((模拟量输入(AI)、模拟量输出(AO)、数字量输入(DI)和数字量输出(DO)的程序设计方法进行了详细的讲解。 目 录 第1章 PC与PC串口通信 1.1 串口通信概述 1.1.1 串口通信的基本概念 1.1.2 RS-232C接口标准 1.1.3 RS-422/485接口标准 1.1.4 串口通信线路连接 1.1.5 PC中的串行端口 1.1.6 虚拟串口的使用 1.2 VC++.NET串行通信控件与API函数 1.2.1 MSComm控件的使用 1.2.2 SerialPort控件的使用 1.2.3 串行通信API函数 1.3 PC与PC串口通信实例 1.3.1 两台PC串口通信 1.3.2 一台PC双串口互通信 第2章 PC与单片机串口通信 2.1 典型单片机开发板简介 2.1.1 单片机测控系统的组成 2.1.2 单片机开发板B的功能 2.1.3 单片机开发板B的主要电路 2.2 PC与单片机串口通信实例 2.2.1 PC与单个单片机串口通信 2.2.2 PC与多个单片机串口通信 2.3 PC与单片机串口通信测控应用实例 2.3.1 模拟量输入 2.3.2 模拟量输出 2.3.3 开关量输入 2.3.4 开关量输出 第3章 PC与西门子PLC串口通信 3.1 西门子PLC模拟量扩展模块与通信协议 3.1.1 西门子PLC模拟量输入模块 3.1.2 西门子PLC PPI通信协议 3.2 PC与西门子PLC串口通信测控应用实例 3.2.1 模拟量输入 3.2.2 模拟量输出 3.2.3 开关量输入 3.2.4 开关量输出 第4章 PC与三菱PLC串口通信 4.1 三菱PLC特殊功能模块与通信协议 4.1.1 FX2N系列PLC的特殊功能模块 4.1.2 三菱PLC编程口通信协议 4.2 PC与三菱PLC串口通信测控应用实例 4.2.1 模拟量输入 4.2.2 模拟量输出 4.2.3 开关量输入 4.2.4 开关量输出 第5章 PC与分布式I/O模块串口通信 5.1 典型分布式I/O模块简介 5.1.1 集散控制系统的结构与特点 5.1.2 ADAM4000远程数据采集控制系统 5.1.3 ADAM4000系列模块简介 5.1.4 ADAM4000系列模块的软件安装 5.2 PC与分布式I/O模块串口通信测控应用实例 5.2.1 模拟量输入 5.2.2 模拟量输出 5.2.3 数字量输入 5.2.4 数字量输出 第6章 PC与智能仪器串口通信 6.1 典型智能仪器简介 6.1.1 智能仪器的结构与特点 6.1.2 XMT-3000A型智能仪器的通信协议 6.2 PC与智能仪器串口通信测控应用实例 6.2.1 PC与单台智能仪器温度测控 6.2.2 PC与多台智能仪器温度测控 第7章 PC与无线数据传输模块串口通信 7.1 典型无线数传模块简介 7.1.1 无线数传技术概述 7.1.2 DTD46X系列无线数传模块 7.2 PC与无线数传模块串口通信测控应用实例 7.2.1 设计任务 7.2.2 线路连接 7.2.3 利用C51语言实现基于DS18B20的单片机温度测控 7.2.4 利用汇编语言实现基于DS18B20的单片机温度测控 7.2.5 利用VC++.NET实现PC与无线数传模块温度测控 第8章 USB串行总线模块测控应用 8.1 USB总线在数据采集系统中的应用 8.1.1 USB总线及其数据采集系统的特点 8.1.2 采用USB传输的数据采集系统 8.1.3 典型USB数据采集模块及应用 8.1.4 VC++.NET数据采集与控制的方式 8.2 PC与USB数据采集模块测控应用实例 8.2.1 模拟量输入 8.2.2 模拟量输出 8.2.3 数字量输入 8.2.4 数字量输出 参考文献

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值