Esempio n. 1
0
        private TextPackage ReadText()
        {
            int Seq=0,Address=0,Len=0,LRC=0,HeadLRC=0;
            byte[] text=null;
            TextPackage textPackage = new TextPackage();
            Seq = ReadByte(stream);
            Address = ReadByte(stream) * 256;
            Address+= ReadByte(stream);
            Len = ReadByte(stream) * 256;
            Len += ReadByte(stream);
            HeadLRC = ReadByte(stream);
            textPackage.Seq = Seq;
            textPackage.Address = Address;
              //  textPackage.LRC = HeadLRC;

            if (HeadLRC != (((Address >> 8) & 0x00ff) ^ (Address & 0x00ff) ^ ((Len >> 8) & 0x00ff) ^ (Len & 0x00ff)))
            {
              // textPackage.HasErrors = true;
                textPackage.SetErrBit(V2DLE.DLE_ERR_FRAME, true);
                textPackage.eErrorDescription += "Hearder LRC Error!\r\n";
                //Console.WriteLine("Hearder LRC Error!");
                return textPackage;
            }
            else
            {

                text = new byte[Len];
                int rlen = 0;

                do
                {
                    rlen+=stream.Read(text,rlen, Len-rlen);

                } while (rlen != Len);
                //for (int i = 0; i < Len; i++)
                //    text[i] = (byte)stream.ReadByte();

                //if (rlen != Len)
                //   Console.WriteLine("rLen={0}!=len={1}",rlen,Len);

                LRC=DLE ^ SOH ^ Seq ;
                for (int i = 0; i < text.Length; i++)
                    LRC ^= text[i];

                int tmp = ReadByte(stream);
                if (LRC !=tmp)// stream.ReadByte())
                {
                    textPackage.SetErrBit(V2DLE.DLE_ERR_LCR, true);
                    textPackage.eErrorDescription += "LRC Error!\r\n";
                    textPackage.Text = text;
                    Console.WriteLine("LRC Error!"+"==>"+ textPackage.ToString());
                    return textPackage;
                }
                else
                {
                   textPackage.Text=text;
                   textPackage.LRC = LRC;
                   return textPackage;

                }

            }
        }
Esempio n. 2
0
        public System.Data.DataSet GetETTU_ReturnDsByTextPackage(TextPackage[] txt)
        {
            Cmd cmd;

               byte[] data = new byte[txt[0].ETTU_Text.Length + (txt[0].ETTU_Text.Length - 2) * (txt.Length - 1)];
             //  int inx = 0;
               for (int i = 0; i < txt.Length; i++)
               {
               if (i == 0)
                   System.Array.Copy(txt[0].ETTU_Text, data, txt[0].ETTU_Text.Length);
               else
                   System.Array.Copy(txt[i].ETTU_Text, 2, data, txt[0].ETTU_Text.Length + (i - 1) * (txt[0].ETTU_Text.Length - 2), txt[0].ETTU_Text.Length - 2);
               }

               cmd = getCmdByTextPackage(txt[0], CmdType.CmdQuery);
               if (cmd == null)
               {
               Console.WriteLine(txt.ToString() + "look up fail!");
               return null;

               }

               TextPackage txtpkg = new TextPackage();
               txtpkg.Text = data;

               return  cmd.GetETTUReturnDsByTextPackage(txt.Length,txtpkg);
        }
Esempio n. 3
0
        public System.Data.DataSet GetReturnDsByTextPackage(TextPackage txt)
        {
            Cmd cmd;

               //if (txt.Cmd == 0x04)
               //    cmd = getCmd((byte)txt.Cmd, txt.Text[1], CmdType.CmdQuery);

               //else
               //    cmd = getCmd((byte)txt.Cmd, (txt.Cmd == 0x0f) ? txt.Text[1] : (byte)0xff, CmdType.CmdQuery);
               cmd = getCmdByTextPackage(txt, CmdType.CmdQuery);
               if (cmd == null)
               {
               Console.WriteLine(txt.ToString() + "look up fail!");
               return null;

               }
               else
               return cmd.GetReturnDsByTextPackage(txt);
        }
