Esempio n. 1
0
File: JSON.cs Progetto: kkouer/PcGcs
        public static void test()
        {
            StreamReader sr = new StreamReader(@"C:\Users\michael\AppData\Local\VirtualStore\Program Files (x86)\Swift Navigation\Piksi Console\serial-link-20150706-090309.log.json");

            piksi pk = new piksi();

            while (!sr.EndOfStream)
            {
                string line = sr.ReadLine();
                var item = getpacket(line);

                pk.ProcessMessage(item);
            }
        }
Esempio n. 2
0
        public static void writeTrimble55_1(IStreamExtra outputto, piksi.ephemeris_t es, int prn)
        {
            MemoryStream dat = new MemoryStream();

            BinaryWriter bw = new BinaryWriter(dat);

            bw.Write((byte)0x02);
            bw.Write((byte)0x00);
            bw.Write((byte)tcomType.RET_SVDATA);
            bw.Write((byte)(180 - 4)); // 4 for header

            reverseEndian(bw, (byte)0x1); // Data type
            reverseEndian(bw, (byte)prn);

            //int tow = (int)time2gpst(es.ttr, ref weekwork);
            //int toc = (int)time2gpst(es.toc, ref weekwork);
            //int toe = (int)time2gpst(es.toe, ref weekwork);

            //if (toe < tow)
            {
              //  weekwork--;
            }

            //int iodc =

            reverseEndian(bw, (ushort)(es.toe.wn));
            reverseEndian(bw, (ushort)0);//es.iodc);
            reverseEndian(bw, (byte)0); // res
            reverseEndian(bw, (byte)0);//es.iode);
            reverseEndian(bw, (int)es.toc.tow);
            reverseEndian(bw, (int)es.toc.tow);
            reverseEndian(bw, (int)es.toe.tow);
            reverseEndian(bw, (double)es.tgd); // check scale ex -1.72294676303864e-8
            reverseEndian(bw, (double)es.af2);
            reverseEndian(bw, (double)es.af1);
            reverseEndian(bw, (double)es.af0);
            reverseEndian(bw, (double)es.crs);
            reverseEndian(bw, (double)es.dn / SC2RAD);
            reverseEndian(bw, (double)es.m0 / SC2RAD);
            reverseEndian(bw, (double)es.cuc / SC2RAD);
            reverseEndian(bw, (double)es.ecc);
            reverseEndian(bw, (double)es.cus / SC2RAD);
            reverseEndian(bw, (double)es.sqrta); // checkme
            reverseEndian(bw, (double)es.cic / SC2RAD);
            reverseEndian(bw, (double)es.omega0 / SC2RAD);
            reverseEndian(bw, (double)es.cis / SC2RAD);
            reverseEndian(bw, (double)es.inc / SC2RAD);
            reverseEndian(bw, (double)es.crc);
            reverseEndian(bw, (double)es.w / SC2RAD);
            reverseEndian(bw, (double)es.omegadot / SC2RAD);
            reverseEndian(bw, (double)es.inc_dot / SC2RAD);

            uint flags = 0;

            flags = flags | (uint)(0 & 1);
            flags = flags | (uint)((1 & 3) << 1);
            flags = flags | (uint)((1) << 3);
            flags = flags | (uint)(((es.healthy-1) & 63) << 4);
            flags = flags | (uint)(((uint)0 & 1) << 10);
            flags = flags | (uint)((0 & 15) << 11);
            //flags = flags | (uint)((raw.alm[sat - 1].svconf & 7) << 16);
            flags = flags | (uint)((0) << 19);

            reverseEndian(bw, (int)flags);

            // exclude startchar
            bw.Seek(1, SeekOrigin.Begin);
            int num = 0;
            while (dat.Position < dat.Length)
            {
                byte num2 = (byte)dat.ReadByte();
                num = (byte)(num + num2);
            }

            outputto.Write(dat.ToArray(), 0, (int)dat.Length);

            CtcomTail tail = new CtcomTail();
            tail.checksum = (byte)num;
            tail.writeToStream(outputto);
        }