SerialPort控件

合集下载

VisualStudio2005中serialPort控件访问串口实例

VisualStudio2005中serialPort控件访问串口实例

VisualStudio2005中serialPort控件访问串口实例点评:这个例子包括了这个控件几乎所有的操作,非常有参考价值.serialPort 是在.net framework2.0中才有的东西,感觉这个东西和MSCOMM很相似.这里给出的例子是基于和C-SHAPE的,相应的可以在Cshape和c++中使用,基本上都是一样的.ImportsImportsImportsPublicmparer.OrdinalIgnoreCasessOffaultet.PortName)ort.BaudRate)Parity)ort.DataBits)ort.StopBits)lPort.Handshake)'Set the read/write timeouts_serialPort.ReadTimeout=500_serialPort.WriteTimeout=500_serialPort.Open()_continue=TruereadThread.Start()Console.Write("Name:")name=Console.ReadLine()Console.WriteLine("Type QUIT to exit")While(_continue)message=Console.ReadLine()If sComparer.Equals("quit",message)Then_continue=FalseElse_serialPort.WriteLine(_String.Format("<{0}>:{1} ",name,message))End Ifend whilereadThread.Join()_serialPort.Close()End SubPublic Shared Sub Read()While(_continue)TryDim message As String=_s erialPort.ReadLine()Console.WriteLine(message)Catch ex As TimeoutException'Do nothingEnd TryEnd WhileEnd SubPublic Shared Function SetPortName(ByVal default PortName As String)As StringDim newPortName As StringConsole.WriteLine("Available Ports:")Dim s As StringFor Each s In SerialPort.GetPortNames()Console.WriteLine("{0}",s)Next sConsole.Write("COM port({0}):",defaultPort Name)newPortName=Console.ReadLine()If newPortName=""ThennewPortName=defaultPortNameEnd IfReturn newPortNameEnd FunctionPublic Shared Function SetPortBaudRate(ByVal def aultPortBaudRate As Integer)As IntegerDim newBaudRate As StringConsole.Write("Baud Rate({0}):",defaultP ortBaudRate)newBaudRate=Console.ReadLine()If newBaudRate=""ThennewBaudRate=defaultPortBaudRate.ToS tring()End IfReturn Integer.Parse(newBaudRate)End FunctionPublic Shared Function SetPortParity(ByVal defau ltPortParity As Parity)As ParityDim newParity As StringConsole.WriteLine("Available Parity options: ")Dim s As StringFor Each s In[Enum].GetNames(GetType(Pari ty))Console.WriteLine("{0}",s)Next sConsole.Write("Parity({0}):",defaultPortParit y.ToString())newparity=Console.ReadLine()If newparity=""Thennewparity=defaultPortParity.ToStrin g()End IfReturn CType([Enum].Parse(GetType(Parit y),newParity),Parity)End FunctionPublic Shared Function SetPortDataBits(ByVal def aultPortDataBits As Integer)As IntegerDim newDataBits As StringConsole.Write("Data Bits({0}):",defaultP ortDataBits)newDataBits=Console.ReadLine()If newDataBits=""ThennewDataBits=defaultPortDataBits.ToS tring()End IfReturn Integer.Parse(newDataBits)End FunctionPublic Shared Function SetPortStopBits(ByVal def aultPortStopBits As StopBits)As StopBitsDim newStopBits As StringConsole.WriteLine("Available Stop Bits opt ions:")Dim s As StringFor Each s In[Enum].GetNames(GetType(Stop Bits))Console.WriteLine("{0}",s)Next sConsole.Write("Stop Bits({0}):",defaultPortS topBits.ToString())newStopBits=Console.ReadLine()If newStopBits=""ThennewStopBits=defaultPortStopBits.ToS tring()End IfReturn CType([Enum].Parse(GetType(StopBit s),newStopBits),StopBits)End FunctionPublic Shared Function SetPortHandshake(ByVal de faultPortHandshake As Handshake)As HandshakeDim newHandshake As StringConsole.WriteLine("Available Handshake opti ons:")Dim s As StringFor Each s In[Enum].GetNames(GetType(Hand shake))Console.WriteLine("{0}",s)Next sConsole.Write("Stop Bits({0}):",defaultPortH andshake.ToString())newHandshake=Console.ReadLine()If newHandshake=""ThennewHandshake=defaultPortHandshake.T oString()End IfReturn CType([Enum].Parse(GetType(Handshak e),newHandshake),Handshake)End FunctionEnd Class。

SearialPort上位机实战经验

SearialPort上位机实战经验

上位机实战经验 'VB2010中有一个串口控件SerialPort。

用这个控件很容易实现一个简单的上位机的功能。

本文介绍使用中的几个主要问题:如何打开串口;如何发送数据;如何接收数据;如何显示接收到的数据;如何关闭串口。

1 如何打开串口在“打开串口”按键按下的事件处理程序中,先检查串口是否是“关闭”状态。

如果是、则设置SerialPort 的属性(这些属性也可以在设计时在属性窗口中设置),然后打开串口。

程序如下:Private Sub Open_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenPort.ClickIf (SerialPort1.IsOpen = False) ThenSerialPort1.PortName = "COM1" ' 端口号SerialPort1.BaudRate = 9600 ' 波特率SerialPort1.ReceivedBytesThreshold = 1' 接收到1个字符时,就触发DataReceived事件SerialPort1.NewLine = "vbCrLf" ' 接收到的数据的换行符SerialPort1.Open() ' 打开串口End IfEnd Sub要注意的是:打开串口前,下位机必须接到PC的USB端口并上电。

2 如何发送数据在“发送消息”按键按下的事件处理程序中,先检查串口是否处于“打开”状态。

如果是,则发出消息。

程序如下:Private Sub SendMessage_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles SendMessage.ClickIf (SerialPort1.IsOpen) ThenSerialPort1.Write("message") ' 发出消息"message"End IfEnd Sub3 如何接收数据接收数据比发送数据要复杂一些。

qserialport用法

qserialport用法

qserialport用法1. 介绍Qt是一个跨平台的应用程序开发框架,提供了丰富的库和工具,用于开发图形界面和非图形界面的应用程序。

其中,qserialport是Qt提供的一个用于串口通信的模块,可以方便地实现串口的读写操作。

本文将介绍qserialport的用法,包括如何配置串口参数、打开和关闭串口、读取和写入数据等操作。