Esempio n. 4
0
        private DataSet process_0x04_0x50_returnDs(TextPackage pkg)
        {
            try
            {
                int row=0, col=0;

                DataSet ds = GetReturnCmdTemplateDs();

                System.Collections.IEnumerator ie = this.GetReturnCmdEnum().GetEnumerator();

                int inx = 0;
                if (this.subCmd == 0xff)
                    inx = 1;  //no subcmd
                else
                    inx = 2; //has sub cmd

                while (ie.MoveNext())
                {
                    CmdItem item;
                    ulong val = 0;
                    item = (CmdItem)ie.Current;
                    val = 0;
                    for (int i = 0; i < item.Bytes; i++)
                        val = val * 256 + pkg.Text[inx++];

                    if (item.ItemName == "row")
                        row =(int) val;
                    if (item.ItemName == "column")
                        col = (int)val;
                    if (item.ItemName == "pattern_cnt")
                    {
                        val =(ulong)( row * col / 8);

                    }
                    ds.Tables["tblMain"].Rows[0][item.ItemName] = val;

                    if (item.HasSubItems)
                    {
                        int subval = 0;
                        for (int i = 0; i < (int)val; i++)  //val=repeat cnt
                        {
                            System.Data.DataRow r = ds.Tables["tbl" + item.ItemName].NewRow();
                            foreach (CmdItem subItem in item.SubItems)  // get subval field
                            {
                                subval = 0;
                                for (int k = 0; k < subItem.Bytes; k++)
                                    subval = subval * 256 + pkg.Text[inx++];
                                r[subItem.ItemName] = subval;
                            }

                            ds.Tables["tbl" + item.ItemName].Rows.Add(r);

                        }

                        for (int i = 0; i < (int)item.SubItemsCnt; i++)
                            ie.MoveNext();

                    }

                } //while

                return ds;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message+ex.StackTrace + "," + pkg.ToString());
                return null;
            }
        }
