/// <summary> /// 设置通讯协议规约 /// </summary> /// <param name="frameH">帧头字节</param> /// <param name="frameF">帧尾字节</param> /// <param name="keyIndex">键值索引号</param> /// <param name="keyLen">键值字节长度</param> /// <param name="seq">执行序列</param> /// <returns>返回设置的协议</returns> public Protocol setProtocol(byte[] frameH, byte[] frameF, int keyIndex, int keyLen, SequenceType seq) { Protocol p = new Protocol(); p.FrameHeader = frameH; p.FrameFoot = frameF; p.KeyIndexStart = keyIndex; p.KeyLength = keyLen; p.ExecuteSequence = seq; return this.ptl = p; }
/// <summary> /// 设置通讯协议规约 /// </summary> /// <param name="pt">协议规约</param> /// <returns>返回设置的协议</returns> public Protocol setProtocol(Protocol pt) { if (null == pt) return this.ptl = pt; //帧头帧尾属性 Protocol p = new Protocol(); p.FrameHeader = pt.FrameHeader; p.FrameFoot = pt.FrameFoot; p.KeyIndexStart = pt.KeyIndexStart; p.KeyLength = pt.KeyLength; p.ExecuteSequence = pt.ExecuteSequence; p.MergeListHandle = pt.MergeListHandle; //帧长度属性 p.LenEncoding = pt.LenEncoding; p.IsLenByte = pt.IsLenByte; p.EncodingByte = pt.EncodingByte; p.IsLenChangeHL = pt.IsLenChangeHL; p.IsLenHEX = pt.IsLenHEX; p.LenIndexStart = pt.LenIndexStart; p.LenLength = pt.LenLength; //帧定长属性 p.TotalBytes = pt.TotalBytes; return this.ptl = p; }
/// <summary> /// 设置RF通讯端口,波特率,站址,被动只接收数据 /// </summary> /// <param name="port">RF射频串口</param> /// <param name="baudRate">波特率</param> /// <returns>能够打开端口则成功,端口占用或参数非法则失败</returns> public bool setRfTarget(string port, int baudRate) { CommiManager mgr = CommiManager.GlobalManager; if (null != this.rftar && this.rftar.PortName == port) { mgr.SendCommand(this.rftar, this.cmdRFID); return true; } if (null != this.rftar) mgr.RemoveCommand(this.rftar); this.rftar = null; try { CommiTarget tar = new CommiTarget(port, baudRate); Protocol ptl = new Protocol(); ptl.FrameHeader = new byte[] { 0x02 }; ptl.FrameFoot = new byte[] { 0x03, 0x0A, 0x0D }; ptl.TotalBytes = 13; tar.setProtocol(ptl); if (!mgr.TestConnect(tar)) return false; this.rftar = tar; } catch { return false; } //命令只接收数据 this.cmdRFID.ResetState(); byte[] request = new byte[] { 0x02, 0x00, 0x00, 0x03, 0x0A, 0x0D }; this.cmdRFID.setCommand(request); mgr.SendCommand(this.rftar, this.cmdRFID); return true; }