通过学习本文,您将能够快速上手使用qserialport进行串口通信。

2. 安装qserialport在开始之前,您需要确保已经安装了Qt框架。

qserialport是Qt的一个模块,但在某些版本的Qt中可能没有默认安装此模块。

您可以通过以下步骤来安装qserialport:1.打开Qt的安装程序。

2.选择“维护工具”菜单下的“添加或删除组件”。

3.在弹出的对话框中,找到并选中“Qt Serial Port”模块。

4.点击“确定”按钮开始安装。

完成安装后,您就可以在Qt项目中使用qserialport了。

3. 配置串口参数在使用qserialport进行串口通信之前,您需要先配置串口的参数,包括串口号、波特率、数据位、校验位和停止位等。

首先,您需要创建一个QSerialPort对象,并设置其串口号。

串口号可以通过setPortName()方法进行设置,例如:QSerialPort serialPort;serialPort.setPortName("COM1"); // 设置串口号为COM1接下来,您可以设置其他串口参数,例如波特率、数据位、校验位和停止位等。

这些参数可以通过setBaudRate()、setDataBits()、setParity()和setStopBits()等方法进行设置。

例如,设置波特率为9600、数据位为8、无校验位和一个停止位的代码如下:serialPort.setBaudRate(QSerialPort::Baud9600); // 设置波特率为9600serialPort.setDataBits(QSerialPort::Data8); // 设置数据位为8serialPort.setParity(QSerialPort::NoParity); // 设置无校验位serialPort.setStopBits(QSerialPort::OneStop); // 设置一个停止位除了上述参数,您还可以设置流控制、超时和缓冲区大小等参数,具体方法请参考Qt官方文档。

elementui使用serialport

elementui使用serialport

elementui使用serialportElementUI是Vue.js组件库的一种,集成了大量常用的UI组件,为Vue.js开发者提供了便捷的界面开发,提升开发效率。

而SerialPort是一种通用的串行通信协议,可用于各种设备之间的数据通信。

在ElementUI中使用SerialPort,可以通过如下几个步骤实现:1. 通过npm包管理器安装SerialPort模块。

```npm install serialport --save```2. 在Vue项目中使用global e()引入SerialPort。

```import Vue from 'vue'import serialport from 'serialport'e(serialport)```3. 在Vue组件中使用SerialPort。

```<template><div><el-row><el-col :span="8"><el-form><el-form-item label="端口"><el-select v-model="port" placeholder="请选择端口"><el-option v-for="port inports" :key="Name" :label="Name" :value="port.comName"></el-option></el-select></el-form-item><el-form-item label="波特率"><el-input v-model="baudRate"></el-input> </el-form-item></el-form></el-col></el-row></div></template><script>export default {data() {return {port: '',baudRate: '9600',ports: []}},methods: {listPorts() {SerialPort.list().then((ports) => {this.ports = ports})}},created() {this.listPorts()}}</script>```在上述代码中,我们首先通过npm安装SerialPort模块,然后在Vue项目中引入SerialPort,最后在Vue组件中使用SerialPort的`list`方法获取串口列表并展示在界面上。

SerialPort与MSComm 详解

SerialPort与MSComm 详解

VB,C# MSComm控件的用法与详细介绍MSComm 是控件MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。

MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API 函数,而且在VC、VB、Delphi与C#等语言中均可使用。

Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。

具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。

1.MSComm控件两种处理通讯的方式MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。

1.1 事件驱动方式事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。

在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者 Carrier Detect (CD) 或 Request To Send (RTS) 线上一个字符到达或一个变化发生时。

在这些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。

OnComm 事件还可以检查和处理通讯错误。

所有通讯事件和通讯错误的列表,参阅 CommEvent 属性。

在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。

这种方法的优点是程序响应及时,可靠性高。

每个MSComm 控件对应着一个串行端口。

如果应用程序需要访问多个串行端口,必须使用多个MSComm 控件。

1.2 查询方式查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。

在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。

如果应用程序较小,并且是自保持的,这种方法可能是更可取的。

例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。

C#串口通信SerialPort类

C#串口通信SerialPort类

C#串⼝通信SerialPort类因为公司项⽬需要将USB扫码枪改为串⼝扫码枪,串⼝扫码的好处在于不需要⼀个输⼊框来接受USB扫出来的⽂本,能解决多个扫码枪⼀起扫码时的并发问题,所以需要⽤到多线程及串⼝技术。

⼀、串⼝通信简介串⾏接⼝(串⼝)是⼀种可以将接受来⾃CPU的并⾏数据字符转换为连续的串⾏数据流发送出去,同时可将接受的串⾏数据流转换为并⾏的数据字符供给CPU的器件。

⼀般完成这种功能的电路,我们称为串⾏接⼝电路。

串⼝通信(Serial Communications)的概念⾮常简单,串⼝按位(bit)发送和接收字节。

尽管⽐按字节(byte)的并⾏通信慢,但是串⼝可以在使⽤⼀根线发送数据的同时⽤另⼀根线接收数据。

串⼝通信最重要的参数是波特率、数据位、停⽌位和奇偶校验。

对于两个进⾏通信的端⼝,这些参数必须匹配。

1. 波特率:这是⼀个衡量符号传输速率的参数。

指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数,如每秒钟传送960个字符,⽽每个字符格式包含10位(1个起始位,1个停⽌位,8个数据位),这时的波特率为960Bd,⽐特率为10位*960个/秒=9600bps。

2. 数据位:这是衡量通信中实际数据位的参数。

当计算机发送⼀个信息包,实际的数据往往不会是8位的,标准的值是6、7和8位。

标准的ASCII码是0~127(7位),扩展的ASCII码是0~255(8位)。

3. 停⽌位:⽤于表⽰单个包的最后⼏位。

典型的值为1,1.5和2位。

由于数据是在传输线上定时的,并且每⼀个设备有其⾃⼰的时钟,很可能在通信中两台设备间出现了⼩⼩的不同步。

因此停⽌位不仅仅是表⽰传输的结束,并且提供计算机校正时钟同步的机会。

4. 校验位:在串⼝通信中⼀种简单的检错⽅式。

有四种检错⽅式:偶、奇、⾼和低。

当然没有校验位也是可以的。

⼆、C#串⼝编程类从.NET Framework 2.0开始,C#提供了SerialPort类⽤于实现串⼝控制。

