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; } } }
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); }
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); }
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; } }
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."); }
//主動回報 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; } }
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; } }
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; } }
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; } }
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; } }