using System;
|
using System.Diagnostics;
|
|
namespace Bro.Common.Link
|
{
|
/// <summary>
|
/// 设备的连接基类
|
/// </summary>
|
public abstract class LinkBase
|
{
|
// 默认保存数据缓存长度
|
public const int DFT_BUFF_LEN = 4096;
|
|
// 连接对象接收缓存大小
|
public const int DFT_SEND_BUFF_LEN = 4096;
|
// 连接对象发送缓存大小
|
public const int DFT_RECV_BUFF_LEN = 4096;
|
|
// 连接描述
|
public string Desp { get;set;}
|
// 初始化状态
|
public bool IsInit { get;set; }
|
// 连接状态
|
public bool IsConn { get;set;}
|
// 接收缓存长度
|
public int BufferLen { get;set;}
|
// 接收缓存大小
|
public int SendBuffLen { get;set;}
|
// 发送缓存大小
|
public int RecvBuffLen { get;set;}
|
|
// 接收缓存
|
protected byte[] rcvBuf = null;
|
|
// 连接状态
|
public LinkBase()
|
{
|
Desp = this.GetType().Name;
|
IsInit = false;
|
IsConn = false;
|
SendBuffLen = DFT_SEND_BUFF_LEN;
|
RecvBuffLen = DFT_RECV_BUFF_LEN;
|
BufferLen = DFT_BUFF_LEN;
|
|
}
|
|
/// <summary>
|
/// 连接初始化
|
/// </summary>
|
/// <returns></returns>
|
public virtual bool Init()
|
{
|
if ( IsInit )
|
{
|
return true;
|
}
|
|
try
|
{
|
rcvBuf = new byte[BufferLen];
|
|
return true;
|
}
|
catch(Exception ex)
|
{
|
Trace.TraceError("Link:{0} Init fail, ex:{1}-{2}", this.Desp, ex.Message, ex.StackTrace);
|
}
|
|
return false;
|
}
|
|
/// <summary>
|
/// 打开连接
|
/// </summary>
|
/// <returns></returns>
|
public abstract bool Open();
|
|
/// <summary>
|
/// 关闭连接
|
/// </summary>
|
public abstract void Close();
|
|
/// <summary>
|
/// 销毁
|
/// </summary>
|
public abstract void Fnit();
|
|
/// <summary>
|
/// 接收数据
|
/// </summary>
|
/// <param name="rcvBuf"></param>
|
/// <param name="offset"></param>
|
/// <returns></returns>
|
public abstract int Recv(byte[] rcvBuf, int offset);
|
|
/// <summary>
|
/// 发送数据
|
/// </summary>
|
/// <param name="sndBuf"></param>
|
/// <returns></returns>
|
public abstract bool Send(byte[] sndBuf, int offset, int len);
|
|
}
|
|
|
}
|