c++中的serialport用法

c++中的serialport用法

C++中的SerialPort用法一、概述在C++编程中,SerialPort(串口)是一种常用的通信方式。

它可以用于连接各种外部设备,进行数据传输和通信。

本文将详细介绍在C++中如何使用SerialPort,并且通过实例演示其用法。

二、SerialPort的基本概念1. 串口是一种通过串行通信接口进行数据传输的设备,它通过一根线缆(串口线)进行数据传输。

2. 串口通信有多种标准,如RS-232、RS-485等,不同的标准有不同的电气特性和数据传输速率。

3. 在C++中,可以使用串口库来实现串口通信,常见的串口库有Boost.Asio、Qt SerialPort等。

三、使用Boost.Asio进行串口通信Boost.Asio是一个开源的C++库,用于实现异步I/O操作。

它提供了丰富的网络和串口通信功能,可以方便地进行串口通信开发。

1. 安装Boost库在使用Boost.Asio之前,首先需要安装Boost库。

可以从Boost全球信息站(网络协议sxxx)下载最新版本的Boost库,并按照全球信息站提供的安装说明进行安装。

2. 创建SerialPort对象在C++中使用Boost.Asio库进行串口通信,首先需要创建一个SerialPort对象,并指定串口名称、波特率等参数。

```c++#include <boost/asio.hpp>using namespace boost::asio;// 创建SerialPort对象io_service io;serial_port serial(io, "COM1"); // 指定串口名称serial.set_option(serial_port::baud_rate(9600)); // 设置波特率```3. 读写串口数据创建好SerialPort对象之后,即可通过它进行串口数据的读写操作。

```c++// 向串口写入数据std::string write_data = "Hello, SerialPort!";write(serial, buffer(write_data));// 从串口读取数据char read_data[100];size_t len = read(serial, buffer(read_data, 100));```4. 异步串口通信Boost.Asio库支持异步串口通信,可以通过回调函数处理串口数据的读写操作。

serial_port 用法

serial_port 用法

一、什么是串口串口是计算机与外部设备进行数据通信的一种接口,通过串口可以实现计算机与外部设备之间的数据传输。

通常情况下,串口包括一个发送线路和一个接收线路,用于传输数据。

串口通信可以通过物理连接或虚拟连接进行,常见的物理连接方式包括RS232,RS422和RS485等,而虚拟连接方式则包括USB转串口、蓝牙串口等。

二、串口的使用场景1. 工业控制领域在工业控制领域,串口被广泛应用于PLC(可编程逻辑控制器)、传感器、仪器仪表等设备的数据通信中。

通过串口,这些设备可以向主控计算机发送数据,或者接收主控计算机发送的控制指令,实现自动化控制。

2. 嵌入式系统开发在嵌入式系统开发中,串口通信也扮演了重要的角色。

开发人员可以通过串口与嵌入式设备进行通信,进行程序烧录、调试、数据传输等操作,方便对嵌入式设备进行控制和管理。

3. 通信设备通信设备如调制解调器、路由器等网络设备,也常使用串口进行数据传输和控制,例如通过串口进行配置、升级、诊断等操作。

4. 数据采集与监控在数据采集与监控系统中,串口可以连接各种传感器和监控设备,实现实时数据的采集和监控。

气象站、环境监测站的数据采集设备,通过串口与上位机进行数据传输。

三、串口的基本使用方法1. 串口的配置在使用串口进行通信之前,首先需要对串口进行配置,如波特率、数据位、停止位、奇偶校验等。

这些配置需要与通信的外部设备保持一致,才能够确保正常的数据传输。

2. 串口的打开和关闭在进行串口通信时,需要打开串口以建立通信连接,并在通信结束后关闭串口以释放资源,避免资源的浪费和冲突。

3. 串口的数据收发在串口通信中,数据的发送和接收是必不可少的部分。

通过串口发送数据时,需要将待发送的数据写入串口缓冲区,然后通过串口发送功能将数据发送出去;而在接收数据时,则需要通过串口接收功能从串口缓冲区中读取数据。

4. 串口的事件处理除了常规的数据收发操作,串口通信还需要处理一些事件,如串口接收到数据的事件、串口发送完成的事件等。

serialport 使用方法

serialport 使用方法

serialport 使用方法(原创版3篇)目录(篇1)1.引言2.serialport 的定义和作用3.serialport 的使用方法4.serialport 的常见问题及解决方法5.结论正文(篇1)一、引言在电子设备和计算机之间的通信中,串行通信是一种常见的通信方式。

而在 Python 中,我们可以使用 pyserial 库中的 serialport 模块来实现串行通信。

本文将为大家介绍 serialport 的使用方法。

二、serialport 的定义和作用serialport,即串行端口,是计算机上的一个硬件设备,负责实现串行通信。

在 Python 中,我们可以通过 pyserial 库来操作 serialport,从而实现与外部设备的通信。

三、serialport 的使用方法1.导入库首先,我们需要导入 pyserial 库。

在命令行中输入以下命令:```pip install pyserial```然后在 Python 代码中加入以下导入语句:```pythonimport serial```2.创建串行对象使用`serial.Serial()`方法创建一个串行对象,其中参数`port`表示串行端口号,`baudrate`表示波特率,`parity`表示校验方式,`stopbits`表示停止位,`bytesize`表示数据位。

```pythonser = serial.Serial(port="COM3", baudrate=9600,parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS)```3.打开串行端口使用`ser.open()`方法打开串行端口。

如果端口打开成功,`ser.isOpen()`方法将返回 True。

```pythonif ser.isOpen():print("串行端口已打开")else:ser.open()```4.读写数据使用`ser.read()`方法从串行端口读取数据,使用`ser.write()`方法向串行端口发送数据。

C#SerialPort使用方法

C#SerialPort使用方法

C#SerialPort使⽤⽅法SerialPort中串⼝数据的读取与写⼊有较⼤的不同。

由于串⼝不知道数据何时到达,因此有两种⽅法可以实现串⼝数据的读取。

⼀、线程实时读串⼝;⼆、事件触发⽅式实现。

由于线程实时读串⼝的效率不是⼗分⾼效,因此⽐较好的⽅法是事件触发的⽅式。

