public int L2SendPingSgn() { sL1Object_t L1Obj = new sL1Object_t(); if (L1Object.L1Object_BuildCMDPkg(this, (byte)PKG_TYPE.PING_PKG, u8Seq, ref L1Obj) == 1) { try { byte[] tempByte = new byte[L1Obj.u16DataLen + 1 + L1Object.HEADER_LENGTH]; L1Object.L1Object_L1ObjectToArray(L1Obj, ref tempByte); L1Handler.Send(tempByte); } catch (System.Exception ex) { Trace.WriteLine("Can not send PING package!\r\n"); return(0); } /*Reset sequence*/ u8Seq = 0; return(1); } else { Trace.WriteLine("Can not build package from input data./r/n"); return(0); } }
public int L2ReSendLastCMD() { try { byte[] tempByte = new byte[sObjLastCMDPkg.u16DataLen + 1 + L1Object.HEADER_LENGTH]; L1Object.L1Object_L1ObjectToArray(sObjLastCMDPkg, ref tempByte); L1Handler.Send(tempByte); } catch (System.Exception ex) { Trace.WriteLine("Can not send data!\r\n"); return(0); } return(1); }
public int L2SendCMD(byte eMinor) { sL1Object_t L1Obj = new sL1Object_t(); if (L1Object.L1Object_BuildCMDPkg(this, eMinor, u8Seq, ref L1Obj) == 1) { byte[] tempByte = new byte[L1Obj.u16DataLen + 1 + L1Object.HEADER_LENGTH]; L1Object.L1Object_L1ObjectToArray(L1Obj, ref tempByte); try { L1Handler.Send(tempByte); } catch (System.Exception ex) { Trace.WriteLine(ex.Message); return(0); } /*Increase sequence*/ u8Seq++; Buffer.BlockCopy(L1Obj.aPayLoad, 0, sObjLastCMDPkg.aPayLoad, 0, L1Obj.u16DataLen); sObjLastCMDPkg.bIsEnableEncrypt = L1Obj.bIsEnableEncrypt; sObjLastCMDPkg.bIsNeedFeedBackACK = L1Obj.bIsNeedFeedBackACK; sObjLastCMDPkg.u16DataLen = L1Obj.u16DataLen; sObjLastCMDPkg.u8MajorCmd = L1Obj.u8MajorCmd; sObjLastCMDPkg.u8MinorCmd = L1Obj.u8MinorCmd; sObjLastCMDPkg.u8Seq = L1Obj.u8Seq; return(1); } else { Trace.WriteLine("Can not build package from input data./r/n"); return(0); } }
private void L2SendPkg(L2Pkg pkg) { if (pkg.isNeededACK) { int sendTimes = (int)pkg.resend + 1; bool respond = false; //Send data and wait respond do { l2State = L2State_E.TX_MODE; sL1Object_t obj = new sL1Object_t(); L1Object.L1Object_BuildFromData(this, pkg.data, pkg.MinorCmd, u8Seq, ref obj); byte[] temp = new byte[pkg.data.Length + 1 + L1Object.HEADER_LENGTH]; L1Object.L1Object_L1ObjectToArray(obj, ref temp); L1Handler.Send(temp); l2State = L2State_E.WAIT_RESP_MODE; //Wait respond event if (ACKRespondEvent.WaitOne(TIME_WAIT_DEV_RESPOND)) { respond = true; } else { Trace.WriteLine("L2:Resend " + sendTimes.ToString()); if (IsResetEn) { try { L1Handler.Close(); L1Handler.Open(); } catch (Exception ex) { l2State = L2State_E.ERROR; Trace.WriteLine(ex.Message); } } } ACKRespondEvent.Reset(); sendTimes--; } while (respond == false && sendTimes > 0); if (respond == false && sendTimes <= 0) { l2State = L2State_E.ERROR; } else { l2State = L2State_E.NORMAL_MODE; } } else { l2State = L2State_E.TX_MODE; sL1Object_t obj = new sL1Object_t(); L1Object.L1Object_BuildFromData(this, pkg.data, pkg.MinorCmd, u8Seq, ref obj); byte[] temp = new byte[pkg.data.Length + 1 + L1Object.HEADER_LENGTH]; L1Object.L1Object_L1ObjectToArray(obj, ref temp); L1Handler.Send(temp); l2State = L2State_E.NORMAL_MODE; } }