private static void TestReadSyncTime() { ConnectionParameters para = new ConnectionParameters(); para.LinkAddress = 1; para.SizeOfCA = 2; LinkControlDown lc = new LinkControlDown(); lc.FCB = false; lc.FCV = true; lc.FuncCode = LinkFunctionCodeDown.UserData; T102Frame frame = new T102Frame(lc, para); ASDU asdu = new ASDU(CauseOfTransmission.SYNC_TIME, false, false, 1, RecordAddress.Default, false); SyncTime st = new SyncTime(new CP56Time2b(new DateTime(2007, 8, 18, 6, 21, 1, 520))); asdu.AddInformationObject(st); asdu.Encode(frame, para); frame.PrepareToSend(); byte[] aa = frame.GetBuffer(); int length = aa[1]; byte linkControl = aa[4]; int linkAddr = aa[5] + aa[6] * 0x100; //解析 ASDU na = new ASDU(para, aa, length + 4 + 2); InformationObject io = na.GetElement(0); }
private static void TestReadAccountingITWithTimeRangeAndAddressRange() { ConnectionParameters para = new ConnectionParameters(); para.LinkAddress = 1; para.SizeOfCA = 2; LinkControlDown lc = new LinkControlDown(); lc.FCB = false; lc.FCV = true; lc.FuncCode = LinkFunctionCodeDown.UserData; T102Frame frame = new T102Frame(lc, para); ASDU asdu = new ASDU(CauseOfTransmission.ACTIVATION, false, false, 1, RecordAddress.Default, false); ReadAccountingITWithTimeRangeAndAddressRange at = new ReadAccountingITWithTimeRangeAndAddressRange( 3, 7, new CP40Time2b(new DateTime(2007, 8, 18, 0, 0, 0)), new CP40Time2b(new DateTime(2007, 8, 19, 0, 0, 0))); asdu.AddInformationObject(at); asdu.Encode(frame, para); frame.PrepareToSend(); //todo 书上实例报文,记录地址是03,这个有点扯。。。 byte[] aa = frame.GetBuffer(); int length = aa[1]; byte linkControl = aa[4]; int linkAddr = aa[5] + aa[6] * 0x100; //解析 ASDU na = new ASDU(para, aa, length + 4 + 2); InformationObject sp = na.GetElement(0); //无数据 na.Cot = CauseOfTransmission.NO_RECORD; LinkControlUp lc2 = new LinkControlUp(); lc2.ACD = false; lc2.DFC = false; lc2.FuncCode = LinkFunctionCodeUp.NoData; T102Frame frame2 = new T102Frame(lc2, para); na.Encode(frame2, para); frame2.PrepareToSend(); //镜像报文 byte[] bb = frame2.GetBuffer(); }
private static void TestReadSinglePointWithRange() { ConnectionParameters para = new ConnectionParameters(); para.LinkAddress = 1; para.SizeOfCA = 2; LinkControlDown lc = new LinkControlDown(); lc.FCB = false; lc.FCV = true; lc.FuncCode = LinkFunctionCodeDown.UserData; T102Frame frame = new T102Frame(lc, para); ASDU asdu = new ASDU(CauseOfTransmission.ACTIVATION, false, false, 1, RecordAddress.Period_Week_1, false); ReadSinglePointWithTimeRange sptr = new ReadSinglePointWithTimeRange( new CP40Time2b(new DateTime(2007, 9, 2, 1, 0, 0)), new CP40Time2b(new DateTime(2007, 9, 3, 1, 0, 0))); asdu.AddInformationObject(sptr); asdu.Encode(frame, para); frame.PrepareToSend(); //todo: 记录类型书上表的是0x31,这里测试结果是十进制31,根据国外标准,31应该是十进制。具体情况具体分析把。。 byte[] aa = frame.GetBuffer(); int length = aa[1]; byte linkControl = aa[4]; int linkAddr = aa[5] + aa[6] * 0x100; //解析 ASDU na = new ASDU(para, aa, length + 4 + 2); InformationObject sp = na.GetElement(0); //无数据 na.Cot = CauseOfTransmission.NO_RECORD; LinkControlUp lc2 = new LinkControlUp(); lc2.ACD = false; lc2.DFC = false; lc2.FuncCode = LinkFunctionCodeUp.NoData; T102Frame frame2 = new T102Frame(lc2, para); na.Encode(frame2, para); frame2.PrepareToSend(); //镜像报文 byte[] bb = frame2.GetBuffer(); }
private static void TestReadCurrentTime() { ConnectionParameters para = new ConnectionParameters(); para.LinkAddress = 1; para.SizeOfCA = 2; LinkControlDown lc = new LinkControlDown(); lc.FCB = true; lc.FCV = true; lc.FuncCode = LinkFunctionCodeDown.UserData; T102Frame frame = new T102Frame(lc, para); ASDU asdu = new ASDU(TypeID.C_TI_NA_2, CauseOfTransmission.REQUEST, false, false, 1, RecordAddress.Default, false); asdu.Encode(frame, para); frame.PrepareToSend(); byte[] aa = frame.GetBuffer(); int length = aa[1]; byte linkControl = aa[4]; int linkAddr = aa[5] + aa[6] * 0x100; //解析 ASDU na = new ASDU(para, aa, length + 4 + 2); //无ASDU na.Cot = CauseOfTransmission.NO_ASDU_TYPE; LinkControlUp lc2 = new LinkControlUp(); lc2.ACD = false; lc2.DFC = false; lc2.FuncCode = LinkFunctionCodeUp.NoData; T102Frame frame2 = new T102Frame(lc2, para); na.Encode(frame2, para); frame2.PrepareToSend(); //镜像报文 byte[] bb = frame2.GetBuffer(); }