在SerialPort类中有DataReceived事件,当串⼝的读缓存有数据到达时则触发DataReceived事件,其中SerialPort.ReceivedBytesThreshold属性决定了当串⼝读缓存中数据多少个时才触发DataReceived事件,默认为1。

另外,SerialPort.DataReceived事件运⾏⽐较特殊,其运⾏在辅线程,不能与主线程中的显⽰数据控件直接进⾏数据传输,必须⽤间接的⽅式实现。

如下:SerialPort spSend; //spSend,spReceive⽤虚拟串⼝连接,它们之间可以相互传输数据。

spSend发送数据SerialPort spReceive; //spReceive接受数据TextBox txtSend; //发送区TextBox txtReceive; //接受区Button btnSend; //数据发送按钮delegate void HandleInterfaceUpdateDelegate(string text); //委托,此为重点HandleInterfaceUpdateDelegate interfaceUpdateHandle;public void InitClient() //窗体控件已在初始化{interfaceUpdateHandle = new HandleInterfaceUpdateDelegate(UpdateTextBox); //实例化委托对象spSend.Open(); //SerialPort对象在程序结束前必须关闭,在此说明spReceive.DataReceived += Ports.SerialDataReceivedEventHandler(spReceive_DataReceived);spReceive.ReceivedBytesThreshold = 1;spReceive.Open();}public void btnSend_Click(object sender,EventArgs e){spSend.WriteLine(txtSend.Text);}public void spReceive_DataReceived(object sender,Ports.SerialDataReceivedEventArgs e){byte[] readBuffer = new byte[spReceive.ReadBufferSize];spReceive.Read(readBuffer, 0, readBuffer.Length);this.Invoke(interfaceUpdateHandle, new string[] { Encoding.Unicode.GetString(readBuffer) });}private void UpdateTextBox(string text){txtReceive.Text = text;}。

serial port控件

serial port控件

serialport现在大多数硬件设备均采用串口技术与计算机相连,因此串口的应用程序开发越来越普遍。

例如,在计算机没有安装网卡的情况下,将本机上的一些信息数据传输到另一台计算机上,那么利用串口通信就可以实现。

运行本程序,在“发送数据”文本框中输入要传送的数据,单击【发送】按钮,将传送的数据发送到所选择的端口号中;单击【接收】按钮,传递的数据被接收到“接收数据”文本框中。

如图13.1所示。

技术要点在.NET Framework2.0中提供了SerialPort类,该类主要实现串口数据通信等。

下面主要介绍该类的主要属性(表13.1)和方法(表13.2)。

表13.1SerialPort类的常用属性名称说明BaseStream 获取SerialPort对象的基础Stream对象BaudRate 获取或设置串行波特率BreakState 获取或设置中断信号状态BytesToRead 获取接收缓冲区中数据的字节数BytesToWrite 获取发送缓冲区中数据的字节数CDHolding 获取端口的载波检测行的状态CtsHolding 获取“可以发送”行的状态DataBits 获取或设置每个字节的标准数据位长度DiscardNull 获取或设置一个值,该值指示Null字节在端口和接收缓冲区之间传输时是否被忽略DsrHolding 获取数据设置就绪(DSR)信号的状态DtrEnable 获取或设置一个值,该值在串行通信过程中启用数据终端就绪(DTR)信号Encoding 获取或设置传输前后文本转换的字节编码Handshake 获取或设置串行端口数据传输的握手协议IsOpen 获取一个值,该值指示SerialPort对象的打开或关闭状态NewLine 获取或设置用于解释ReadLine()和WriteLine()方法调用结束的值Parity 获取或设置奇偶校验检查协议续表名称说明ParityReplace 获取或设置一个字节,该字节在发生奇偶校验错误时替换数据流中的无效字节PortName 获取或设置通信端口,包括但不限于所有可用的COM 端口ReadBufferSiz e 获取或设置SerialPort输入缓冲区的大小ReadTimeout 获取或设置读取操作未完成时发生超时之前的毫秒数ReceivedBytes Threshold 获取或设置DataReceived 事件发生前内部输入缓冲区中的字节数RtsEnable 获取或设置一个值,该值指示在串行通信中是否启用请求发送(RTS)信号StopBits 获取或设置每个字节的标准停止位数WriteBufferSiz e 获取或设置串行端口输出缓冲区的大小WriteTimeout 获取或设置写入操作未完成时发生超时之前的毫秒数表13.2SerialPort类的常用方法方法名称说明Close 关闭端口连接,将IsOpen 属性设置为False,并释放内部Stream 对象Open 打开一个新的串行端口连接Read从SerialPort输入缓冲区中读取ReadByte 从SerialPort 输入缓冲区中同步读取一个字节ReadChar 从SerialPort 输入缓冲区中同步读取一个字符ReadLine 一直读取到输入缓冲区中的NewLine值ReadTo 一直读取到输入缓冲区中指定value的字符串Write 已重载。

VB2005串口通讯与 VB6.0的区别

VB2005串口通讯与 VB6.0的区别

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

下面是对它们的一个比较:1.串口的打开/关闭VB6.0串口打开是MSComm1.PortOpen =True,VB2005则直接调用SerialPort1.OpenVB6.0串口关闭是MSComm1.PortOpen= False,VB2005则直接调用SerialPort1.Close2.参数的设置对比VB串口设置可以单独设置,也可以通过其Setting属性设置如:MSComm1.Settings = "9600,n,8,2"而VB2005的串口属性只能分别设置,如:端口:SerialPort1.PortName波特率:SerialPort1.BaudRate数据位长度:SerialPort1.DataBit奇偶校验:SerialPort1.Parity停止位:SerialPort1.StopBits3.向串行端口输出缓冲区写数据VB6.0向串口写数据是MSComm1.Output方法,其传递的是字符串或数据的起始地址VB2005向串口写数据是通过SerialPort1.Write方法,该方法有三种方式:(1).直接输出字符串,该方式只有一个参数,string,如:SerialPort1.WriteSendString这里面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).以字节方式读出,这种方式有三个参数:第一个参数buffer,是将输入写入到其中的字符数组第二个参数offset,缓冲区数组中开始读出的偏移量,对于从头读的数据,应将其设为1第三个参数count,要读取的字节数,如果读当前缓冲区所有数据,则可用其属性SerialPort1.BytesToRead作为参数传递这里面SerialPort1.BytesToRead就是所接收的个数例如:SerialPort1.Read (ReadChar,1,10)就是指把缓冲区的第1到第10个字节读到ReadChar字符数组中5.相关属性(1).SerialPort1.DtrEnable 该值在串行通信过程中启用数据终端就绪(DTR) 信号在通讯时,请把该值置为1,否则读入的数据会丢失(原因尚未搞明白,可能跟硬件有关系吧)(2).SerialPort1.RtsEnable 该值指示在串行通信中是否启用请求发送(RTS) 信号当然,还有其它属性,这里只对常用几个参数作了对比,其它参数请自行参考相关说明.。

