- 25
- 0
- 约5.34千字
- 约 9页
- 2020-09-13 发布于江苏
- 举报
// C#异步数据接收串口操作类
// dyj057@
using System;
using System.Runtime.InteropServices;
///
/// (C)2003-2005 C2217 Studio 保留所有权利
///
/// 文件名称: IbmsSerialPort.cs
/// 文件 ID:
/// 文件说明:
/// 封装动态链接库 IbmsSerialPort.dll 的功能,提供在.NET 环境中
/// 串口异步接收和发送数据的功能。
///
/// 当前版本: 1.0
///
/// 作者: 邓杨均
/// 创建日期: 2005-2-2
/// 最后修改日期: 2005-2-2
///
/// 历史修改记录:
///
///
namespace Ibms.Tool.IO
{
///
/// 当串口接收到数据时,会产生一个事件。
/// SPRecvDataArgs 就是该事件的参数,参数中 RecvData 包含接收到的数据。
/// 使用方法:
///
public class SPRecvDataArgs:EventArgs
{
///
/// 接收到的数据组成的字节数组
///
private byte[] recvData;
///
/// 构造函数,需要一个包含数据 byte[]作为初始化参数来实例化 SPRecvDataArgs
///
/// 接收到的数据
public SPRecvDataArgs(byte[] recvData)
{
if( recvData == null)
{
throw(new ArgumentNullException());
}
this.recvData = recvData;
}
///
/// 返回接收到的数据内容
///
public byte[] RecvData
{
get
{
return recvData;
}
}
}
///
/// 封装动态链接库 IbmsSerialPort.dll 的功能,提供在.NET 环境中异步
/// 串口接收和发送功能。特别实现的是异步通过信号自动接收数据的模式。
///
public class IbmsSerialPort:IDisposable
{
#region 平台调用声明代码
///
/// 声明 IbmsSerialPort.dll Ibms_OpenPort 函数
///
/// 串口号
/// 波特率
///
[DllImport(IbmsSerialPort.dll)]
public static extern IntPtr Ibms_OpenPort(int nPort, int nRate);
///
/// 声明 IbmsSerialPort.dll Ibms_Close 函数
///
[DllImport(IbmsSerialPort.dll)]
public static extern void Ibms_Close( IntPtr port);
///
/// 声明 IbmsSerialPort.dll Ibms_SendData 函数
///
///
///
///
[DllImport(IbmsSerialPort.dll)]
public static extern bool Ibms_SendData( IntPtr port, byte[] data,int nDataSize);
///
/// 声明 IbmsSerialPort.dll Ibms_SetFuncHandle 函数
///
///
[DllImport(IbmsSerialPort.dll)]
public static extern void Ibms_SetFuncHandle( IntPtr port, HandleFunc handDataFunc);
#endregion
#region 定义字段
///
/// 定义数据处理委托,作为 API 的函数指针传入动态链接库
///
public delegate void HandleFunc(IntPtr pData, int nDataSize);
///
/// 定义数据接收事件的原型
///
public delegate void
原创力文档

文档评论(0)