Esempio n. 5
0
        void MFCC_ETTU_OnTCReport(object tc, TextPackage txt)
        {
            ConsoleServer.WriteLine(txt.ToString());
            try
            {
                if (txt.Text[0] == 0x29 && txt.Text[1] == 0x17 || txt.Text[0] == 0x25 && txt.Text[1] == 0x25 || txt.Text[0]==0x29 && txt.Text[1]==0x08 )
                {

                    DataSet ds = protocol.GetETTU_SendDsByReportTextPackage(txt);
                    System.Data.DataRow r = ds.Tables[0].Rows[0];
                    string devicename = "ET_";
                    for (int i = 1; i <= 9; i++)
                        if(txt.Text[0]==0x29 && txt.Text[1]==0x08)
                            devicename = devicename + System.Convert.ToChar(r["c" + i]).ToString();
                        else
                            devicename = devicename + System.Convert.ToChar(r["co" + i]).ToString();

                    string year = "";

                    for (int i = 1; i <= 4; i++)
                        year += System.Convert.ToChar(r["y" + i]).ToString();

                    string mon = "";

                    for (int i = 1; i <= 2; i++)
                        mon += System.Convert.ToChar(r["m" + i]).ToString();
                    string day = "";

                    for (int i = 1; i <= 2; i++)
                        day += System.Convert.ToChar(r["d" + i]).ToString();

                    string hour = "";

                    for (int i = 1; i <= 2; i++)
                        hour += System.Convert.ToChar(r["h" + i]).ToString();

                    string min = "";

                    for (int i = 1; i <= 2; i++)
                        min += System.Convert.ToChar(r["i" + i]).ToString();

                    string sec = "";

                    for (int i = 1; i <= 2; i++)
                        sec += System.Convert.ToChar(r["s" + i]).ToString();

                    DateTime dt = new DateTime(System.Convert.ToInt32(year), System.Convert.ToInt32(mon), System.Convert.ToInt32(day), System.Convert.ToInt32(hour), System.Convert.ToInt32(min), System.Convert.ToInt32(sec));

                    byte[] f = new byte[3];
                    for (int i = 1; i <= 3; i++)
                        f[i - 1] = System.Convert.ToByte(r["f" + i]);

                    if (!this.hsEtStatus.Contains(devicename))
                        ConsoleServer.WriteLine(devicename + "not exist in et config table");
                    else
                        ((ETStatus)hsEtStatus[devicename]).SetEttuFail(dt, f);

                    if (txt.Text[0] == 0x25 && txt.Text[1] == 0x25 ||   txt.Text[0]==0x29 && txt.Text[1]==0x08)
                    {
                        string sql="insert into tblETTestLog (DeviceName,TimeStamp,F1,F2,F3,Telcode) values('{0}','{1}',{2},{3},{4},'{5}')";

                        try
                        {
                            dbServer.SendSqlCmd(string.Format(sql, devicename, DbCmdServer.getTimeStampString(dt), f[0], f[1], f[2], devicename.Split(new char[] { '_' })[1]));
                            ds.AcceptChanges();
                            this.notifier.NotifyAll(new NotifyEventObject(EventEnumType.ETTU_other_report_Event, ((TCBase)tc).DeviceName, ds));
                        }
                        catch (Exception ex)
                        {
                            ConsoleServer.WriteLine(ex.Message + "," + ex.StackTrace);
                        }

                    }

                }

                else if (txt.Text[0] == 0x42 && txt.Text[1] == 0x01) //話機拿起主動回報
                {
                    char[] chr_etnums = new char[10];

                    for (int i = 2; i < 2 + 10; i++)
                    {
                        chr_etnums[i - 2] = (char)txt.Text[i];

                    }

                    string sql="insert into tblETStateLog (devicename,timestamp,type,telcode) values('{0}','{1}','U','{2}')";
                    string etnum = new string(chr_etnums);
                    dbServer.SendSqlCmd(string.Format(sql,((TCBase)tc).DeviceName,DbCmdServer.getTimeStampString(System.DateTime.Now),etnum));
                    try
                    {
                        if(r_host_comm!=null)
                             r_host_comm.SetETTUCCTVLock("ET_" + etnum.Trim());
                    }
                    catch { ;}
                    this.notifier.NotifyAll(new NotifyEventObject(EventEnumType.ETTU_CC_Report_Event, ((TCBase)tc).DeviceName, etnum));
                    ConsoleServer.WriteLine(etnum + " 話機拿起!");
                }
                else if (txt.Text[0] == 0x28 && txt.Text[1] == 0x28   )
                {

                    string sql = "insert into tblETTestLog (TimeStamp,F1,F2,F3,Telcode) values('{0}',{1},{2,{3},'{4}')";

                    try
                    {
                        dbServer.SendSqlCmd(string.Format(sql, DbCmdServer.getTimeStampString(DateTime.Now), 0,0,0, "999999999"));
                    }
                    catch (Exception ex)
                    {
                        ConsoleServer.WriteLine(ex.Message + "," + ex.StackTrace);
                    }
                }

                else
                {
                    DataSet ds = protocol.GetETTU_SendDsByReportTextPackage(txt);
                    if (ds != null)
                    {
                        ds.AcceptChanges();
                        this.notifier.NotifyAll(new NotifyEventObject(EventEnumType.ETTU_other_report_Event, ((TCBase)tc).DeviceName, ds));
                    }

                }

            }
            catch (Exception ex)
            {
                ConsoleServer.WriteLine(ex.Message + "," + ex.StackTrace);
            }
            //throw new Exception("The method or operation is not implemented.");
        }