serialport_datareceived用法

serialport_datareceived用法

serialport_datareceived用法使用串口数据接收是在开发中经常遇到的一种情况。

无论是使用串口与外部设备进行通信,还是与其他设备进行数据交换,SerialPort类都是非常常用的工具之一。

在这篇文章中,我们将会一步一步地回答关于串口数据接收的问题,帮助读者全面了解这个主题。

第一步:了解SerialPort类在开始之前,我们首先需要对SerialPort类进行一个简单的介绍。

SerialPort 类是.NET框架提供的一个用于串行通信的类库,主要用于直接通过串口与外设进行数据交换。

通过SerialPort类,我们可以方便地发送和接收数据,监测串口的状态,并对串口进行各种设置。

第二步:初始化SerialPort对象在开始接收数据之前,我们需要首先初始化一个SerialPort对象。

我们可以通过以下步骤来完成初始化:1. 引入命名空间:在代码文件的开头,我们需要引入命名空间System.IO.Ports,这个命名空间提供了SerialPort类的定义。

2. 创建SerialPort对象:我们可以使用关键字new来实例化一个SerialPort对象,并指定串口号和波特率等参数。

3. 配置串口参数:通过SerialPort对象的属性,我们可以对串口进行各种设置,如波特率、数据位、停止位、奇偶校验等。

第三步:设置数据接收事件接下来,我们需要设置一个数据接收事件,以便在接收到数据时进行相应的操作。

在SerialPort类中,有一个名为DataReceived的事件,它会在接收到数据时触发。

通过订阅这个事件,我们就可以在数据到达时执行自定义的处理函数。

1. 创建事件处理函数:首先,我们需要创建一个事件处理函数,用于处理接收到的数据。

这个函数可以是一个无返回值的方法,接受两个参数:一个是触发事件的对象,另一个是包含事件数据的EventArgs对象。

2. 订阅DataReceived事件:通过将事件处理函数与DataReceived事件进行绑定,我们可以在数据接收到时自动触发事件处理函数。

SerialPort控件的详细用法

SerialPort控件的详细用法

serialport控件的详细用法1、简介随着USB的流行,串口通讯已经应用到日常生活的很多方面了,USB是一种高速的串口通讯协议,USB接口非常复杂,通常被用在需要传输大量数据数据的地方,如U盘、相机、打印机等。

除了USB这种较为奢侈的串口外,在工控和嵌入式行业,大量被使用的是另一种古老的串口协议,RS-232串口。

RS-232是一种非常简洁的低速串口通讯接口,它可以同时进行数据接收和发送的工作。

2、.NET 2.0对串口的支持.NET 2.0提供了对串口通信功能的支持,有关类可以在命名空间System.IO.Ports下找到,这其中最为重要的是SerialPort类。

通过创建一个新的SerialPort 对象,我们就可以在.NET程序中控制串口通讯的全过程。

3、使用SerialPort 设置串口属性进行串口通讯时,需要设置一些相关参数,可以通过设置SerialPort 类的属性来进行。

串口属性主要包括.PortName 串口名称,COM1, COM2等。

.BaudRate 波特率,也就是串口通讯的速度,进行串口通讯的双方其波特率需要相同,如果用PC连接其他非PC系统,一般地,波特率由非PC系统决定。

Parity 奇偶校验。

可以选取枚举Parity中的值.DataBits 数据位.StopBits 停止位,可以选取枚举StopBits中的值.Handshake 握手方式,也就是数据流控制方式,可以选取枚举Handshake中的值4、打开与关闭串口在创建一个SerialPort 对象,设置串口属性后,可以通过Open()方法打开串口。

数据读写完成后,可以通过Close()方法关闭串口。

根据经验,对于有些系统,在打开串口后,还需要将RtsEnable设置为True,这样才能读写数据,否则不能正常读写数据。

5、读写行数据双方通讯时,一般都需要定义通讯协议,即使最简单的通过串口发送文本聊天的程序。

通常是在当一方按下回车时,将其所数据的文本连同换行符发给另一方。

flutter_libserialport用法

flutter_libserialport用法

7-30-14-flutter_libserialport用法flutter_libserialport 是一个Flutter插件,用于在Flutter 应用程序中与串口通信。

该插件提供了一种与串口设备进行交互的方法,可以用于读取和写入串口数据。

以下是使用flutter_libserialport 插件的基本用法:添加插件依赖:首先,在你的Flutter项目中,需要将 flutter_libserialport 插件添加为依赖项。

你可以在项目的 pubspec.yaml 文件中进行如下配置:dependencies:flutter:sdk: flutterflutter_libserialport: ^latest_version然后,在终端中运行 flutter pub get 来安装插件。

导入插件:在你的Flutter Dart 代码中导入插件:import'package:flutter_libserialport/flutter_libserialport.dart';列出可用的串口设备:使用SerialPort.listPortNames() 函数来列出可用的串口设备:List<String> portNames = await SerialPort.listPortNames();print('Available Serial Ports: $portNames');打开串口设备:使用 SerialPort.open() 函数来打开串口设备,指定串口设备名称和波特率:String portName = '/dev/ttyUSB0'; // 串口设备名称int baudRate = 9600; // 波特率SerialPort serialPort = SerialPort(portName, baudRate);await serialPort.open();读取和写入数据:你可以使用 serialPort.read() 函数来读取从串口设备接收的数据,并使用 serialPort.write() 函数将数据写入串口设备:// 读取数据String data = await serialPort.read();// 写入数据String dataToSend = 'Hello, Serial Port!';await serialPort.write(dataToSend);关闭串口设备:使用 serialPort.close() 函数来关闭串口设备连接:await serialPort.close();以上是使用 flutter_libserialport 插件的基本用法。

VisualStudio2005中serialPort控件访问串口实例

VisualStudio2005中serialPort控件访问串口实例

