C#串口控制
串行口是计算机的标准接口,现在的PC机(个人电脑)一般至少有两个串行口COM1和COM2。串行口应用广泛,在数据通信、计算机网络以及分布式工业控制系统中,经常采用串行通信来交换数据和信息。本节通过几个实例,介绍串口应用的技术和方法。
通过串口发送数据
现在大多数硬件设备均采用串口技术与计算机相连,因此串口的应用程序开发越来越普遍。例如,在计算机没有安装网卡的情况下,将本机上的一些信息数据传输到另一台计算机上,那么利用串口通信就可以实现。运行本程序,在“发送数据”文本框中输入要传送的数据,单击【发送】按钮,将传送的数据发送到所选择的端口号中;单击【接收】按钮,传递的数据被接收到“接收数据”文本框中;如图:
在.NET Framework 2.0中提供了SerialPort类,该类主要实现串口数据通信等。下面主要介绍该类的主要属性(表1)和方法(表2)。
表1
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 获取或设置写入操作未完成时发生超时之前的毫秒数
表2
SerialPort类的常用方法
方法名称 说明
Close 关闭端口连接,将IsOpen 属性设置为False,并释放内部Stream 对象
Open 打开一个新的串行端口连接
Read 从SerialPort 输入缓冲区中读取
ReadByte 从SerialPort 输入缓冲区中同步读取一个字节
ReadChar 从SerialPort 输入缓冲区中同步读取一个字符
ReadLine 一直读取到输入缓冲区中的NewLine 值
ReadTo 一直读取到输入缓冲区中指定value 的字符串
Write 已重载。将数据写入串行端口输出缓冲区
WriteLine 将指定的字符串和
NewLine 值写入输出缓冲区
注意:用跳线使串口的第2、3针连接,可以在本地计算机上实现串口通信,所以,通过串口的第2、3针的连接可以对程序进行检测。串口截面图如图所示
实现过程
(1)新建一个项目,命名为Ex13_01,默认窗体为Form1。
(2)在Form1窗体中,主要添加两个Button控件,分别用于执行发送数据和接受数据,添加两个TextBox控件,用于输入发送数据和显示接收数据。
(3)主要程序代码。
private void button1_Click(object sender, EventArgs e)
{
serialPort1.PortName = "COM1";
serialPort1.BaudRate = 9600;
serialPort1.Open();
byte[] data = Encoding.Unicode.GetBytes(textBox1.Text);
string str = Convert.ToBase64String(data);
serialPort1.WriteLine(str);
MessageBox.Show("数据发送成功!","系统提示");
}
private void button2_Click(object sender, EventArgs e)
{
byte[] data = Convert.FromBase64String(serialPort1.ReadLine());
textBox2.Text = Encoding.Unicode.GetString(data);
serialPort1.Close();
MessageBox.Show("数据接收成功!","系统提示");
}
C#串口控制的更多相关文章
- STM32学习笔记(四)——串口控制LED(中断方式)
目录: 一.时钟使能,包括GPIO的时钟和串口的时钟使能 二.设置引脚复用映射 三.GPIO的初始化配置,注意要设置为复用模式 四.串口参数初始化配置 五.中断分组和中断优先级配置 六.设置串口中断类 ...
- STM32串口控制步进电机(原创)
用的42步进电机: 厂家可能不一样,两项四线步进电机,里面有两个线圈.在电机什么电都没有接的情况下,用万用表测量四个管脚:两两短接(或者阻值很小)的为一组,可以分别接A+,a-剩余接B+,B-;顺序可 ...
- rk3128 通过串口控制 GPIO
2019-04-24 关键字: rk平台控制GPIO功能.rk串口控制引脚电平 本篇文章介绍了如何通过串口来控制 RK3128.RK3288 平台的 GPIO . 我们可以很便捷地通过串口命令来控制 ...
- 51单片机 小车 L298N pwm调速 串口控制 按键控制
难点:1.串口定时器T1,和T0定时器优先级 2.pwm频率与占空比的设置 按键控制 按键1——前进 按键2——后退 按键3——加速 按键4——减速 (板子上只有四个按键) 串口控制 ‘1’——前进 ...
- C#串口控制舵机、arduino源码 及C#源码及界面
原文 C#串口控制舵机.arduino源码 及C#源码及界面 1.舵机原理简介 控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压.它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基 ...
- 串口控制RGB灯程序
实验目的: 通过上位机给串口发送数据(字符); STM32收到数据进入中断程序原封不动返回上位机,并且根据收到的信息产出相应的进行操作.(1- led_on 2 – ledoff...); 源码 ...
- linux下串口控制
/* 本程序符合GPL条约 * Beneboy 2003-5-16 */ #include <stdio.h> // printf #include < ...
- STM32学习笔记(二)——串口控制LED
开发板芯片:STM32F407ZGT6 PA9-USART1_TX,PA10-USART1_RX; PF9-LED0,PF10-LED1; 一.串口1配置过程(不使用串口中断): 1.使能时钟,包括G ...
- C#上位机串口控制12864显示
实现的效果 上面是用Proteus仿真的,,对了如果自己想用proteus仿真需要安装下面这个软件 再看一下实物显示效果 先做上位机部分........... 为了程序一启动就把电脑上能用的串口号显示 ...
- 15-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,调节LED亮度,上位机程序编写
https://www.cnblogs.com/yangfengwu/p/11104167.html 先说一下整体思路哈.. 咱滑动的时候 会进入这个,然后咱呢不直接从这个里面写发送 因为这样的话太快 ...
随机推荐
- cortex m0 lpc1114的NVIC中断如何使用
LPC1114单片机的NVIC中断函数,有开中断.关中断.设置优先级.挂起等操作函数.这些函数位于core_cm0.h文件里面.比如开中断的函数如下: /** \brief Enable Extern ...
- <未测>源码升级安装glibc和rpm升级glibc
源码升级安装glibc和rpm升级glibc http://jacklin9.spaces.live.com/blog/cns!A891B52E1182AFB2!346.entry http://bl ...
- Linux Kernel 释放后重用内存损坏漏洞
漏洞名称: Linux Kernel 释放后重用内存损坏漏洞 CNNVD编号: CNNVD-201307-305 发布时间: 2013-07-18 更新时间: 2013-07-18 危害等级: ...
- JavaScript引擎研究与C、C++与互调用(转)
本文转自:ice6015的专栏.为什么有些招聘需要熟悉JS和C++,这或许就是原因. 1. 概要 JavaScript是一种广泛用于Web客户端开发的脚本语言,常用来控制浏览器的DOM树,给HTML ...
- 《University Calculus》-chaper8-无穷序列和无穷级数-p级数
Q:定义p级数有如下形式,讨论p级数的敛散性.(p>o) 我们以p = 1作为分界点,因为实践表明这个分界点是最优区分度的.那么下面我们进行分情况讨论. 在这之前,我们有必要先引入一个检验敛散性 ...
- J - Invitation Cards
题目大意:邀请卡 在电视的时代,没有多少人会去剧院观看演出.古老的喜剧演员 Malidinesia知道这个事实.他们想传播戏剧尤其是古老的戏剧,他们在邀请卡上打印必要的信息和一些节目,一些学生被雇佣过 ...
- 关于node升级到7.0,无法gulp alljs的问题
http://stackoverflow.com/questions/40308623/cannot-find-module-internal-fs-afer-upgrading-to-node-7 ...
- JSP简易留言板
写在前面 在上篇博文JSP内置对象中介绍JSP的9个内置对象的含义和常用方法,但都是比较理论的知识.今天为大家带来一个小应用,用application制作的简易留言板. 包括三个功能模块:留言提交.留 ...
- Android源码学习
http://android-wheel.googlecode.com/svn/trunk/android-wheel-read-only 在github上面有一个叫做 android-wheel 的 ...
- Jinja2模版语言自定义filter的使用
Jinja2模版语言,自带有一些filter,能够在前端的模版中控制数据按照相应的方式显示.比如以下两种filter,分别能在前端控制数字的近似精度显示和根据字符串长度补齐: round(value, ...