王朝网络
分享
 
 
 

C#串口控制

王朝学院·作者佚名  2016-05-20  
宽屏版  字体: |||超大  

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)主要程序代码。 PRivatevoidbutton1_Click(objectsender,EventArgse) { serialPort1.PortName="COM1"; serialPort1.BaudRate=9600; serialPort1.Open(); byte[]data=Encoding.Unicode.GetBytes(textBox1.Text); stringstr=Convert.ToBase64String(data); serialPort1.WriteLine(str); MessageBox.Show("数据发送成功!","系统提示"); } privatevoidbutton2_Click(objectsender,EventArgse) { byte[]data=Convert.FromBase64String(serialPort1.ReadLine()); textBox2.Text=Encoding.Unicode.GetString(data); serialPort1.Close(); MessageBox.Show("数据接收成功!","系统提示");

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有