VisualStudio2005中serialPort控件访问串口实例点评:这个例子包括了这个控件几乎所有的操作,非常有参考价值.serialPort 是在.net framework2.0中才有的东西,感觉这个东西和MSCOMM很相似.这里给出的例子是基于和C-SHAPE的,相应的可以在Cshape和c++中使用,基本上都是一样的.VisualStudio2005中serialPort控件访问串口实例[转载]Imports SystemImports System.IO.PortsImports System.ThreadingPublic Class PortChatShared_continue As BooleanShared_serialPort As SerialPortPublic Shared Sub Main()Dim name As StringDim message As StringDim sComparer As StringComparer=StringComparer.OrdinalI gnoreCaseDim readThread As Thread=New Thread(AddressOf Read)'Create a new SerialPort object with default settings._serialPort=New SerialPort()'Allow the user to set the appropriate properties._serialPort.PortName=SetPortName(_serialPort.PortName)_serialPort.BaudRate=SetPortBaudRate(_serialPort.BaudRat e)_serialPort.Parity=SetPortParity(_serialPort.Parity)_serialPort.DataBits=SetPortDataBits(_serialPort.DataBit s)_serialPort.StopBits=SetPortStopBits(_serialPort.StopBit s)_serialPort.Handshake=SetPortHandshake(_serialPort.Hands hake)'Set the read/write timeouts_serialPort.ReadTimeout=500_serialPort.WriteTimeout=500_serialPort.Open()_continue=TruereadThread.Start()Console.Write("Name:")name=Console.ReadLine()Console.WriteLine("Type QUIT to exit")While(_continue)message=Console.ReadLine()If sComparer.Equals("quit",message)Then_continue=FalseElse_serialPort.WriteLine(_String.Format("<{0}>:{1}",name,message))End Ifend whilereadThread.Join()_serialPort.Close()End SubPublic Shared Sub Read()While(_continue)TryDim message As String=_serialPort.ReadLine()Console.WriteLine(message)Catch ex As TimeoutException'Do nothingEnd TryEnd WhileEnd SubPublic Shared Function SetPortName(ByVal defaultPortName A s String)As StringDim newPortName As StringConsole.WriteLine("Available Ports:")Dim s As StringFor Each s In SerialPort.GetPortNames()Console.WriteLine("{0}",s)Next sConsole.Write("COM port({0}):",defaultPortName)newPortName=Console.ReadLine()If newPortName=""ThennewPortName=defaultPortNameEnd IfReturn newPortNameEnd FunctionPublic Shared Function SetPortBaudRate(ByVal defaultPortBau dRate As Integer)As IntegerDim newBaudRate As StringConsole.Write("Baud Rate({0}):",defaultPortBaudRate)newBaudRate=Console.ReadLine()If newBaudRate=""ThennewBaudRate=defaultPortBaudRate.ToString()End IfReturn Integer.Parse(newBaudRate)End FunctionPublic Shared Function SetPortParity(ByVal defaultPortParit y As Parity)As ParityDim newParity As StringConsole.WriteLine("Available Parity options:")Dim s As StringFor Each s In[Enum].GetNames(GetType(Parity))Console.WriteLine("{0}",s)Next sConsole.Write("Parity({0}):",defaultPortParity.ToString ())newparity=Console.ReadLine()If newparity=""Thennewparity=defaultPortParity.ToString()End IfReturn CType([Enum].Parse(GetType(Parity),newParit y),Parity)End FunctionPublic Shared Function SetPortDataBits(ByVal defaultPortDat aBits As Integer)As IntegerDim newDataBits As StringConsole.Write("Data Bits({0}):",defaultPortDataBits)newDataBits=Console.ReadLine()If newDataBits=""ThennewDataBits=defaultPortDataBits.ToString()End IfReturn Integer.Parse(newDataBits)End FunctionPublic Shared Function SetPortStopBits(ByVal defaultPortSto pBits As StopBits)As StopBitsDim newStopBits As StringConsole.WriteLine("Available Stop Bits options:")Dim s As StringFor Each s In[Enum].GetNames(GetType(StopBits))Console.WriteLine("{0}",s)Next sConsole.Write("Stop Bits({0}):",defaultPortStopBits.ToSt ring())newStopBits=Console.ReadLine()If newStopBits=""ThennewStopBits=defaultPortStopBits.ToString()End IfReturn CType([Enum].Parse(GetType(StopBits),newStopBit s),StopBits)End FunctionPublic Shared Function SetPortHandshake(ByVal defaultPortHa ndshake As Handshake)As HandshakeDim newHandshake As StringConsole.WriteLine("Available Handshake options:")Dim s As StringFor Each s In[Enum].GetNames(GetType(Handshake))Console.WriteLine("{0}",s)Next sConsole.Write("Stop Bits({0}):",defaultPortHandshake.ToS tring())newHandshake=Console.ReadLine()If newHandshake=""ThennewHandshake=defaultPortHandshake.ToString()End IfReturn CType([Enum].Parse(GetType(Handshake),newHandsh ake),Handshake)End FunctionEnd Class。

C#SerialPort串口的简单使用

C#SerialPort串口的简单使用

