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("数据接收成功!","系统提示");

}

时间: 2024-10-01 12:40:03

C#串口控制的相关文章

STM32学习笔记(四)——串口控制LED(中断方式)

目录: 一.时钟使能,包括GPIO的时钟和串口的时钟使能 二.设置引脚复用映射 三.GPIO的初始化配置,注意要设置为复用模式 四.串口参数初始化配置 五.中断分组和中断优先级配置 六.设置串口中断类型并使能串口中断 七.编写中断服务函数函数名格式为函数名格式为 USARTxIRQHandler(x 对应串口号). 八.主函数的实现. 一.时钟使能,包括GPIO的时钟和串口的时钟使能 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); //

上位机串口控制FPGA开发板LED

实验目的: 上位机软件通过串口控制FPGA开发板上4个LED灯的亮灭,同时数码管显示LED灯亮的个数,实验效果如下图. 实验背景: 一直都想学习FPGA,这次算是入门了,我是看书学习的,所以FPGA的代码是参考着书本上的修改的,其实很高兴,因为这个实验是我自己发散出来的,书上的开发板和我用的开发板不一样,并且小软件也是自己用C#写的,总之,挺开心吧,本着开源的精神,所有的上位机代码和FPGA程序上传,如有需要请自行下载(点此下载).工作就没时间写教程之类的,简单的介绍一下吧 硬件平台: Cycl

STM32串口控制步进电机(原创)

用的42步进电机: 厂家可能不一样,两项四线步进电机,里面有两个线圈.在电机什么电都没有接的情况下,用万用表测量四个管脚:两两短接(或者阻值很小)的为一组,可以分别接A+,a-剩余接B+,B-;顺序可以互换:  经测,我用的17hs4417  黑绿一组,红蓝一组. 建议还是买个步进电机驱动器,五六十一个,相当好用. 贴一下STM32串口控制步进电机的代码: #include "led.h" #include "delay.h" #include "key.

工业串口触摸屏开发制作mp3播放器,单片机或PLC通过串口控制播放MP3音频方法

在工业控制系统中将音乐或语音MP3的美和工控结合在一起,给人以赏心悦目的感受.随着工业控制的发展,对工业控制的控制要求也越来越高,使得越来越多的控制部分不是指简单的现场控制,还需要增加音乐播放或语音提示,使得控制系统更加人性化. 这里介绍广州易显的工业串口触摸屏或者ARM工控机连接单片机或者PLC,使用工业串口触摸屏开发制作mp3的方法.跟电脑的播放器一样,具有播放,暂停,停止,控制播放进度,上一首,下一首等功能.可以在人机界面上控制播放MP3音乐或者语音提示.也可以使用单片机或PLC控制播放的

串口控制RGB灯程序

实验目的: 通过上位机给串口发送数据(字符); STM32将数据原封不动返回上位机,并且根据收到的信息产出相应的中断进行操作.(1-red led 2 –bule led...); 源码 bsp_usart.c #include "bsp_usart.h" static void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; /* 嵌套向量中断控制器组选择 */ NVIC_PriorityGroupCon

C#串口控制舵机   arduino源码 及C#源码及界面

1.舵机原理简介 控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压.它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出.最后,电压差的正负输出到电机驱动芯片决定电机的正反转.当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动. 舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms.以180度角度伺服为例,那么

利用VS C# 实现串口控制视频的播放 use VLC

开发环境:VS2013, C#, VLC播放器 实现的功能: 1.利用串口通信来控制视频的播放, 2.接收到"1"时播放第一个视频,若10s内没有接收到"1",自动播放第二个视频,期间忽略接受到的0: 3.若正在播放第二个视频,接收到"1",立马播放视频1, 整个功能的实现主要就用到了2个控件和1个VLC类,控件SerialPort和timer&&类VlcPlayer.cs 重要提示:项目必须使用.NET 2.0,并且电脑需要安装

C#上位机串口控制12864显示

实现的效果 上面是用Proteus仿真的,,对了如果自己想用proteus仿真需要安装下面这个软件 再看一下实物显示效果 先做上位机部分........... 为了程序一启动就把电脑上能用的串口号显示在下拉框中 private void Form1_Load(object sender, EventArgs e) { string[] ComName = SerialPort.GetPortNames();//把可用的串口号存入comname comboBoxCom.Items.AddRange

通过RS232串口控制LG电视

现在大部分LG电视都自带一个串口(RS232),其实通过这个串口可以完全操纵LG电视,并且功能比用遥控器强大.通过利用串口发送指令,可以对电视进行一些简单操作比如开关电视,调整音量,调换频道.也可以进行复杂控制比如调台.除此之外还能实现一些遥控器实现不了的功能,比如黑屏(screenmute),锁屏(之后遥控器和电视面板按钮将不起作用).通过串口还可以发送每个按钮指令,所以功能上能完全替代电视遥控器. 具体细节官方提供了一个文档,可以在我的资源页面里下载http://download.csdn.