Esempio n. 6
0
        //主動回報
        internal DataSet GetSendDsByTextPackage(TextPackage pkg)
        {
            try
               {
               switch (pkg.Cmd)
               {
               case 0xDF:
                   if (pkg.Text[1] == 0xda)
                       return process_0xdf_0xda_SendDs(pkg);
                   break;
               case  0X5B:

               case 0x5A:
                   return process_0x5A_SendDs(pkg);
               case 0x5f: //mas 主動回報
                   if (pkg.Text[1] == 0x2a || pkg.Text[1] == 0x25)
                       return process_0x5f_0x2a_report(pkg);
                   break;

               //case  0x04:
               //     if(pkg.Text[7]==0xA4)
               //       return process
               }

               DataSet ds = GetSendCmdTemplateDs();

               System.Collections.IEnumerator ie = this.GetSendCmdEnum().GetEnumerator();

               int inx = 0;
               if (this.subCmd == 0xff)
               inx = 1;  //no subcmd
               else
               inx = 2; //has sub cmd

               while (ie.MoveNext())
               {
               CmdItem item;
               ulong val = 0;
               item = (CmdItem)ie.Current;
               val = 0;
               for (int i = 0; i < item.Bytes; i++)
                   val = val * 256 + pkg.Text[inx++];

               ds.Tables["tblMain"].Rows[0][item.ItemName] = val;

               if (item.HasSubItems)
               {
                   ulong subval = 0;
                   for (int i = 0; i < (int)val; i++)  //val=repeat cnt
                   {
                       System.Data.DataRow r = ds.Tables["tbl" + item.ItemName].NewRow();
                       foreach (CmdItem subItem in item.SubItems)  // get subval field
                       {
                           subval = 0;
                           for (int k = 0; k < subItem.Bytes; k++)
                               subval = subval * 256 + pkg.Text[inx++];
                           r[subItem.ItemName] = subval;
                       }

                       ds.Tables["tbl" + item.ItemName].Rows.Add(r);

                   }

                   for (int i = 0; i < (int)item.SubItemsCnt; i++)
                       ie.MoveNext();

               }

               } //while

               if (inx != pkg.Text.Length || ie.MoveNext())
               throw new Exception("text 長度錯誤!");
               ds.AcceptChanges();
               return ds;
               }
               catch (Exception ex)
               {
               Console.WriteLine("主動回報"+ex.Message + "," + pkg.ToString());
               throw ex;
               }
        }
Esempio n. 7
0
        internal DataSet GetETTUReturnDsByTextPackage(int cnt, TextPackage pkg)
        {
            try{
            DataSet ds =GetReturnCmdTemplateDs();

               System.Collections.IEnumerator ie = this.GetReturnCmdEnum().GetEnumerator();

               int inx = 0;
               if (this.subCmd == 0xff)
               inx = 1;  //no subcmd
               else
               inx = 2; //has sub cmd

               while (ie.MoveNext())
               {
                   CmdItem item;
                   ulong val = 0;
                   item = (CmdItem)ie.Current;
                   val = 0;
                   for (int i = 0; i < item.Bytes; i++)
                       val = val * 256 + pkg.Text[inx++];

                    if(((CmdItem)ie.Current).ItemName=="length")
                       val =(ulong) cnt;
                    ds.Tables["tblMain"].Rows[0][item.ItemName] = val;

                   if (item.HasSubItems)
                   {
                       int subval = 0;
                       for (int i = 0; i < (int)val; i++)  //val=repeat cnt
                       {
                           System.Data.DataRow r = ds.Tables["tbl"+item.ItemName].NewRow();
                           foreach (CmdItem subItem in item.SubItems)  // get subval field
                           {
                               subval = 0;
                               for (int k = 0; k < subItem.Bytes; k++)
                                   subval = subval * 256 + pkg.Text[inx++];
                               r[subItem.ItemName] = subval;
                           }

                           ds.Tables["tbl" + item.ItemName].Rows.Add(r);

                       }

                       for (int i = 0; i < (int)item.SubItemsCnt; i++)
                           ie.MoveNext();

                   }

               } //while

               if (inx != pkg.Text.Length || ie.MoveNext())
                   throw new Exception("text 長度錯誤!");

               return ds;
               }
               catch (Exception ex)
               {
               Console.WriteLine(ex.Message+ex.StackTrace + "," + pkg.ToString());
               throw ex;
               }
        }