C#SerialPort串⼝的简单使⽤注:只要扫码枪设备都连接成功这段代码才可以使⽤如果不使⽤SerialPort控件可以这样写最后获取扫码的结果放在textbox控件上有扫码枪的可以试⼀下using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.IO.Ports;using System.Linq;using System.Text;using System.Threading;using System.Windows.Forms;namespace串⼝Dome{public partial class Form1 : Form{public Form1(){InitializeComponent();}//声明⼀个串⼝public static SerialPort _serialPort;public void setPort(string portName, int baudRate){//实例化⼀下串⼝_serialPort = new SerialPort();this.RegisterSerialPort(portName, baudRate);if (_serialPort.IsOpen == false){_serialPort.Open();} //不⽤太关注这个我也不是很懂,只要知道他是个回调函数就可以_serialPort.DataReceived += new SerialDataReceivedEventHandler(_serialPort_DataReceived);}///<summary>///注册串⼝///</summary>///<param name="portName"></param>///<param name="baudRate"></param>public void RegisterSerialPort(string portName, int baudRate){// 串⼝名_serialPort.PortName = portName;// 波特率_serialPort.BaudRate = baudRate;// 数据位_serialPort.DataBits = 8;// 停⽌位_serialPort.StopBits = StopBits.One;// ⽆奇偶校验位_serialPort.Parity = Parity.None;}private void _serialPort_DataReceived(object senderd, SerialDataReceivedEventArgs e){//等待100ms 防⽌读取不全的情况Thread.Sleep(100);byte[] m_recvBytes = new byte[_serialPort.BytesToRead]; //获取接受缓冲区的字节数定义缓冲区的⼤⼩int result = _serialPort.Read(m_recvBytes, 0, m_recvBytes.Length);//从串⼝读取数据返回读取的字节数if (result <= 0){return;}//将字节转换成字符串//string strResult = Encoding.ASCII.GetString(m_recvBytes);string strResult = Encoding.ASCII.GetString(m_recvBytes, 0, m_recvBytes.Length);//string strResult = Encoding.UTF8..GetString();_serialPort.DiscardInBuffer();this.Invoke((EventHandler)(delegate{txtCK.Text = strResult;}));}private void Form1_Load(object sender, EventArgs e){ //参数1:串⼝(端⼝)号名称参数2:波特率setPort("COM14", 9600);}}}下⾯这个是使⽤SerialPort控件写的省略了注册串⼝的那个⽅法using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.IO.Ports;using System.Linq;using System.Text;using System.Threading;using System.Windows.Forms;namespace串⼝Dome{public partial class Form2 : Form{public Form2(){InitializeComponent();}public static SerialPort serialPort = new SerialPort();public void setPort(){if (serialPort.IsOpen==false){serialPort.Open();}serialPort.DataReceived += new SerialDataReceivedEventHandler(_serialPort_DataReceived);}private void _serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e){//防⽌读取不全的情况等待100msThread.Sleep(100);byte[] m_recvBytes = new byte[serialPort.BytesToRead];//获取缓冲区的的字节数int reslut = serialPort.Read(m_recvBytes, 0, m_recvBytes.Length);if (reslut <= 0){return;}string strResult = Encoding.ASCII.GetString(m_recvBytes, 0, m_recvBytes.Length);//转换成字符串格式的 serialPort.DiscardInBuffer();this.Invoke((EventHandler)(delegate{TxtCode.Text = strResult;}));}private void Form2_Load(object sender, EventArgs e){var str = BarCode.PortName;int num = BarCode.BaudRate; setPort()MessageBox.Show("Name:" + str + "" + "波特率" + num);}}}后期有更好的理解和写法在补充上去增加⼀个使⽤正则表达来转换条码代码量少同第⼆个⽅法⼀样使⽤SerialPort控件在控件属性中修改对应的COM名称和波特率接下来就是代码部分public void OpenSbar(){if (serialPort1.IsOpen == false){serialPort1.Open();}serialPort1.DataReceived += new SerialDataReceivedEventHandler(SBar_DataReceived); }private void SBar_DataReceived(object sender, SerialDataReceivedEventArgs e){belCode.Text = "等待中...";Thread.Sleep(150);string str_Buff = serialPort1.ReadExisting();str_Buff = System.Text.RegularExpressions.Regex.Replace(str_Buff, @"[^0-9a-zA-Z]+", ""); //Code获取到的条码string Code = str_Buff.Trim();}。

CserialPort类

CserialPort类

简单而强大的多线程串口编程工具CserialPort类(附VC基于MFC单文档协议通讯源程序及详细编程步骤)作者:龚建伟2001.11.09(任意转载,请注明来自啸峰工作室及网址)老有人觉得MSComm通讯控件很土,更有人大声疾呼:忘了它吧。

确实当我们对串口编程有了一定的了解后,应该用API函数写一个属于自己的串口程序,由于编程者对程序了解,对程序修改自如。

但我一直没有停止过用MSComm通讯控件,那么简单的东西,对付简单的任务完全可以,但当我们需要在程序中用多个串口,而且还要做很多复杂的处理,那么最好不用MSComm通讯控件,如果这时你还不愿意自己编写底层,就用这个类:CserialPort类。

这是Remon Spekreijse写的一个串口类,地址在:/network/serialport.shtml类作者Remon Spekreijse已作了一个基于对话框的同时检测4个串口示例的程序,在上面的网址和我主页的串口源码下载页也可以找到。

我在这儿主要介绍如何将这个类应用到VC中基于文档的程序中。

为了加深对串口数据处理的了解,我们利用这个类解决如下问题:问题:串口2(COM2)每隔1秒向串口1(COM1)发送的NEMA格式的报文:串头为$,串尾为*,中间为一个xxxx 的整数(比如2345,不足4位则前面以0代替代),最后是hh校验,规定hh为xxxx四个数的半BYTE 校验和,最后加上回车<CR>与换行<LF>。

整个数据包为$xxxx*hh<CR><LF>。

串口1收到上述报文后,校验正确后,将发来的数据显示在视窗中,并记下发来的正确帧数和错误帧数,若正确,还向串口2发送Y,串口2收到Y后将收到的Y的计数显示在视窗中。

测试方法:将三线制串口线联接上同一台计算机的两个串口,编好程序后就可测试。

如果没有两个串口的微机,自己改改程序。

好了,你可以先下载源程序: scporttest.zip(大小:49KB,VC6,WIN9X/2000,SerialPort.h SerialPort.cpp是两个类文件)编程步骤:◆1. 建立程序:建立一个基于单文档的MFC应用程序SCPortTest,所有步骤保持缺省状态。

WPF中使用SerialPort实现串口通讯

WPF中使用SerialPort实现串口通讯

WPF中使用SerialPort实现串口通讯WPF中使用SerialPort实现串口通讯来源:CSDN 作者:jane_slC++中实现串口通讯一般都是使用ActiveX控件MSComm,于是下载了MSComm控件,根据博客中转载的文章:点击打开链接,将该控件导入到VS2010里面,但是它在工具栏中显示是灰色的,费了半天劲才知道MSComm不支持WPF,于是就开始了SerialPort的学习。

