public void setSunRiseSunSet(int RiseHour, int RiseMin,int SetHour ,int SetMin) { byte[] data = new byte[] { 0x09, (byte)RiseHour, (byte)RiseMin, (byte)SetHour, (byte)SetMin }; SendPackage pkg = new SendPackage(CmdType.CmdSet, CmdClass.B, 0xffff, data); this.Send(pkg); }
public static Bitmap GetBackgroundPic(I_DLE device, int address, byte mode, byte g_code_id, ref string desc) { RGS_SetBackgroundPic_frame frame=null; System.IO.MemoryStream ms; byte[] cmdText = new byte[] { 0x98, mode, g_code_id }; SendPackage pkg = new SendPackage(CmdType.CmdQuery, CmdClass.A, address, cmdText); device.Send(pkg); if (pkg.result != CmdResult.ACK) throw new Exception("cmd error:" + pkg.result); byte frame_no = pkg.ReturnTextPackage.Text[3]; //0x98 frame_no ms = new System.IO.MemoryStream(1024 * 1024*3); for (int i = 1; i <= frame_no; i++) { cmdText = new byte[] {0x98,mode,g_code_id,(byte)i }; pkg = new SendPackage(CmdType.CmdQuery, CmdClass.A, address, cmdText); device.Send(pkg); frame = new RGS_SetBackgroundPic_frame(pkg.ReturnTextPackage); ms.Write(frame.g_pattern_color, 0, frame.g_pattern_color.Length); } Bitmap pic = new Bitmap(frame.g_width, frame.g_height); ms.Position = 0; for(int y =0;y<frame.g_height;y++) for (int x = 0; x < frame.g_width; x++) { // int r, g, b; //r = ms.ReadByte(); //g = ms.ReadByte(); //b = ms.ReadByte(); pic.SetPixel(x, y, Color.FromArgb(ms.ReadByte(),ms.ReadByte(), ms.ReadByte())); } desc= System.Text.Encoding.Unicode.GetString(frame.g_desc); ms.Dispose(); return pic; }
protected void AsyncSend(SendPackage pkg) { new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(AsynSendPackageTask)).Start(pkg); }
static void GetTileConfig() { ControllerConfigBase config; System.Xml.Serialization.XmlSerializer ser = new XmlSerializer(typeof(ControllerConfigBase)); // System.IO.MemoryStream ms = new System.IO.MemoryStream(); // ser.Serialize(ms, config); byte[] data = new byte[] { 0x04, 0x20 }; Comm.SendPackage pkg = new SendPackage(CmdType.CmdQuery, CmdClass.A, 0xffff, data); System.Net.Sockets.TcpClient client = new System.Net.Sockets.TcpClient(); client.Connect("127.0.0.1", 1002); DeviceV2DLE dle = new DeviceV2DLE("tile", client.GetStream()); dle.Send(pkg); System.IO.MemoryStream ms = new System.IO.MemoryStream(pkg.ReturnTextPackage.Text, 10, pkg.ReturnTextPackage.Text.Length - 10); // string str = System.Text.UTF8Encoding.UTF8.GetString(ms.GetBuffer()); // Console.WriteLine(str); config = ser.Deserialize(ms) as ControllerConfigBase; Console.WriteLine(config.build_date+"finish!"); }
public virtual int TC_SetDateTime(int year, int mon, int day, int hour, int min, int sec) { byte[] sendData=new byte[]{0x02,(byte)(year/256),(byte)(year %256),(byte)mon,(byte)day,(byte)hour,(byte)min,(byte)sec}; SendPackage pkg=new SendPackage(CmdType.CmdQuery,CmdClass.A,this.DeviceID,sendData); this.m_device.Send(pkg); if (pkg.result == CmdResult.ACK) { //if (pkg.sendCnt > 1) // ConsoleServer.WriteLine("SendCnt:" + pkg.sendCnt); return (int)pkg.ReturnTextPackage.Text[1]; } else { throw new Exception("對時命令錯誤!"+pkg); } }
public void Send(SendPackage pkg) { if(!Enabled) throw new Exception("CommError"); switch (pkg.cls) { case CmdClass.A: lock (pkg) { lock (SendTaskNotifyObj) { SendQueueA.Enqueue(pkg); System.Threading.Monitor.Pulse(SendTaskNotifyObj); } if (!System.Threading.Monitor.Wait(pkg, PackageSendTimeOut)) { pkg.result = CmdResult.TimeOut; throw new Exception(string.Format("Queue Waiting Exceed {0} sec!", PackageSendTimeOut/1000)); } } break; case CmdClass.B: lock (pkg) { lock (SendTaskNotifyObj) { SendQueueB.Enqueue(pkg); System.Threading.Monitor.Pulse(SendTaskNotifyObj); } if (!System.Threading.Monitor.Wait(pkg, PackageSendTimeOut)) { pkg.result = CmdResult.TimeOut; throw new Exception(string.Format("Queue Waiting Exceed {0} sec!", PackageSendTimeOut / 1000)); } } break; case CmdClass.C: lock (pkg) { lock (SendTaskNotifyObj) { SendQueueC.Enqueue(pkg); System.Threading.Monitor.Pulse(SendTaskNotifyObj); } if (!System.Threading.Monitor.Wait(pkg, PackageSendTimeOut)) { pkg.result = CmdResult.TimeOut; throw new Exception(string.Format("Queue Waiting Exceed {0} sec!", PackageSendTimeOut / 1000)); } } break; } }
void SendTask() { byte[]data=null; while (true) { lock (SendTaskNotifyObj) { if (SendQueueA.Count != 0) currentSendingPackage = (SendPackage)SendQueueA.Dequeue(); else if (SendQueueB.Count != 0) currentSendingPackage = (SendPackage)SendQueueB.Dequeue(); else if (SendQueueC.Count != 0) currentSendingPackage = (SendPackage)SendQueueC.Dequeue(); else if(SendQueueD.Count!=0) currentSendingPackage = (SendPackage)SendQueueD.Dequeue(); else if (TimeOutQueue.Count != 0) currentSendingPackage = (SendPackage)TimeOutQueue.Dequeue(); else { //no Data To Send , and waiting currentSendingPackage = null; GC.Collect(); GC.WaitForPendingFinalizers(); System.Threading.Monitor.Wait(SendTaskNotifyObj); continue; } } try { if(currentSendingPackage.sendCnt==0) data = PackData(currentSendingPackage.address, currentSendingPackage.text); else data = PackData(currentSendingPackage.address, currentSendingPackage.text,(byte)currentSendingPackage.Seq); currentSendingPackage.Seq = data[2]; if (currentSendingPackage.sendCnt >= 4) //discard package { //if (this.OnCommError != null) // OnCommError(this,new Exception("Time Out Error!")); lock (currentSendingPackage) { System.Threading.Monitor.Pulse(currentSendingPackage); } continue; } currentSendingPackage.sendCnt++; if (OnSendingPackage != null) OnSendingPackage(this, currentSendingPackage); lock (stream) { if (OnTextSending != null) OnTextSending(this,ref data); stream.Write(data, 0, data.Length); stream.Flush(); //for (int i = 0; i < data.Length; i++) //{ // stream.WriteByte(data[i]); //stream.Flush(); // } if (System.Threading.Monitor.Wait(stream, T0ms)) { //No Time Out if (currentSendingPackage.result == CmdResult.ACK) { lock (currentSendingPackage) { System.Threading.Monitor.Pulse(currentSendingPackage); } } else TimeOutQueue.Enqueue(currentSendingPackage);//nak ,time out } else { //Time out if( currentSendingPackage.result==CmdResult.Unknown) currentSendingPackage.result = CmdResult.TimeOut; TimeOutQueue.Enqueue(currentSendingPackage); } } } catch (Exception ex) { if (this.OnCommError != null) OnCommError(this,ex); // Console.WriteLine(ex.Message); } }//while }
public void Send(SendPackage pkg) { if(!this.getEnable()) throw new Exception("Comm not initial!"); switch (pkg.cls) { case CmdClass.A: lock (pkg) { lock (SendTaskNotifyObj) { SendQueueA.Enqueue(pkg); System.Threading.Monitor.Pulse(SendTaskNotifyObj); } if (!System.Threading.Monitor.Wait(pkg, PackageSendTimeOut)) { pkg.result = CmdResult.TimeOut; pkg.IsDiscard = true; throw new Exception(string.Format(this.m_devName + ",Queue Waiting Exceed {0} sec!" + pkg, PackageSendTimeOut / 1000 + "\r\n" )+ this.getQueueState()); } } break; case CmdClass.B: lock (pkg) { lock (SendTaskNotifyObj) { SendQueueB.Enqueue(pkg); System.Threading.Monitor.Pulse(SendTaskNotifyObj); } if (!System.Threading.Monitor.Wait(pkg, PackageSendTimeOut)) { pkg.result = CmdResult.TimeOut; pkg.IsDiscard = true; throw new Exception(string.Format(this.m_devName + ",Queue Waiting Exceed {0} sec!" + pkg, PackageSendTimeOut / 1000) + "\r\n"+this.getQueueState()); } } break; case CmdClass.C: lock (pkg) { lock (SendTaskNotifyObj) { SendQueueC.Enqueue(pkg); System.Threading.Monitor.Pulse(SendTaskNotifyObj); } if (!System.Threading.Monitor.Wait(pkg, PackageSendTimeOut)) { pkg.result = CmdResult.TimeOut; pkg.IsDiscard = true; throw new Exception(string.Format(this.m_devName + ",Queue Waiting Exceed {0} sec!" + pkg, PackageSendTimeOut / 1000) + "\r\n" + this.getQueueState()); } } break; case CmdClass.D: lock (pkg) { lock (SendTaskNotifyObj) { SendQueueD.Enqueue(pkg); System.Threading.Monitor.Pulse(SendTaskNotifyObj); } if (!System.Threading.Monitor.Wait(pkg, PackageSendTimeOut)) { pkg.result = CmdResult.TimeOut; pkg.IsDiscard = true; throw new Exception(string.Format(this.m_devName + ",Queue Waiting Exceed {0} sec!" + pkg, PackageSendTimeOut / 1000) + "\r\n" + this.getQueueState()); } } break; } // Console.WriteLine("---------------finish pkg" + pkg); }
public void TC_SendPrestoreDisplay(int dataType, int icon_id, int g_code_id, int hor_space, string mesgs, byte[] colors, byte[] vspaces) { string mesg; switch (this.CrMode) { case 0: mesg = mesgs.Replace("\r", ""); break; case 2: mesg = mesgs.Replace("\r", "\r\n"); break; default: mesg = mesgs; break; } int ver_no = 1; byte[] big5bytes; //if (mesg.IndexOf('\r') == -1) //append cr 保證 msgleng 不為零 // mesg += "\r"; this.checkConntected(); System.Data.DataSet ds = this.m_protocol.GetSendDataSet("set_prestore_message"); ds.Tables["tblMain"].Rows[0]["data_type"] = dataType; ds.Tables["tblMain"].Rows[0]["icon_code_id"] = icon_id; ds.Tables["tblMain"].Rows[0]["g_code_id"] = g_code_id; big5bytes = RemoteInterface.Util.StringToBig5Bytes(mesg); ds.Tables["tblMain"].Rows[0]["msgcnt"] = ds.Tables["tblMain"].Rows[0]["msg_length"] = big5bytes.Length; for (int i = 0; i < big5bytes.Length; i++) if (big5bytes[i] == 0x0d) ver_no++; // ds.Tables["tblMain"].Rows[0]["ver_no"] = ver_no; ds.Tables["tblMain"].Rows[0]["ver_no"] = vspaces.Length; ds.Tables["tblMain"].Rows[0]["hor_space"] = hor_space; //for (int i = 0; i < ver_no; i++) // ds.Tables["tblver_no"].Rows.Add(0); for (int i = 0; i < vspaces.Length; i++) ds.Tables["tblver_no"].Rows.Add(vspaces[i]); for (int i = 0; i < big5bytes.Length; i++) ds.Tables["tblmsgcnt"].Rows.Add(big5bytes[i]); //byte color_code = 0; // if(colors[i]== Color.Black) // color_code = 0; // else if(colors[i]== Color.Green) // color_code = 1; // else if(colors[i]== Color.Red) // color_code = 2; // else if(colors[i]== Color.Red) // color_code = 3; string mesg1; mesg1 = mesg.Replace("\r", "").Replace("\n", ""); for (int i = 0; i < mesg1.Length; i++) { //if ((int)mesg1[i] <= 128) ds.Tables["tblcolorcnt"].Rows.Add(colors[i]); //else //chinese char //{ // ds.Tables["tblcolorcnt"].Rows.Add(colors[i]); // ds.Tables["tblcolorcnt"].Rows.Add(colors[i]); //} } ds.Tables["tblMain"].Rows[0]["colorcnt"] = ds.Tables["tblcolorcnt"].Rows.Count; currentDisplayPackage = this.m_protocol.GetSendPackage(ds, 0xffff); lock (currDispLockObj) { currentDispalyDataset = ds; this.m_device.Send(currentDisplayPackage); } if (currentDisplayPackage.result != CmdResult.ACK) throw new Exception(currentDisplayPackage.ToString() + " " + currentDisplayPackage.result.ToString()); // ds.Dispose(); if (curr_icon_id != icon_id || curr_g_code_id != g_code_id || curr_mesg != mesg) { curr_icon_id = icon_id; curr_g_code_id = g_code_id; curr_hor_space = hor_space; curr_mesg = mesg; this.InvokeOutPutChangeEvent(this, this.GetCurrentDisplayDecs()); } }
//void m_device_OnBeforeNak(object sender, ref byte[] data) //{ // throw new Exception("The method or operation is not implemented."); //} //void m_device_OnBeforeAck(object sender, ref byte[] data) //{ // throw new Exception("The method or operation is not implemented."); //} //void m_device_OnAck(object sender, AckPackage AckObj) //{ // throw new Exception("The method or operation is not implemented."); //} //void m_device_OnTextSending(object sender, ref byte[] data) //{ // throw new Exception("The method or operation is not implemented."); //} void TC_OnConnectStatusChanged(object tc) { if (this.OnConnectStatusChanged != null) { if (this.IsConnected != (m_comm_state != 3)) { m_comm_state=(this.IsConnected)?(byte)1:(byte)3; this.OnConnectStatusChanged(this); } } if (this.IsTcpConnected) { try { if (m_protocol.DeviceType != "TEM" && m_protocol.DeviceType != "ETTU") { SendPackage pkg = new SendPackage(CmdType.CmdQuery, CmdClass.B, this.m_deviceid, new byte[] { 0x01 }); if (m_device != null) { m_device.Send(pkg); if (pkg.result == CmdResult.ACK) m_device_OnReport(this, pkg.ReturnTextPackage); } this.TC_SetDateTime(System.DateTime.Now.Year, System.DateTime.Now.Month, System.DateTime.Now.Day, System.DateTime.Now.Hour, System.DateTime.Now.Minute, System.DateTime.Now.Second); } } catch (Exception ex) { ConsoleServer.WriteLine(ex.Message+ex.StackTrace); } } }
private void TC_SetDisplayOff() { checkConntected(); SendPackage pk = new SendPackage(CmdType.CmdSet, CmdClass.A, m_deviceid, new byte[] { 0x53}); this.m_device.Send(pk); if (pk.result != CmdResult.ACK) Console.WriteLine(m_deviceName + ":set display off" + pk.result); }
void m_device_OnSendingPackage(object sender, SendPackage pkg) { Console.WriteLine("===>" + pkg.ToString()); //throw new Exception("The method or operation is not implemented."); }
public static RGS_GenericDisplay_Data GetGenericDisplayData(I_DLE device, int address) { RGS_GenericDisplay_Data data=null; SendPackage pkg = new SendPackage(CmdType.CmdQuery, CmdClass.A, address, new byte[] { 0x9d }); device.Send(pkg); if (pkg.result != CmdResult.ACK) throw new Exception(pkg.result.ToString()); byte[] text = pkg.ReturnTextPackage.Text; byte mode, g_code_id; int inx = 1; inx += 7; //skip hw_status,opmode,commstat,opstatus mode = text[inx++]; g_code_id = text[inx++]; RGS_Generic_ICON_Data[] icons = new RGS_Generic_ICON_Data[text[inx++]]; // RGS_Generic_Message_Data[] msgs; for (int i = 0; i < icons.Length; i++) { icons[i] = new RGS_Generic_ICON_Data(0, 0, 0); icons[i].icon_code_id=text[inx++]; icons[i].x = (ushort)(text[inx++] * 256); icons[i].x += text[inx++]; icons[i].y = (ushort)(text[inx++] * 256); icons[i].y += text[inx++]; } RGS_Generic_Message_Data[] msgs = new RGS_Generic_Message_Data[text[inx++]]; for (int i = 0; i < msgs.Length; i++) { msgs[i]=new RGS_Generic_Message_Data("",new Color[0],new Color[0],0,0); byte[] code_big5 = new byte[text[inx++]]; for (int j = 0; j < code_big5.Length; j++) code_big5[j] = text[inx++]; string message = RemoteInterface.Utils.Util.Big5BytesToString(code_big5);//System.Text.Encoding.Unicode.GetString(System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding("big5"), System.Text.Encoding.Unicode, code_big5)); Color[] forecolor = new Color[message.Length]; Color[] backcolor = new Color[message.Length]; for (int j = 0; j < message.Length; j++) { int r,g,b; r=text[inx++]; g=text[inx++]; b=text[inx++]; forecolor[j] = Color.FromArgb(r, g, b); r=text[inx++]; g=text[inx++]; b=text[inx++]; backcolor[j] = Color.FromArgb(r, g, b); } msgs[i].messgae = message; msgs[i].forecolor = forecolor; msgs[i].backcolor = backcolor; msgs[i].x = (byte)(text[inx++] * 256); msgs[i].x += text[inx++]; msgs[i].y = (byte)(text[inx++] * 256); msgs[i].y += text[inx++]; } RGS_Generic_Section_Data[] sections = new RGS_Generic_Section_Data[text[inx++]]; for (int i = 0; i < sections.Length; i++) { sections[i] = new RGS_Generic_Section_Data(0, 0); sections[i].section_id = text[inx++]; sections[i].status = text[inx++]; } data = new RGS_GenericDisplay_Data(mode, g_code_id, icons, msgs, sections); return data; }
void SetTemVDData(string devname, int dir, int milek, int milem, System.Data.DataSet ds) { System.Text.StringBuilder sql = new StringBuilder(); System.IO.MemoryStream ms = new System.IO.MemoryStream(); ms.WriteByte(0x21); ms.WriteByte((byte)dir); ms.WriteByte((byte)(milek/256)); ms.WriteByte((byte)(milek % 256)); ms.WriteByte((byte)((milem ) / 256)); ms.WriteByte((byte)((milem ) % 256)); ms.WriteByte((byte)ds.Tables[1].Rows.Count); //lanecnt ms.WriteByte(0); //odd System.DateTime dt= DateTime.Now; dt=dt.AddSeconds(-dt.Second).AddMinutes(-5); dt=dt.AddMinutes(-(dt.Minute % 5)); //sql.Append("select "); //for(int i=0;i<ds.Tables[1].Rows.Count;i++) //{ //} // string sql = "select small_car_volume_lane1,big_car_volume,connect_car_volume,small_car_speed,big_car_speed,connect_car_speed,average_occupancy from tblvddata5min where devicename='{0}' and timestamp='{1}' "; System.Data.Odbc.OdbcConnection cn = new System.Data.Odbc.OdbcConnection(RemoteInterface.DbCmdServer.getDbConnectStr()); System.Data.Odbc.OdbcCommand cmd=new System.Data.Odbc.OdbcCommand(); cmd.Connection = cn; try { cn.Open(); for (int i = 0; i < (byte)ds.Tables[1].Rows.Count; i++) { sql = new StringBuilder("select "); sql.Append("small_car_volume_lane").Append(i + 1).Append(","); sql.Append("big_car_volume_lane").Append(i + 1).Append(","); sql.Append("connect_car_volume_lane").Append(i + 1).Append(","); sql.Append("small_car_speed_lane").Append(i + 1).Append(","); sql.Append("big_car_speed_lane").Append(i + 1).Append(","); sql.Append("connect_car_speed_lane").Append(i + 1).Append(","); sql.Append("average_occupancy_lane").Append(i + 1).Append(","); sql.Remove(sql.ToString().Length - 1, 1).Append(" from tblvddata5min where devicename='{0}' and timestamp='{1}'"); cmd.CommandText = string.Format(sql.ToString(), devname, RemoteInterface.DbCmdServer.getTimeStampString(dt)); System.Data.Odbc.OdbcDataReader rd = cmd.ExecuteReader(); if (!rd.Read()) { rd.Close(); continue; } // System.Data.DataRow r = ds.Tables[1].Rows[i]; ms.WriteByte((byte)i); //loopid ms.WriteByte(0); //odd int car_vol = System.Convert.ToInt32(rd[0]); ms.WriteByte((byte)(car_vol / 256)); ms.WriteByte((byte)(car_vol % 256)); int big_vol = System.Convert.ToInt32(rd[1]); ms.WriteByte((byte)(big_vol / 256)); ms.WriteByte((byte)(big_vol % 256)); int cn_vol = System.Convert.ToInt32(rd[2]); ms.WriteByte((byte)(cn_vol / 256)); ms.WriteByte((byte)(cn_vol % 256)); int carspd = System.Convert.ToByte(rd[3]); ms.WriteByte((byte)carspd); carspd = System.Convert.ToByte(rd[4]); ms.WriteByte((byte)carspd); carspd = System.Convert.ToByte(rd[5]); ms.WriteByte((byte)carspd); ms.WriteByte(System.Convert.ToByte(rd[6])); rd.Close(); } } catch (Exception ex) { ConsoleServer.WriteLine(ex.Message + "," + ex.StackTrace); } finally { cn.Close(); } Comm.SendPackage pkg=new Comm.SendPackage(Comm.CmdType.CmdSet,Comm.CmdClass.A,0xffff,ms.ToArray()); Program.mfcc_tem.manager[TEM_DEVNAME].Send(pkg); }
void sendTemLCSStatus(string devName, int status) { byte[] data=new byte[]{0x26,0,0,0,0}; LCSDeviceData lcs = hsLCSDeviceData[devName] as LCSDeviceData; data[1] = (byte)lcs.tunnid; data[2] =(byte) lcs.place; data[3] =(byte) lcs.div; data[4] = (byte)status; SendPackage pkg = new SendPackage(CmdType.CmdSet, CmdClass.A, 0xffff, data); Program.mfcc_tem.manager[TEM_DEVNAME].Send(pkg); }
static void Tc_Test() { Comm.V2DLE dle; System.Net.Sockets.TcpClient client = new System.Net.Sockets.TcpClient(); client.Connect("192.192.85.40", 1001); dle = new Comm.V2DLE("test", client.GetStream()); dle.OnReceiveText += new Comm.OnTextPackageEventHandler(dev_OnReceiveText); dle.OnReport += new Comm.OnTextPackageEventHandler(dle_OnReport); // dle.Send(new Comm.SendPackage(Comm.CmdType.CmdSet, Comm.CmdClass.A,0xffff,new byte[]{0x02,11,10,1})); Comm.SendPackage pkg; while (true) { try { Console.ReadKey(); byte[] data = new byte[] { // 03, 1,60,1,10 0x0b }; pkg = new Comm.SendPackage(Comm.CmdType.CmdQuery, Comm.CmdClass.A, 0xffff, data); dle.Send(pkg); Console.WriteLine(Comm.V2DLE.ToHexString(pkg.ReturnTextPackage.Text)); } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); } } }
static void get_Pilt_Param() { System.IO.MemoryStream ms = new System.IO.MemoryStream(); System.Net.Sockets.TcpClient client = new System.Net.Sockets.TcpClient(); client.Connect("127.0.0.1", 1002); DeviceV2DLE dev = new DeviceV2DLE("PILT", client.GetStream()); // dev.OnReceiveText += new OnTextPackageEventHandler(dev_OnReceiveText); byte[] data = new byte[] { 0x04, 0x20 }; SendPackage pkg = new SendPackage(CmdType.CmdQuery, CmdClass.A, 0xffff, data); dev.Send(pkg); Console.WriteLine(Comm.V2DLE.ToHexString(pkg.ReturnTextPackage.Text)); }
static void get_pilt_level_degree() { Protocol protocol = new Protocol(); protocol.Parse(System.IO.File.ReadAllText("PILT.txt"), false); System.Net.Sockets.TcpClient client = new System.Net.Sockets.TcpClient(); client.Connect("127.0.0.1", 1002); DeviceV2DLE dev = new DeviceV2DLE("PILT", client.GetStream()); dev.OnReceiveText += new OnTextPackageEventHandler(dev_OnReceiveText); //while (true) //{ SendPackage pkg = new SendPackage(CmdType.CmdQuery, CmdClass.A, 0xffff, new byte[] { 0x04, 0x21 }); dev.Send(pkg); Console.WriteLine(V2DLE.ToHexString(pkg.ReturnTextPackage.Text)); //} }
public void Send(SendPackage[] pkg) { throw new NotImplementedException(); }
//static void device_OnReceiveText(object sender, TextPackage txtObj) //{ // for (int i = 41; i < txtObj.Text.Length; i++) // { // if(txtObj.Text[i]!=curr_pkg.text[i]) // Console.WriteLine("not equal at text["+i+"]"); // } // Console.WriteLine("equal!"); // //throw new Exception("The method or operation is not implemented."); //} //public static byte[] ToBig5Bytes(string text) //{ // byte[] b=System.Text.Encoding.Convert(System.Text.Encoding.Unicode,System.Text.Encoding.GetEncoding("big5"),System.Text.Encoding.Unicode.GetBytes(text)); // return b; //} public static Bitmap GetIconPic(I_DLE device, int address, byte icon_id, ref string desc) { // RGS_SetBackgroundPic_frame frame = null; //System.IO.MemoryStream ms; byte[] cmdText = new byte[] { 0x04,0x5f,0x51, icon_id }; int g_width, g_height; SendPackage pkg = new SendPackage(CmdType.CmdQuery, CmdClass.A, address, cmdText); device.Send(pkg); if (pkg.result != CmdResult.ACK) throw new Exception("cmd error:" + pkg.result); // byte frame_no = pkg.ReturnTextPackage.Text[3]; //0x98 frame_no // ms = new System.IO.MemoryStream(1024 * 1024 * 3); //for (int i = 1; i <= frame_no; i++) //{ // cmdText = new byte[] { 0x98, mode, g_code_id, (byte)i }; // pkg = new SendPackage(CmdType.CmdQuery, CmdClass.A, address, cmdText); // device.Send(pkg); // frame = new RGS_SetBackgroundPic_frame(pkg.ReturnTextPackage); // ms.Write(frame.g_pattern_color, 0, frame.g_pattern_color.Length); //} g_width = pkg.ReturnTextPackage.Text[12] * 256 + pkg.ReturnTextPackage.Text[13]; g_height = pkg.ReturnTextPackage.Text[14] * 256 + pkg.ReturnTextPackage.Text[15]; byte[] desc_code = new byte[32]; Bitmap pic = new Bitmap(g_width, g_height); System.Array.Copy(pkg.ReturnTextPackage.Text, 16, desc_code, 0, desc_code.Length); // ms.Position = 0; desc = System.Text.Encoding.Unicode.GetString(desc_code); int inx = 16 + desc_code.Length; for (int y = 0; y < g_height; y++) for (int x = 0; x < g_width; x++) { // int r, g, b; //r = ms.ReadByte(); //g = ms.ReadByte(); //b = ms.ReadByte(); pic.SetPixel(x, y,Color.FromArgb( pkg.ReturnTextPackage.Text[inx], pkg.ReturnTextPackage.Text[inx+1], pkg.ReturnTextPackage.Text[inx+2])); inx+=3; } // ms.Dispose(); return pic; }
public void Send(SendPackage[] pkgs) { for (int i = 0; i < pkgs.Length;i++ ) { try { if (i != pkgs.Length - 1) { pkgs[i].ETTU_EndCode = 0xf8; pkgs[i].type = CmdType.CmdSet; } else { pkgs[i].ETTU_EndCode = 0xc7; //pkgs[i].type = CmdType.CmdQuery; } Send(pkgs[i]); } catch { ;} } }
public static RGS_PolygonData RGS_getPolygons(I_DLE device, int address, byte g_code_id) { RGS_PolygonData polygonData; byte[] cmdtext = new byte[] {0x9b,g_code_id }; SendPackage pkg = new SendPackage(CmdType.CmdQuery, CmdClass.A, address, cmdtext); device.Send(pkg); if (pkg.result != CmdResult.ACK) throw new Exception(pkg.result.ToString()); byte[] retText = pkg.ReturnTextPackage.Text; int inx = 1; if (retText[inx++] != g_code_id) throw new Exception(" g_code_id is wrong !"); RGS_Ploygon []polygons=new RGS_Ploygon[retText[inx++]]; // sec_id = retText[inx++]; for (int i = 0; i < polygons.Length; i++) { polygons[i] = new RGS_Ploygon(retText[inx++]); //no points for (int j = 0; j < polygons[i].points.Length; j++) { polygons[i].points[j].X = retText[inx++] * 256; polygons[i].points[j].X += retText[inx++]; polygons[i].points[j].Y = retText[inx++] * 256; polygons[i].points[j].Y += retText[inx++]; } } polygonData = new RGS_PolygonData(polygons); return polygonData; }
void SendTask() { byte[]data=null; while (true) { if (!this.getEnable()) { Console.WriteLine(m_devName+",send task exit!"); return; } try { lock (SendTaskNotifyObj) { if (SendQueueA.Count != 0) while (SendQueueA.Count != 0) { currentSendingPackage = (SendPackage)SendQueueA.Dequeue(); if (!currentSendingPackage.IsDiscard) break; else currentSendingPackage = null; } else if (SendQueueB.Count != 0) while (SendQueueB.Count != 0) { currentSendingPackage = (SendPackage)SendQueueB.Dequeue(); if (!currentSendingPackage.IsDiscard) break; else currentSendingPackage = null; } else if (SendQueueC.Count != 0) while (SendQueueC.Count != 0) { currentSendingPackage = (SendPackage)SendQueueC.Dequeue(); if (!currentSendingPackage.IsDiscard) break; else currentSendingPackage = null; } else if (SendQueueD.Count != 0) while (SendQueueD.Count != 0) { currentSendingPackage = (SendPackage)SendQueueD.Dequeue(); if (!currentSendingPackage.IsDiscard) break; else currentSendingPackage = null; } else if (TimeOutQueue.Count != 0) while (TimeOutQueue.Count != 0) { currentSendingPackage = (SendPackage)TimeOutQueue.Dequeue(); if (!currentSendingPackage.IsDiscard) break; else currentSendingPackage = null; } else { //no Data To Send , and waiting currentSendingPackage = null; //GC.Collect(); //GC.WaitForPendingFinalizers(); System.Threading.Monitor.Wait(SendTaskNotifyObj); continue; } } try { //lock (CurrSendingproxyobj) //{ if (currentSendingPackage == null) continue; if (currentSendingPackage.sendCnt == 0) data = PackData(currentSendingPackage.address, currentSendingPackage.text); else data = PackData(currentSendingPackage.address, currentSendingPackage.text, (byte)currentSendingPackage.Seq); currentSendingPackage.Seq = data[2]; if (!this.getEnable()) return; if (currentSendingPackage.sendCnt >= 3) //discard package { lock (currentSendingPackage) { System.Threading.Monitor.Pulse(currentSendingPackage); } continue; } currentSendingPackage.sendCnt++; //} if (OnSendingPackage != null) OnSendingPackage(this, currentSendingPackage); lock (stream) { if (OnTextSending != null) OnTextSending(this, ref data); //--------------------------------------------------------------------------------- //if (currentSendingPackage.type == CmdType.CmdSet) // Console.WriteLine("<============Sendig Seq :" + currentSendingPackage.Seq); //-------------------------------------------------------------------- stream.Write(data, 0, data.Length); stream.Flush(); //for (int i = 0; i < data.Length; i++) //{ // stream.WriteByte(data[i]); //stream.Flush(); // } if (System.Threading.Monitor.Wait(stream, T0ms)) { //No Time Out //lock (CurrSendingproxyobj) //{ if (this.currentSendingPackage.result == CmdResult.ACK) { lock (currentSendingPackage) { System.Threading.Monitor.Pulse(currentSendingPackage); } } else { TimeOutQueue.Enqueue(currentSendingPackage);//nak ,time out currentSendingPackage = null; } //} } else { //Time out //lock (CurrSendingproxyobj) //{ // if (currentSendingPackage.result == CmdResult.Unknown) currentSendingPackage.result = CmdResult.TimeOut; TimeOutQueue.Enqueue(currentSendingPackage); this.currentSendingPackage = null; //} } } } catch (Exception ex) { if (this.OnCommError != null) OnCommError(this, ex); if (!this.getEnable()) { Console.WriteLine(m_devName + "send task exit"); return; } // Console.WriteLine(ex.Message); } } catch { ; } }//while }
public static void RGS_setPolygons(I_DLE device, int address, byte g_code_id, RGS_PolygonData polygonData) { System.IO.MemoryStream ms = new System.IO.MemoryStream(); ms.WriteByte(0x9a); ms.WriteByte(g_code_id); ms.WriteByte((byte)polygonData.polygons.Length);//section_count for (byte section_id = 1; section_id <= polygonData.polygons.Length; section_id++) { ms.WriteByte(section_id);//section_id ms.WriteByte((byte)polygonData.polygons[section_id - 1].points.Length);//length for (int point_inx = 0; point_inx < polygonData.polygons[section_id - 1].points.Length; point_inx++) { ms.WriteByte((byte)(polygonData.polygons[section_id - 1].points[point_inx].X / 256)); ms.WriteByte((byte)(polygonData.polygons[section_id - 1].points[point_inx].X % 256)); ms.WriteByte((byte)(polygonData.polygons[section_id - 1].points[point_inx].Y / 256)); ms.WriteByte((byte)(polygonData.polygons[section_id - 1].points[point_inx].Y % 256)); } } byte[]text=new byte[ms.Position]; System.Array.Copy(ms.GetBuffer(),text,ms.Position); SendPackage pkg = new SendPackage(CmdType.CmdSet, CmdClass.A, address, text); device.Send(pkg); }
public override void TC_SetDisplayOff() { checkConntected(); SendPackage pk = new SendPackage(CmdType.CmdSet, CmdClass.A, m_deviceid, new byte[] { 0x53 }); this.m_device.Send(pk); if (pk.result != CmdResult.ACK) Console.WriteLine(m_deviceName + ":set display off" + pk.result); lock (currDispLockObj) { if (currentDispalyDataset != null) this.InvokeOutPutChangeEvent(this, "熄滅"); curr_icon_id = 0; curr_g_code_id = 0; curr_hor_space = 0; curr_mesg = ""; this.currentDispalyDataset = null; } }
public static void SetGenericDisplay(I_DLE device, int address, RGS_GenericDisplay_Data data) { System.IO.MemoryStream ms=new System.IO.MemoryStream(); ms.WriteByte(0x9c); ms.WriteByte(data.mode); ms.WriteByte(data.graph_code_id); ms.WriteByte((byte)data.icons.Length); for (int i = 0; i < data.icons.Length; i++) { ms.WriteByte(data.icons[i].icon_code_id); ms.WriteByte((byte)(data.icons[i].x / 256)); ms.WriteByte((byte)(data.icons[i].x % 256)); ms.WriteByte((byte)(data.icons[i].y/256)); ms.WriteByte((byte)(data.icons[i].y%256)); } ms.WriteByte((byte)data.msgs.Length); for (int i = 0; i < data.msgs.Length; i++) { byte[] code_big5 = RemoteInterface.Utils.Util.StringToBig5Bytes(data.msgs[i].messgae);// Comm.RGS30_Extend.ToBig5Bytes(data.msgs[i].messgae); ms.WriteByte((byte)code_big5.Length); ms.Write(code_big5, 0, code_big5.Length); for (int j = 0; j < data.msgs[i].messgae.Length; j++) { ms.WriteByte(data.msgs[i].forecolor[j].R); ms.WriteByte(data.msgs[i].forecolor[j].G); ms.WriteByte(data.msgs[i].forecolor[j].B); ms.WriteByte(data.msgs[i].backcolor[j].R); ms.WriteByte(data.msgs[i].backcolor[j].G); ms.WriteByte(data.msgs[i].backcolor[j].B); } ms.WriteByte((byte)(data.msgs[i].x / 256)); ms.WriteByte((byte)(data.msgs[i].x % 256)); ms.WriteByte((byte)(data.msgs[i].y / 256)); ms.WriteByte((byte)(data.msgs[i].y % 256)); } ms.WriteByte((byte)data.sections.Length); for (int i = 0; i < data.sections.Length; i++) { ms.WriteByte(data.sections[i].section_id); ms.WriteByte(data.sections[i].status); } byte[]text=new byte[ms.Position]; System.Array.Copy(ms.GetBuffer(),text,text.Length); SendPackage pkg = new SendPackage(CmdType.CmdSet, CmdClass.A, address, text); device.Send(pkg); if (pkg.result != CmdResult.ACK) throw new Exception(pkg.result.ToString()); }
public void Send(SendPackage[] pkgs) { foreach (SendPackage pkg in pkgs) { try { Send(pkg); } catch { ;} } }
public void Send(SendPackage pkg) { if (m_device == null) return; this.m_device.Send(pkg); if (pkg.result != CmdResult.ACK && pkg.Cmd!=0xA5) throw new Exception(this.DeviceName+","+pkg.ToString()); }
public virtual byte[] TC_GetHW_Status() { if (this.m_protocol.DeviceType == "ETTU" || this.m_protocol.DeviceType == "TEM") return new byte[] { 0, 0, 0, 0}; SendPackage pkg = new SendPackage(CmdType.CmdQuery, CmdClass.B, this.m_deviceid, new byte[] { 0x0B}); this.m_device.Send(pkg); if (pkg.result != CmdResult.ACK) return null; // 2011-2-16 檢查是否狀態有變 m_device_OnReport(this, pkg.ReturnTextPackage); return new byte[] { pkg.ReturnTextPackage.Text[1], pkg.ReturnTextPackage.Text[2], pkg.ReturnTextPackage.Text[3], pkg.ReturnTextPackage.Text[4] }; }
//static void TiltConfig() //{ // ControllerConfigBase config = new ControllerConfigBase() // { // build_date = DateTime.Now, // controller_id = 0x0000, // device_type = "Tilt", // listen_port = 1002, // version_no = 1 , // sensors = new TiltSensorConfig[] // { // new TiltSensorConfig() // { // com_type="COM", // device_name="TILE1", // id=0, // execution_mode=0, // port_baud=115200, // ip_comport="COM7", // sensor_values=new SensorValueConfigBase[]{ // new SensorValueConfigBase() // { // coefficient=1, // offset=0, // desc="X", // id=0, // rules=new SensorValueRuleConfigBase[] // { // new SensorValueRuleConfigBase() // { // level=1, // lower_limit=0, // upper_limit=0, // hour_ma=0, // left_hour_ma1=0, // left_hour_ma2 =0, // right_hour_ma1=0, // right_hour_ma2=0 // }, // new SensorValueRuleConfigBase() // { // level=2, // lower_limit=0, // upper_limit=0, // hour_ma=0, // left_hour_ma1=0, // left_hour_ma2 =0, // right_hour_ma1=0, // right_hour_ma2=0 // }, // new SensorValueRuleConfigBase() // { // level=3, // lower_limit=0, // upper_limit=0, // hour_ma=0, // left_hour_ma1=0, // left_hour_ma2 =0, // right_hour_ma1=0, // right_hour_ma2=0 // } // } // }, // new SensorValueConfigBase() // { // coefficient=1, // offset=0, // desc="Y", // id=1, // rules=new SensorValueRuleConfigBase[] // { // new SensorValueRuleConfigBase() // { // level=1, // lower_limit=0, // upper_limit=0, // hour_ma=0, // left_hour_ma1=0, // left_hour_ma2 =0, // right_hour_ma1=0, // right_hour_ma2=0 // }, // new SensorValueRuleConfigBase() // { // level=2, // lower_limit=0, // upper_limit=0, // hour_ma=0, // left_hour_ma1=0, // left_hour_ma2 =0, // right_hour_ma1=0, // right_hour_ma2=0 // }, // new SensorValueRuleConfigBase() // { // level=3, // lower_limit=0, // upper_limit=0, // hour_ma=0, // left_hour_ma1=0, // left_hour_ma2 =0, // right_hour_ma1=0, // right_hour_ma2=0 // } // } // } // } // } // } // }; // System.Xml.Serialization.XmlSerializer ser = new XmlSerializer(typeof(ControllerConfigBase)); // System.IO.MemoryStream ms=new System.IO.MemoryStream(); // ser.Serialize(ms, config); // byte[] data =new byte[ms.Length+3]; // data[0]=0x20; // data[1]=(byte)(ms.Length/256); // data[2]=(byte)(ms.Length%256); // System.Array.Copy(ms.GetBuffer(),0,data,3,ms.Length); // Comm.SendPackage pkg = new SendPackage(CmdType.CmdSet, CmdClass.A,0xffff, data); // System.Net.Sockets.TcpClient client=new System.Net.Sockets.TcpClient(); // client.Connect("127.0.0.1",1002); // DeviceV2DLE dle = new DeviceV2DLE("tile", client.GetStream()); // dle.Send(pkg); //} static void GetPeriodData() { Protocol protocol = new Protocol(); protocol.Parse(System.IO.File.ReadAllText("PILT.txt"), false); System.Net.Sockets.TcpClient client = new System.Net.Sockets.TcpClient(); client.Connect("127.0.0.1", 1001); DeviceV2DLE dev = new DeviceV2DLE("PILT", client.GetStream()); dev.OnReceiveText += new OnTextPackageEventHandler(dev_OnReceiveText); //while (true) //{ for (byte hour = 0; hour < 23; hour++) { for (byte min = 0; min < 60; min++) { SendPackage pkg = new SendPackage(CmdType.CmdQuery, CmdClass.A, 0xffff, new byte[] { 0x28, 12, hour, min }); dev.Send(pkg); if (pkg.ReturnTextPackage != null) { System.Data.DataSet ds = protocol.GetReturnDsByTextPackage(pkg.ReturnTextPackage); if (Convert.ToInt32(ds.Tables[0].Rows[0]["sensor_cnt"]) == 0) { Console.WriteLine("Not Found"); } else Console.WriteLine(V2DLE.ToHexString(pkg.ReturnTextPackage.Text)); } } } }