/// <summary> /// 使用恋空控制域和链路地址,获取固定长度帧 /// </summary> /// <param name="lc"></param> /// <param name="linkAddr"></param> /// <returns></returns> public static byte[] GetBufferFix(LinkControl lc, int linkAddr) { byte[] buf = new byte[6]; buf[0] = 0x10; buf[5] = 0x16; //链路控制域和链路地址赋值 buf[1] = lc.getValue(); buf[2] = (byte)(linkAddr % 0x100); buf[3] = (byte)(linkAddr / 0x100); //计算校验和 byte checksum = 0; checksum += buf[1]; checksum += buf[2]; checksum += buf[3]; buf[4] = checksum; return(buf); }
/// <summary> /// 使用链路控制域和连接参数设置一个帧(连接参数中有链路地址) /// </summary> /// <param name="lc"></param> /// <param name="para"></param> public T102Frame(LinkControl lc, ConnectionParameters para) : this(lc, para.LinkAddress) { }
/// <summary> /// 使用链路控制域和链路地址设置一个帧 /// </summary> /// <param name="lc"></param> /// <param name="linkAddr"></param> public T102Frame(LinkControl lc, int linkAddr) : this(lc) { SetLinkAddress(linkAddr); }
/// <summary> /// 使用链路控制域创建一个帧 /// </summary> /// <param name="lc"></param> public T102Frame(LinkControl lc) : this() { SetLinkControl(lc); }
/// <summary> /// 发送前调用,更新报文长度,还有校验和,报文结束标志,还有链路控制域和链路地址 /// </summary> /// <param name="lc"></param> /// <param name="linkAddr"></param> public override void PrepareToSend(LinkControl lc, int linkAddr) { SetLinkAddress(linkAddr); PrepareToSend(lc); }
/// <summary> /// 发送前调用,更新报文长度,还有校验和,报文结束标志,还有链路控制域 /// <para>这里没有设置链路地址,如果初始化的时候没搞定的话,必须再调用这个函数之前手动处理一下</para> /// </summary> /// <param name="lc"></param> public override void PrepareToSend(LinkControl lc) { SetLinkControl(lc); PrepareToSend(); }
/// <summary> /// 设置链路控制域 /// </summary> /// <param name="lc"></param> public void SetLinkControl(LinkControl lc) { this.lc = lc; buffer[4] = lc.getValue(); }
/// <summary> /// 发送前调用,更新报文长度,还有校验和,报文结束标志,还有链路控制域和链路地址 /// </summary> /// <param name="lc"></param> /// <param name="linkAddr"></param> public abstract void PrepareToSend(LinkControl lc, int linkAddr);
/// <summary> /// 发送前调用,更新报文长度,还有校验和,报文结束标志,还有链路控制域 /// <para>这里没有设置链路地址,如果初始化的时候没搞定的话,必须再调用这个函数之前手动处理一下</para> /// </summary> /// <param name="lc"></param> public abstract void PrepareToSend(LinkControl lc);