SerialPort的基本属性:BaseStream 获取 SerialPort 对象的基础 Stream 对象BaudRate 获取或设置串行波特率BreakState 获取或设置中断信号状态BytesToRead 获取接收缓冲区中数据的字节数BytesToWrite 获取发送缓冲区中数据的字节数CDHolding 获取端口的载波检测行的状态CtsHolding 获取“可以发送”行的状态DataBits 获取或设置每个字节的标准数据位长度DiscardNull 获取或设置一个值,该值指示Null 字节在端口和接收缓冲区之间传输时是否被忽略DsrHolding 获取数据设置就绪 (DSR) 信号的状态DtrEnable 获取或设置一个值,该值在串行通信过程中启用数据终端就绪 (DTR) 信号Encoding 获取或设置传输前后文本转换的字节编码Handshake 获取或设置串行端口数据传输的握手协议IsOpen 获取一个值,该值指示 SerialPort 对象的打开或关闭状态NewLine 获取或设置用于解释 ReadLine( )和WriteLine( )方法调用结束的值Parity 获取或设置奇偶校验检查协议ParityReplace 获取或设置一个字节,该字节在发生奇偶校验错误时替换数据流中的无效字节PortName 获取或设置通信端口,包括但不限于所有可用的 COM 端口ReadBufferSize 获取或设置 SerialPort 输入缓冲区的大小ReadTimeout 获取或设置读取操作未完成时发生超时之前的毫秒数ReceivedBytesThreshold 获取或设置 DataReceived 事件发生前内部输入缓冲区中的字节数RtsEnable 获取或设置一个值,该值指示在串行通信中是否启用请求发送 (RTS) 信号StopBits 获取或设置每个字节的标准停止位数WriteBufferSize 获取或设置串行端口输出缓冲区的大小WriteTimeout 获取或设置写入操作未完成时发生超时之前的毫秒数SerialPort类的常用方法方法名称说明Close 关闭端口连接,将 IsOpen 属性设置为False,并释放内部Stream 对象Open 打开一个新的串行端口连接Read 从 SerialPort 输入缓冲区中读取ReadByte 从 SerialPort 输入缓冲区中同步读取一个字节ReadChar 从 SerialPort 输入缓冲区中同步读取一个字符ReadLine 一直读取到输入缓冲区中的 NewLine 值ReadTo 一直读取到输入缓冲区中指定 value 的字符串Write 已重载。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SerialPort常用属性、方法和事件
名称说明
BaseStream获取SerialPort对象的基础Stream对象。

BaudRate获取或设置串行波特率。

BreakState获取或设置中断信号状态。

BytesToRead获取接收缓冲区中数据的字节数。

BytesToWrite获取发送缓冲区中数据的字节数。

CDHolding获取端口的载波检测行的状态。

Container 获取IContainer,它包含Component。

(从Component继承。


CtsHolding获取“可以发送”行的状态。

DataBits获取或设置每个字节的标准数据位长度。

DiscardNull获取或设置一个值,该值指示Null 字节在端口和接收缓
冲区之间传输时是否被忽略。

DsrHolding获取数据设置就绪(DSR) 信号的状态。

DtrEnable获取或设置一个值,该值在串行通信过程中启用数据终端
就绪(DTR) 信号。

Encoding获取或设置传输前后文本转换的字节编码。

Handshake获取或设置串行端口数据传输的握手协议。

IsOpen获取一个值,该值指示SerialPort 对象的打开或关闭状
态。

NewLine获取或设置用于解释ReadLine和WriteLine方法调用
结束的值。

Parity获取或设置奇偶校验检查协议。

ParityReplace获取或设置一个字节,该字节在发生奇偶校验错误时替换
数据流中的无效字节。

PortName获取或设置通信端口,包括但不限于所有可用的COM 端
口。

ReadBufferSize获取或设置SerialPort 输入缓冲区的大小。

ReadTimeout获取或设置读取操作未完成时发生超时之前的毫秒数。

ReceivedBytesThreshold获取或设置DataReceived事件发生前内部输入缓冲区
中的字节数。

RtsEnable获取或设置一个值,该值指示在串行通信中是否启用请求
发送(RTS) 信号。

Site 获取或设置Component 的 ISite。

(从 Component 继承。


StopBits获取或设置每个字节的标准停止位数。

WriteBufferSize获取或设置串行端口输出缓冲区的大小。

WriteTimeout获取或设置写入操作未完成时发生超时之前的毫秒数
代码例程
1、串口配置代码
Sub PortStart()
'SerialPort1.PortName = COMX'计算机串口设置X,是串口号。

可以使用下列列表框选择。

SerialPort1.BaudRate = 9600 …波特率设置
SerialPort1.DataBits = 8 '数据位设置
SerialPort1.StopBits = StopBits.One '停止位设置
SerialPort1.Encoding = Encoding.UTF8
SerialPort1.DtrEnable = True
SerialPort1.ReadTimeout = 500 '超时时间
SerialPort1.NewLine = vbCrLf '行结束符合
End Sub
2、计算机串口读取
Sub GetSerialPortNames()
'计算机串口读取
For Each sp As String In puter.Ports.SerialPortNames CompList.Items.Add(sp) …CompList是一个下列框控件,这里修改为你的下列框名称
Next
CompList.Text = CompList.Items(0)
End Sub
3、串口打开
Sub PortOpen()
Try
SerialPort1.Open()
Call PortStart()
Catch ex As UnauthorizedAccessException
MsgBox("串口被占用或串口错误!", rmation, "提示!")
End Try
End Sub
4、串口关闭
Sub PortOpen()
Try
SerialPort1.Close()
Catch ex As Exception
MsgBox("串口未打开或串口异常!", rmation, "提示!") End Try
End Sub
5、串口读取数据
Sub ComRec()
Dim Rxstr As String
Try
Rxstr = SerialPort1.ReadLine ‟读取一个新行
Application.DoEvents()
ComTxT.AppendText(Rxstr) …读取到的数据添加到文本框中显示Catch e As TimeoutException ‟当超时以后,读取串口所有的数据
Rxstr = SerialPort1.ReadExisting
ComTxT.AppendText(Rxstr)
Application.DoEvents()
End Try
End Sub
6、发送数据
SerialPort.Write,将数据写入串行端口输出缓冲区。

名称说明
SerialPort.Write (String)将参数字符串写入输出。

由 .NET Compact Framework 支持。

SerialPort.Write (Byte[], Int32, Int32)将指定数量的字节写入输出缓冲区中的指定偏移量处。

由 .NET Compact Framework 支持。

SerialPort.Write (Char[], Int32, Int32)将指定数量的字符写入输出缓冲区中的指定偏移量处。

由 .NET Compact Framework 支持。

相关文档
最新文档