Esempio n. 8
0
        private DataSet process_0xdf_0xda_SendDs(TextPackage pkg)
        {
            try
               {

               DataSet ds = this.GetSendCmdTemplateDs();
               int msg_length = 0, CR_cnt = 0;

               System.Collections.IEnumerator ie = this.GetSendCmdEnum().GetEnumerator();

               int inx = 0;
               if (this.subCmd == 0xff)
                   inx = 1;  //no subcmd
               else
                   inx = 2; //has sub cmd

               while (ie.MoveNext())
               {
                   CmdItem item;
                   ulong val = 0;
                   item = (CmdItem)ie.Current;
                   val = 0;
                   for (int i = 0; i < item.Bytes; i++)
                       val = val * 256 + pkg.Text[inx++];

                   ds.Tables["tblMain"].Rows[0][item.ItemName] = val;
                   if (item.ItemName == "data_type" && val == 0)  //text
                   {
                       // data_type = (int)val;
                       //for (int i = 0; i < 32 + 1; i++)
                          ie.MoveNext();
                       continue;
                   }
                   if (item.ItemName == "msg_length")
                       msg_length = (int)val;

                   if (item.ItemName == "g_desc32")
                       break;

                   if (item.ItemName == "msgcnt")
                   {
                       val = (ulong)msg_length;
                       ds.Tables["tblMain"].Rows[0][item.ItemName] = msg_length;
                   }

                   if (item.ItemName == "colorcnt")
                   {
                       //val = (ulong)(msg_length-CR_cnt);
                       //ds.Tables["tblMain"].Rows[0][item.ItemName] = val;
                       byte[] codebig5 = new byte[ds.Tables["tblmsgcnt"].Rows.Count];
                       for (int i = 0; i < ds.Tables["tblmsgcnt"].Rows.Count; i++)
                       {
                           codebig5[i] = System.Convert.ToByte(ds.Tables["tblmsgcnt"].Rows[i]["message"]);
                       }
                       string s = RemoteInterface.Utils.Util.Big5BytesToString(codebig5);//System.Text.Encoding.Unicode.GetString(System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding("big5"), System.Text.Encoding.Unicode, codebig5));
                       val = (ulong)s.Replace("\r", "").Replace("\n", "").Length; //(ulong)(msg_length-CR_cnt);
                       ds.Tables["tblMain"].Rows[0][item.ItemName] = val;
                   }

                   if (item.HasSubItems)
                   {
                       int subval = 0;
                       for (int i = 0; i < (int)val; i++)  //val=repeat cnt
                       {
                           System.Data.DataRow r = ds.Tables["tbl" + item.ItemName].NewRow();
                           foreach (CmdItem subItem in item.SubItems)  // get subval field
                           {
                               subval = 0;
                               for (int k = 0; k < subItem.Bytes; k++)
                                   subval = subval * 256 + pkg.Text[inx++];
                               r[subItem.ItemName] = subval;
                               if (item.ItemName == "msgcnt" && subval == 0x0d)
                                   CR_cnt++;
                           }

                           ds.Tables["tbl" + item.ItemName].Rows.Add(r);

                       }

                       for (int i = 0; i < (int)item.SubItemsCnt; i++)
                           ie.MoveNext();

                   }

               } //while

               return ds;
               }
               catch (Exception ex)
               {
               Console.WriteLine(ex.Message + ex.StackTrace + "," + pkg.ToString());
               return null;
               }
        }
