Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
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();
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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();
        }