`
- 浏览:
1886668 次
- 性别:
- 来自:
北京
-
SerialPort中串口数据的读取与写入有较大的不同。由于串口不知道数据何时到达,因此有两种方法可以实现串口数据的读取。一、线程实时读串口;二、事件触发方式实现。
由于线程实时读串口的效率不是十分高效,因此比较好的方法是事件触发的方式。在SerialPort类中有DataReceived事件,当串口的读缓存有数据到达时则触发DataReceived事件,其中SerialPort.ReceivedBytesThreshold属性决定了当串口读缓存中数据多少个时才触发DataReceived事件,默认为1。
另外,SerialPort.DataReceived事件运行比较特殊,其运行在辅线程,不能与主线程中的显示数据控件直接进行数据传输,必须用间接的方式实现。如下:
SerialPortspSend;//spSend,spReceive用虚拟串口连接,它们之间可以相互传输数据。spSend发送数据
SerialPortspReceive;//spReceive接受数据
TextBoxtxtSend;//发送区
TextBoxtxtReceive;//接受区
ButtonbtnSend;//数据发送按钮
delegatevoidHandleInterfaceUpdateDelegate(stringtext);//委托,此为重点
HandleInterfaceUpdateDelegateinterfaceUpdateHandle;
publicvoidInitClient()//窗体控件已在初始化
{
interfaceUpdateHandle=newHandleInterfaceUpdateDelegate(UpdateTextBox);//实例化委托对象
spSend.Open();//SerialPort对象在程序结束前必须关闭,在此说明
spReceive.DataReceived+=Ports.SerialDataReceivedEventHandler(spReceive_DataReceived);
spReceive.ReceivedBytesThreshold=1;
spReceive.Open();
}
publicvoidbtnSend_Click(objectsender,EventArgse)
{
spSend.WriteLine(txtSend.Text);
}
publicvoidspReceive_DataReceived(objectsender,Ports.SerialDataReceivedEventArgse)
{
byte[]readBuffer=newbyte[spReceive.ReadBufferSize];
spReceive.Read(readBuffer,0,readBuffer.Length);
this.Invoke(interfaceUpdateHandle,newstring[]{Encoding.Unicode.GetString(readBuffer)});
}
privatevoidUpdateTextBox(stringtext)
{
txtReceive.Text=text;
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
这个是我在某宝花几元购买的针对C#上位机开发的小实例程序,非常实用,该文档主要介绍基于VC#.net上位机开发事例,重点介绍了C#SerialPort类的一些相关方法,最后通过事例介绍了一个简单的基于C#的上位机开发事例
c# serialport类使用,使用com口发送接收数据,实例里面有关于二进制,十六进制发送,serialport很强大
详细介绍C# SerialPort控件对串口进行通信
C#SerialPort串口通信源代码,可传输16进制,适合初学者。
C#serialPort--TcpSerialport串口通讯 实现serialPort通讯与TcpSerialport通讯
支持串口大量数据读写操作,能一次性读取数据,通过设置超时大小控制一次读取串口所有数据。支持事件触发,异步发送接收数据。附件有demo,可下载Virtual Serial Port Driver模拟串口测试。
对C#的serialport类功能进行了总结,给出了发送,接收数据的完整操作类代码,可直接运用该类进行c#的串口数据操作
需要用c# serialport控件来编写串口程序的希望能对你有所帮助
c# 写的一个简单的串口通信工程,保存串口配置、通信交互日志、SerialPort类库等
C# serialport 控件 使用 SerialPort访问COM接口获取电子秤数据(C#)
一个C#的串口rs232的读取文件的源码,说明了运用c#的serialport class的方法
C#SerialPort控件开发串口通信程序的例子 源码.rar 很不错的通信使用的教程。。
http://blog.csdn.net/wuyazhe/archive/2010/05/19/5606276.aspx 博客文章的配套代码。希望能帮助到你。
c# serialport 操作,接受与发送
用C#写的serialport,echo完全没问题
C# SerialPort串口开发技术相关类、属性、方法、事件等用法详细说明,并且配有详细的开发实例。
实现串口事件DataReceived接收数据 后台开启一个监控线程来监控是否数据接收完成 定义3个事件,用来通知数据接收完成、数据发送完成、每次接收数据。
简单明了的利用SerialPort类读取和发送串口数据
C# SerialPort 例子程序,介绍如何使用SerialPort类控制LCD屏。
一看就会,上手快,关于串口的打开,关闭,数据发送,数据的接收,数据处理,更新线程,自动发送等,本程序的数据处理是判断接收到的数据的数据格式是否正确 .