Esempio n. 9
0
        private DataSet process_0xd6_return_DS(TextPackage pkg)
        {
            try
            {
             DataSet ds = this.GetReturnCmdTemplateDs();
             int inx = 1;
             System.Collections.IEnumerator ie = this.GetReturnCmdEnum().GetEnumerator();

                 while (ie.MoveNext())
                 {
                     CmdItem item;
                     ulong val = 0;
                     val = 0;
                     item = (CmdItem)ie.Current;
                     for (int i = 0; i < item.Bytes; i++)
                         val = val * 256 + pkg.Text[inx++];

                     ds.Tables["tblMain"].Rows[0][item.ItemName] = val;

                     if (pkg.Text.Length == 2 && item.ItemName == "frame_no")
                         return ds;
                     if (item.HasSubItems)
                     {
                         int subval = 0;
                         for (int i = 0; i < (int)val; i++)  //val=repeat cnt
                         {
                             System.Data.DataRow r = ds.Tables["tbl" + item.ItemName].NewRow();
                             foreach (CmdItem subItem in item.SubItems)  // get subval field
                             {
                                 subval = 0;
                                 for (int k = 0; k < subItem.Bytes; k++)
                                     subval = subval * 256 + pkg.Text[inx++];
                                 r[subItem.ItemName] = subval;
                                 //if (item.ItemName == "msgcnt" && subval == 0x0d)
                                 //    CR_cnt++;
                             }

                             ds.Tables["tbl" + item.ItemName].Rows.Add(r);

                         }

                         for (int i = 0; i < (int)item.SubItemsCnt; i++)
                             ie.MoveNext();
                     }
                 }
                 return ds;
             }
             catch (Exception ex)
             {
                 Console.WriteLine(ex.Message +ex.StackTrace+ "," + pkg.ToString());
                 return null;
             }
        }
Esempio n. 10
0
        private DataSet process_0x04_0xA4_returnDs(TextPackage pkg)
        {
            try
               {
               DataSet ds = this.GetReturnCmdTemplateDs();
               int sgmcnt = 0, CR_cnt = 0;

               System.Collections.IEnumerator ie = this.GetReturnCmdEnum().GetEnumerator();

               int inx = 0;
               if (this.subCmd == 0xff)
                   inx = 1;  //no subcmd
               else
                   inx = 2; //has sub cmd

               while (ie.MoveNext())
               {
                   CmdItem item;
                   ulong val = 0;
                   item = (CmdItem)ie.Current;
                   val = 0;
                   for (int i = 0; i < item.Bytes; i++)
                       val = val * 256 + pkg.Text[inx++];

                   ds.Tables["tblMain"].Rows[0][item.ItemName] = val;
                   if (item.ItemName == "data_type" && val == 0)  //text
                   {
                       // data_type = (int)val;
                       for (int i = 0; i < 32 + 1; i++)
                           ie.MoveNext();
                       continue;
                   }
                   if (item.ItemName == "sgmcnt")
                       sgmcnt = (int)val;

                   //if (item.ItemName == "g_desc32")
                   //    break;

                   if (item.ItemName == "scnt")
                   {
                       val = (ulong)sgmcnt;
                       ds.Tables["tblMain"].Rows[0][item.ItemName] = sgmcnt;
                   }

                   //if (item.ItemName == "colorcnt")
                   //{
                   //    val = (ulong)(msg_length - CR_cnt);
                   //    ds.Tables["tblMain"].Rows[0][item.ItemName] = val;
                   //}

                   if (item.HasSubItems)
                   {
                       int subval = 0;
                       for (int i = 0; i < (int)val; i++)  //val=repeat cnt
                       {
                           System.Data.DataRow r = ds.Tables["tbl" + item.ItemName].NewRow();
                           foreach (CmdItem subItem in item.SubItems)  // get subval field
                           {
                               subval = 0;
                               for (int k = 0; k < subItem.Bytes; k++)
                                   subval = subval * 256 + pkg.Text[inx++];
                               r[subItem.ItemName] = subval;
                               //if (item.ItemName == "msgcnt" && subval == 0x0d)
                               //    CR_cnt++;
                           }

                           ds.Tables["tbl" + item.ItemName].Rows.Add(r);

                       }

                       for (int i = 0; i < (int)item.SubItemsCnt; i++)
                           ie.MoveNext();

                   }

               } //while

               return ds;
               }
               catch (Exception ex)
               {
               Console.WriteLine(ex.Message+ex.StackTrace + "," + pkg.ToString());
               return null;
               }
        }