Exemplo n.º 1
0
        public void PrettyPrint(TheData inData, TheData outData)
        {
            Console.WriteLine($"{"--------------- inData ----------------",-40} |\t {"--------------- outData ----------------",-40}");
            int fc = inData.floats.Count >= outData.floats.Count ? inData.floats.Count : outData.floats.Count;

            for (int i = 0; i < fc; i++)
            {
                string s1 = i < inData.floats.Count ? inData.floats[i].ToString() : "NULL NULL NULL NULL";
                string s2 = i < outData.floats.Count ? outData.floats[i].ToString() : "NULL NULL NULL NULL";
                Console.WriteLine($"{s1,-40} |\t {s2,-40}");
            }
        }
Exemplo n.º 2
0
        public TheData readDAT(string tagsFileName, string floatsFileName)
        {
            TheData result = new TheData();

            using (BinaryReader b = new BinaryReader(File.Open(tagsFileName, FileMode.Open)))
            {
                int pos = 0xA1;
                b.BaseStream.Seek(pos, SeekOrigin.Begin);
                int length = (int)b.BaseStream.Length - 1; //tagfile has a 0x1A end marker

                while (pos < length)
                {
                    TheData.TagRow t = new TheData.TagRow();
                    b.ReadByte(); // 0x20
                    char[] c = b.ReadChars(255);
                    t.tn = new string(c);
                    c    = b.ReadChars(5);
                    t.ti = int.Parse(new string(c));
                    t.tt = int.Parse(new string(b.ReadChars(1)));
                    t.td = int.Parse(new string(b.ReadChars(2)));
                    result.tags.Add(t);
                    pos += 264;
                }
            }
            using (BinaryReader b = new BinaryReader(File.Open(floatsFileName, FileMode.Open)))
            {
                int pos = 0x121;
                b.BaseStream.Seek(pos, SeekOrigin.Begin);
                int length = (int)b.BaseStream.Length;

                while (pos < length)
                {
                    TheData.FloatRow f = new TheData.FloatRow();
                    b.ReadByte(); // 0x20
                    f.date     = new string(b.ReadChars(8));
                    f.time     = new string(b.ReadChars(8));
                    f.millitm  = int.Parse(new string(b.ReadChars(3)));
                    f.tagindex = int.Parse(new string(b.ReadChars(5)));
                    f.value    = b.ReadDouble();
                    f.status   = b.ReadChar().ToString();
                    f.marker   = b.ReadChar().ToString();
                    f.intern   = b.ReadInt32();
                    result.floats.Add(f);
                    pos += 39;
                }
            }
            return(result);
        }
Exemplo n.º 3
0
        public TheData readCSV(string inputData)
        {
            TheData data = new TheData();

            using (var stream = StringStream(inputData))
                using (TextFieldParser csvParser = new TextFieldParser(stream))
                {
                    csvParser.CommentTokens = new string[] { ";" };
                    csvParser.SetDelimiters(new string[] { "," });

                    while (!csvParser.EndOfData)
                    {
                        string[] fields = csvParser.ReadFields();
                        if (fields.Length == 5)
                        {
                            TheData.TagRow t = new TheData.TagRow();
                            t.tn = fields[0];
                            t.ti = int.Parse(fields[1]);
                            t.tt = int.Parse(fields[2]);
                            t.td = int.Parse(fields[3]);
                            data.tags.Add(t);
                        }
                        else
                        {
                            TheData.FloatRow f = new TheData.FloatRow();
                            f.date     = fields[0];
                            f.time     = fields[1];
                            f.millitm  = int.Parse(fields[2]);
                            f.tagindex = int.Parse(fields[3]);
                            f.value    = double.Parse(fields[4]);
                            f.status   = fields[5];
                            if (String.IsNullOrEmpty(f.status))
                            {
                                f.status = " ";
                            }
                            f.marker = fields[6];
                            if (String.IsNullOrEmpty(f.marker))
                            {
                                f.marker = " ";
                            }
                            f.intern = int.Parse(fields[7]);
                            data.floats.Add(f);
                        }
                    }
                }
            return(data);
        }
Exemplo n.º 4
0
        public void CreateTables(string TablePrefix, TheData data)
        {
            using (SqlConnection conn = new SqlConnection(connString))
            {
                conn.Open();

                ExecBool(conn, $"IF OBJECT_ID('{TablePrefix}TagTable', 'U') IS NOT NULL DROP TABLE [{TablePrefix}TagTable]");
                ExecBool(conn, $"CREATE TABLE [{TablePrefix}TagTable] ([TagName] [nvarchar](255) NULL, [TagIndex] [smallint] NULL, [TagType] [smallint] NULL, [TagDataType] [smallint] NULL)");
                foreach (var t in data.tags)
                {
                    ExecBool(conn, $"INSERT INTO [{TablePrefix}TagTable] VALUES ('{t.tn}', {t.ti}, {t.tt}, {t.td})");
                }

                ExecBool(conn, $"IF OBJECT_ID('{TablePrefix}FloatTable', 'U') IS NOT NULL DROP TABLE [{TablePrefix}FloatTable]");
                ExecBool(conn, $"CREATE TABLE [{TablePrefix}FloatTable] ([DateAndTime] [datetime] NULL, [Millitm] [smallint] NULL, [TagIndex] [smallint] NULL, [Val] [float] NULL, [Status] [nvarchar] (1) NULL, [Marker] [nvarchar] (1) NULL)");
                foreach (var f in data.floats)
                {
                    ExecBool(conn, $"INSERT INTO [{TablePrefix}FloatTable] VALUES ('{f.date} {f.time}', {f.millitm}, {f.tagindex}, {f.value}, '{f.status}', '{f.marker}')");
                }
            }
        }