| 
									
										
										
										
											2023-05-23 16:13:17 +08:00
										 |  |  |  | using System; | 
					
						
							|  |  |  |  | using System.Collections.Generic; | 
					
						
							|  |  |  |  | using System.ComponentModel; | 
					
						
							|  |  |  |  | using System.Data; | 
					
						
							|  |  |  |  | using System.Drawing; | 
					
						
							|  |  |  |  | using System.Linq; | 
					
						
							|  |  |  |  | using System.Text; | 
					
						
							|  |  |  |  | using System.Windows.Forms; | 
					
						
							|  |  |  |  | using elelab; | 
					
						
							|  |  |  |  | using DeiNiu.wms.win.utils; | 
					
						
							|  |  |  |  | using System.Configuration; | 
					
						
							|  |  |  |  | using System.Threading; | 
					
						
							|  |  |  |  | using System.ServiceModel; | 
					
						
							|  |  |  |  | using DeiNiu.wms.win; | 
					
						
							|  |  |  |  | using System.ServiceModel.Description; | 
					
						
							|  |  |  |  | using DeiNiu.Utils; | 
					
						
							|  |  |  |  | using Model; | 
					
						
							|  |  |  |  | using System.Net; | 
					
						
							|  |  |  |  | using System.IO; | 
					
						
							|  |  |  |  | using System.Runtime.Serialization.Json; | 
					
						
							|  |  |  |  | using System.Timers; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | namespace epickHost | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     public partial class FormHost : Form | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         static log4net.ILog log = log4net.LogManager.GetLogger("light"); | 
					
						
							|  |  |  |  |         String oCom = ""; | 
					
						
							|  |  |  |  |         Dictionary<int, dnwms> coms = new Dictionary<int, dnwms>(); | 
					
						
							|  |  |  |  |         dnwms activePort; | 
					
						
							|  |  |  |  |         int currentPort = 0; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private ServiceHost host = null; | 
					
						
							|  |  |  |  |         public static List<ELabel> labelPool = new List<ELabel>(); | 
					
						
							|  |  |  |  |         string svrUrl = "http://127.0.0.1:9998/DNLight"; | 
					
						
							|  |  |  |  |         private string postUrl=""; | 
					
						
							|  |  |  |  |        | 
					
						
							|  |  |  |  |           | 
					
						
							|  |  |  |  |   | 
					
						
							|  |  |  |  |         | 
					
						
							|  |  |  |  |         void startHost2() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |           //  lbStatus.Text = "服务启动失败"; | 
					
						
							|  |  |  |  |             string startupOk = "服务已启动"; | 
					
						
							|  |  |  |  |             try | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 svrUrl = System.Configuration.ConfigurationManager.AppSettings["BaseUri"]; | 
					
						
							|  |  |  |  |                 Uri baseAddress = new Uri(svrUrl); | 
					
						
							|  |  |  |  |                 ServiceLight service = new ServiceLight();  | 
					
						
							|  |  |  |  |                 service.turnOnLts += this.turnOnLights; | 
					
						
							|  |  |  |  |                 service.turnOffLts += this.turnOffLights; | 
					
						
							|  |  |  |  |                 service.lightUp += this.lightUp; | 
					
						
							|  |  |  |  |                 service.resetPort += this.resetPort; | 
					
						
							|  |  |  |  |                 service.getCarIpAddress += this.getCarIpAddress; | 
					
						
							|  |  |  |  |                 service.clearLablesByPortOrder += this.clearLablesByPortOrder; | 
					
						
							|  |  |  |  |                 service.outMsg += this.addLog; | 
					
						
							|  |  |  |  |                 service.turnOffLb += this.turnOffLable; | 
					
						
							|  |  |  |  |                 elelab.pick.lightOffEvent += testPicked; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 host = new ServiceHost(service, baseAddress); | 
					
						
							|  |  |  |  |                 | 
					
						
							|  |  |  |  |                 WebHttpBinding binding = new WebHttpBinding(); | 
					
						
							|  |  |  |  |                 ServiceEndpoint endpoint = host.AddServiceEndpoint(typeof(IServiceLight), binding, baseAddress); | 
					
						
							|  |  |  |  |                 WebHttpBehavior httpBehavior = new WebHttpBehavior(); | 
					
						
							|  |  |  |  |                 endpoint.Behaviors.Add(httpBehavior); | 
					
						
							|  |  |  |  |                  List<string> lstIp =Util.GetLocalIpAddress("InterNetwork"); | 
					
						
							|  |  |  |  |                  string showSvr = svrUrl; | 
					
						
							|  |  |  |  |                 if (lstIp.Count > 0) | 
					
						
							|  |  |  |  |                  { | 
					
						
							|  |  |  |  |                     showSvr = svrUrl.Replace("127.0.0.1", lstIp[0]); | 
					
						
							|  |  |  |  |                  } | 
					
						
							|  |  |  |  |              | 
					
						
							|  |  |  |  |                 host.Opened += delegate | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                     if (InvokeRequired) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         this.Invoke(new showStatus(delegate() | 
					
						
							|  |  |  |  |                         { | 
					
						
							|  |  |  |  |                             lbStatus.Text = startupOk; | 
					
						
							|  |  |  |  |                             txtboxUrl.Text = showSvr; | 
					
						
							|  |  |  |  |                             addLog("服务已启动"); | 
					
						
							|  |  |  |  |                            // addLog("累计亮灯次数:" + getConfigValue("count"));   | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                         })); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     else | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         lbStatus.Text = startupOk; | 
					
						
							|  |  |  |  |                         txtboxUrl.Text = showSvr; | 
					
						
							|  |  |  |  |                         addLog("服务已启动"); | 
					
						
							|  |  |  |  |                       //  addLog("累计亮灯次数:" + getConfigValue("count"));   | 
					
						
							|  |  |  |  |                        // lbStatus.Text = "服务启动失败"; | 
					
						
							|  |  |  |  |                       //  lbUrl.Text =""; | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                 }; | 
					
						
							|  |  |  |  |                 host.Open(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             catch (Exception e) | 
					
						
							| 
									
										
										
										
											2023-06-04 12:58:50 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |             {               | 
					
						
							| 
									
										
										
										
											2023-05-23 16:13:17 +08:00
										 |  |  |  |                 MessageBox.Show("启动服务失败:  "+e.Message); | 
					
						
							| 
									
										
										
										
											2023-06-04 12:58:50 +08:00
										 |  |  |  |                 addLog(e.StackTrace); | 
					
						
							| 
									
										
										
										
											2023-05-23 16:13:17 +08:00
										 |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |               | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private bool turnOffLable(List<ELabel> lables) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |              foreach(ELabel lable in lables) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 pick.turnOffLabel(currentPort, lable.labelId); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             return true; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private Cart getCarIpAddress(string carNo) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             string ip = getConfigValue(carNo); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             if (!vaildService()) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 ip = "无法获取IP地址"; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             | 
					
						
							|  |  |  |  |             if (String.IsNullOrEmpty(ip)) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 ip= ""; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             Cart cart = new Cart(); | 
					
						
							|  |  |  |  |             cart.carNo = carNo; | 
					
						
							|  |  |  |  |             cart.ip = ip; | 
					
						
							|  |  |  |  |             ip = String.Format("\"carNo\":\"{0}\",\"ip\":\"{1}\"",carNo, ip); | 
					
						
							|  |  |  |  |             ip = "{" + ip + "}"; | 
					
						
							|  |  |  |  |             addLog(ip); | 
					
						
							|  |  |  |  |             Thread threadPreProcess = new Thread(clearDis); | 
					
						
							|  |  |  |  |             threadPreProcess.IsBackground = true; | 
					
						
							|  |  |  |  |             threadPreProcess.Start(); | 
					
						
							|  |  |  |  |            // clearDis(); | 
					
						
							|  |  |  |  |             | 
					
						
							|  |  |  |  |             return cart; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |          | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         public FormHost() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             InitializeComponent(); | 
					
						
							|  |  |  |  |             elelab.pick.init_port(enumLabelPickType.seed); | 
					
						
							|  |  |  |  |             Thread threadPreProcess = new Thread(startHost2); | 
					
						
							|  |  |  |  |             threadPreProcess.IsBackground = true; | 
					
						
							|  |  |  |  |             threadPreProcess.Start(); | 
					
						
							|  |  |  |  |             if (elelab.pick.activeComports.Count == 0) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 lbLightInfo.Text = "拣选设备连接错误"; | 
					
						
							|  |  |  |  |                 lbComStatus.Text = "拣选设备连接错误"; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             else | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 initcoms(); | 
					
						
							|  |  |  |  |                 lbLightInfo.Text = "控制器就绪"; | 
					
						
							|  |  |  |  |                 lbComStatus.Text = "控制器就绪"; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             comcolor.SelectedIndex = 0; | 
					
						
							|  |  |  |  |             txtUrl.Text =  System.Configuration.ConfigurationManager.AppSettings["BaseUri"]; | 
					
						
							|  |  |  |  |             txtCallBack.Text = System.Configuration.ConfigurationManager.AppSettings["WMSuri"]; | 
					
						
							|  |  |  |  |             readRowIds(); | 
					
						
							|  |  |  |  |              string tmp = System.Configuration.ConfigurationManager.AppSettings["hostInterv"]; | 
					
						
							|  |  |  |  |             if (!string.IsNullOrEmpty(tmp)) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 try {  nud.Value = Convert.ToInt32(tmp); } catch { } | 
					
						
							|  |  |  |  |                 | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             | 
					
						
							|  |  |  |  |             initialTimer(); | 
					
						
							|  |  |  |  |             initialTimer2(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private void Form1_Load(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             comboxcolor.SelectedIndex = 0; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         private void initcoms() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             String[] Portname = System.IO.Ports.SerialPort.GetPortNames(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |              | 
					
						
							|  |  |  |  |             comComs.Items.Clear(); | 
					
						
							|  |  |  |  |              | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             oCom = System.Configuration.ConfigurationManager.AppSettings["Com"]; | 
					
						
							|  |  |  |  |             int oldIndex = 0; | 
					
						
							|  |  |  |  |             try | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 for (int i = 0; i < Portname.Length; i++) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     //col.Add(i); | 
					
						
							|  |  |  |  |                     comComs.Items.Add(Portname[i]); | 
					
						
							|  |  |  |  |                     if (!string.IsNullOrEmpty(oCom) && oCom == Portname[i]) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         oldIndex = i; | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             finally | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                  | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             comComs.SelectedIndex = oldIndex; | 
					
						
							|  |  |  |  |             btnCom.Enabled = comComs.Items.Count > 0; | 
					
						
							|  |  |  |  |              | 
					
						
							|  |  |  |  |             if (comComs .Items.Count > 0) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 for (int i = comComs.Items.Count-1; i >= 0; i--) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     int port = Convert.ToInt16(comComs.Items[i].ToString().Substring(3)); | 
					
						
							|  |  |  |  |                     initialCom(port); | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |              | 
					
						
							|  |  |  |  |             btnReset.Enabled = currentPort > 0; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         | 
					
						
							|  |  |  |  |         void initialCom(int port) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             try | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 //int port = Convert.ToInt16(comComs.Text.Substring(3)); | 
					
						
							|  |  |  |  |                 resetLights(); | 
					
						
							|  |  |  |  |                 if (coms.Keys.Contains(port)) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     if (String.IsNullOrEmpty(oCom) || !oCom.Equals(comComs.Text)) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         WriteConfig("Com", comComs.Text); | 
					
						
							|  |  |  |  |                         oCom = comComs.Text; | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                     currentPort = port; | 
					
						
							|  |  |  |  |                     this.lbComStatus.Text = string.Format(comComs.Text + " 打开{0}", "成功"); | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 else | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     this.lbComStatus.Text = string.Format(comComs.Text + " 打开{0}", "失败"); | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             catch (Exception e) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 lbComStatus.Text = string.Format(e.Message); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |               | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private void resetLights() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (comComs.Items.Count == 0 || String.IsNullOrEmpty(comComs.Text)) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 return; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             int port = Convert.ToInt16(comComs.Text.Substring(3)); | 
					
						
							|  |  |  |  |             if (unart_manage.com_manage[port] == null) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 return; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             activePort = unart_manage.com_manage[port].init_port; | 
					
						
							|  |  |  |  |              | 
					
						
							|  |  |  |  |             if (pick.reset_device(port)) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 coms[port] = activePort; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         protected void WriteConfig(string key, string value) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             //ShowText("正在写入配置文件!请稍等...."); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             string appConfigPath = Application.StartupPath + "\\" + Application.ProductName + ".exe";  | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             ConfigurationOperator co = new ConfigurationOperator(appConfigPath, ConfigType.ExeConfig); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             co.AddAppSetting(key, value); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             co.Save(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         int baseLightId = 5000; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         bool turnOnLights(int portNo, List<ELight> lights) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (portNo == 0) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 portNo = currentPort; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |            // bool rt=false; | 
					
						
							|  |  |  |  |             List<ELight> fail = new List<ELight>(); | 
					
						
							|  |  |  |  |             log.Debug("start light on request ------>"); | 
					
						
							|  |  |  |  |             foreach (ELight el in lights) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 channel_led id = new channel_led(); | 
					
						
							|  |  |  |  |                 id.channel_id = baseLightId + el.lightId; | 
					
						
							|  |  |  |  |                 //id.config_word = led_rgb; | 
					
						
							|  |  |  |  |                 id.color = el.which; | 
					
						
							|  |  |  |  |                 id.state = 1; | 
					
						
							|  |  |  |  |                 if (el.port == 0) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     el.port = portNo; | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 if (!pick.turnOnLight(el.port, id)) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     log.Debug(getJson(el) + " light on failed. redo..."); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                     fail.Add(el); | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 else | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     log.Debug(getJson(el)); | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                  Thread.Sleep(50); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             if (fail.Count > 0) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 turnOnLights(portNo, fail); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             log.Debug("<----------- end light on request "); | 
					
						
							|  |  |  |  |             return fail.Count==0; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         bool turnOffLights(int portNo, List<ELight> lights) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (portNo == 0) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 portNo = currentPort; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             bool rt = false; | 
					
						
							|  |  |  |  |             List<ELight> fail = new List<ELight>(); | 
					
						
							|  |  |  |  |             log.Debug("start light off request ------>"); | 
					
						
							|  |  |  |  |             foreach (ELight el in lights) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 channel_led id = new channel_led(); | 
					
						
							|  |  |  |  |                 id.channel_id = baseLightId + el.lightId;   | 
					
						
							|  |  |  |  |                 //id.config_word = led_rgb; | 
					
						
							|  |  |  |  |                 id.color = el.which; | 
					
						
							|  |  |  |  |                 id.state = 1; | 
					
						
							|  |  |  |  |                 if (el.port == 0) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     el.port = portNo; | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 if (!pick.turnOffLight(el.port, id)) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     log.Debug(getJson(el) + " light off failed. redo..."); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                     fail.Add(el); | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 else { | 
					
						
							|  |  |  |  |                     log.Debug(getJson(el)); | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 Thread.Sleep(50); | 
					
						
							|  |  |  |  |                  | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             if (fail.Count > 0) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     turnOffLights(portNo, fail); | 
					
						
							|  |  |  |  |                     | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |             log.Debug("<----------- end light off  request "); | 
					
						
							|  |  |  |  |             return fail.Count == 0; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private byte getFloor() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             byte floor =0; | 
					
						
							|  |  |  |  |             /*if (InvokeRequired) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 this.Invoke(new showStatus(delegate() | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     int color = Convert.ToByte(comboxcolor.SelectedIndex) + 1; | 
					
						
							|  |  |  |  |                     floor= Convert.ToByte(color); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 })); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             else | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 int color = Convert.ToByte(comboxcolor.SelectedIndex) + 1; | 
					
						
							|  |  |  |  |                 floor = Convert.ToByte(color); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             */ | 
					
						
							|  |  |  |  |             int color = comboxcolor.SelectedIndex; | 
					
						
							|  |  |  |  |             floor = Convert.ToByte(color); | 
					
						
							|  |  |  |  |             return floor; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private void btnReset_Click(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private void btnTest_Click(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private void btnReset_Click_1(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |          | 
					
						
							|  |  |  |  |         private void tabPage2_Click(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private void btnTestOn_Click(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             Thread threadPreProcess = new Thread(new ParameterizedThreadStart(turnOnLight)); | 
					
						
							|  |  |  |  |             threadPreProcess.IsBackground = true; | 
					
						
							|  |  |  |  |             threadPreProcess.Start(getFloor()); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |              | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         delegate void showStatus(); | 
					
						
							|  |  |  |  |         void turnOnLight(object floor) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             svrUrl = System.Configuration.ConfigurationManager.AppSettings["BaseUri"]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             // svrUrl = svrUrl + "turnOnLightById?id={0}"; | 
					
						
							|  |  |  |  |             svrUrl = svrUrl + "turnOnLight?id={0}&which={1}&port={2}"; | 
					
						
							|  |  |  |  |             string lightId = txtLightId.Text.ToString(); | 
					
						
							|  |  |  |  |             int id = Convert.ToInt16(lightId); | 
					
						
							|  |  |  |  |             // int color = 0; | 
					
						
							|  |  |  |  |             string portNo = currentPort + ""; | 
					
						
							|  |  |  |  |             svrUrl = string.Format(svrUrl, id, floor, portNo); | 
					
						
							|  |  |  |  |             //   this.lbOnUrl.Text = svrUrl; | 
					
						
							|  |  |  |  |              | 
					
						
							|  |  |  |  |             this.Invoke(new showStatus(delegate() | 
					
						
							|  |  |  |  |             {   txtOut.Text += "Turn On Light:-->  \r\n " + svrUrl + "\r\n"; | 
					
						
							|  |  |  |  |                 lbOnStatus.Text = HttpGet(svrUrl, null); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             })); | 
					
						
							|  |  |  |  |            // lbOnStatus.Text = HttpGet(svrUrl, null); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         void turnOffLight(object floor) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             svrUrl = System.Configuration.ConfigurationManager.AppSettings["BaseUri"]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             // svrUrl = svrUrl + "turnOffLightById?id={0}"; | 
					
						
							|  |  |  |  |             svrUrl = svrUrl + "turnOffLight?id={0}&which={1}&port={2}"; | 
					
						
							|  |  |  |  |             string lightId = this.txtLightId.Text; | 
					
						
							|  |  |  |  |             int id = Convert.ToInt16(lightId); | 
					
						
							|  |  |  |  |             string portNo = currentPort + ""; | 
					
						
							|  |  |  |  |             svrUrl = string.Format(svrUrl, id, floor, portNo); | 
					
						
							|  |  |  |  |             //this.lbOffLight.Text = svrUrl; | 
					
						
							|  |  |  |  |              | 
					
						
							|  |  |  |  |           //  lbOnStatus.Text = HttpGet(svrUrl, null); | 
					
						
							|  |  |  |  |             this.Invoke(new showStatus(delegate() | 
					
						
							|  |  |  |  |             {   txtOut.Text += "Turn Off Light:-->  \r\n " + svrUrl + "\r\n"; | 
					
						
							|  |  |  |  |                 lbOnStatus.Text = HttpGet(svrUrl, null);  | 
					
						
							|  |  |  |  |             })); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         private void btnTestOff_Click(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             Thread threadPreProcess = new Thread(new ParameterizedThreadStart(turnOffLight)); | 
					
						
							|  |  |  |  |             threadPreProcess.IsBackground = true; | 
					
						
							|  |  |  |  |             threadPreProcess.Start(getFloor()); | 
					
						
							|  |  |  |  |            | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// GET请求与获取结果 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         public static string HttpGet(string Url, string postDataStr) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             try | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (string.IsNullOrEmpty(postDataStr) ? "" : "?") + postDataStr); | 
					
						
							|  |  |  |  |                 request.Method = "GET"; | 
					
						
							|  |  |  |  |                 request.ContentType = "text/html;charset=UTF-8"; | 
					
						
							|  |  |  |  |                 request.Timeout = 10000; | 
					
						
							|  |  |  |  |                 HttpWebResponse response = (HttpWebResponse)request.GetResponse(); | 
					
						
							|  |  |  |  |                 Stream myResponseStream = response.GetResponseStream(); | 
					
						
							|  |  |  |  |                 StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8); | 
					
						
							|  |  |  |  |                 string retString = myStreamReader.ReadToEnd(); | 
					
						
							|  |  |  |  |                 myStreamReader.Close(); | 
					
						
							|  |  |  |  |                 myResponseStream.Close(); | 
					
						
							|  |  |  |  |                 return retString; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             catch (Exception ex) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 return ex.Message; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private void btnReset_Click_2(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             resetLights(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private void btnCom_Click(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             int port = Convert.ToInt16(comComs.Text.Substring(3)); | 
					
						
							|  |  |  |  |             initialCom(port); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private void btnUrl_Click(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             svrUrl = System.Configuration.ConfigurationManager.AppSettings["BaseUri"]; | 
					
						
							|  |  |  |  |             if (svrUrl.Equals(txtUrl.Text)) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 return; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             WriteConfig("BaseUri", txtUrl.Text); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             MessageBox.Show("地址修改成功,重启程序后生效。", "通知", MessageBoxButtons.OK, MessageBoxIcon.Information); | 
					
						
							|  |  |  |  |             restart(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         Dictionary<string,string> dicRowId = new Dictionary<string,string >(); //  | 
					
						
							|  |  |  |  |         bool lightUp(List<ELabel> labels) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             //TODO: 把传来的实体按portNo分组,按portNo 分别点亮 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             writeBadRowIds(); | 
					
						
							|  |  |  |  |             Dictionary<int, List<ELabel>> lbsOrder = new Dictionary<int, List<ELabel>>(); //按orderNo 分组 | 
					
						
							|  |  |  |  |             Dictionary<int, List<ELabel>> lbsPort;  //按port分组 | 
					
						
							|  |  |  |  |             foreach (ELabel el in labels) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 if (el == null) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     break; | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 if (el.orderNo > 200 || el.orderNo < 1) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                     // addLog( "orderNo 只能取1-200范围的值"); | 
					
						
							|  |  |  |  |                     //  addLog("eorderNo 错误:" + getJson(el)); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 //  lbsPort.ContainsKey(el.port); | 
					
						
							|  |  |  |  |                 // if (!lbsPort.Keys.Contains(el.port)) | 
					
						
							|  |  |  |  |                 if (!lbsOrder.ContainsKey(el.orderNo)) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     lbsOrder[el.orderNo] = new List<ELabel>(); | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 lbsOrder[el.orderNo].Add(el); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             foreach (int keyOrder in lbsOrder.Keys) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 List<ELabel> lbs = lbsOrder[keyOrder]; | 
					
						
							|  |  |  |  |                 lbsPort = new Dictionary<int, List<ELabel>>(); | 
					
						
							|  |  |  |  |                 foreach (ELabel el in lbs) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     //  lbsPort.ContainsKey(el.port); | 
					
						
							|  |  |  |  |                     // if (!lbsPort.Keys.Contains(el.port)) | 
					
						
							|  |  |  |  |                     if (!lbsPort.ContainsKey(el.port)) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         lbsPort[el.port] = new List<ELabel>(); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                     lbsPort[el.port].Add(el); | 
					
						
							|  |  |  |  |                     string rowKey = getRowKey(el); | 
					
						
							|  |  |  |  |                     dicRowId[rowKey] = el.rowId+""; | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 foreach (int keyPort in lbsPort.Keys) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                    | 
					
						
							|  |  |  |  |                     if (!doLightUp(keyOrder, keyPort, lbsPort[keyPort])) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         return false ; | 
					
						
							|  |  |  |  |                     }  Thread.Sleep(100); | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             return true ;  | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         string getRowKey(ELabel el) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             return el.labelId + ":" + el.color; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         bool doLightUp(int orderNo, int portNo, List<ELabel> lables) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             | 
					
						
							|  |  |  |  |             int[] ids = new int[lables.Count]; | 
					
						
							|  |  |  |  |             int[] address = new int[lables.Count]; ;//标签坐标(行、列) | 
					
						
							|  |  |  |  |             int[] counts = new int[lables.Count]; ;//显示数量 | 
					
						
							|  |  |  |  |             int[] colors = new int[lables.Count]; ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             addLog("receive light request --->"); | 
					
						
							|  |  |  |  |             for (int i = 0; i < lables.Count; i++) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 ids[i] = lables[i].labelId; | 
					
						
							|  |  |  |  |                 address[i] = lables[i].num1; | 
					
						
							|  |  |  |  |                 counts[i] = lables[i].num3; | 
					
						
							|  |  |  |  |                 colors[i] = lables[i].color; | 
					
						
							|  |  |  |  |                 string json = getJson(lables[i]); | 
					
						
							|  |  |  |  |                 addLog(json); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             | 
					
						
							|  |  |  |  |             addLog("<--- receive light request end"); | 
					
						
							|  |  |  |  |             //elelab.DNLights.initPort();  | 
					
						
							|  |  |  |  |             if (portNo == 0 && currentPort > 0) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 portNo = currentPort; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             bool result = false; | 
					
						
							|  |  |  |  |             | 
					
						
							|  |  |  |  |                  //result = DNLights.lightLabels(portNo, colors, ids, address, counts); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             if (chkClear.Checked) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 if (orderNo <= 0) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     orderNo = 1; | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             saveRowIds(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             result = elelab.pick.lightLabels(lables,chkClear.Checked, orderNo, portNo, enumLabelPickType.seed); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             if (!result) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 addLog(string.Format("亮灯失败: orderNo: {0},portNo: {1} ", orderNo, portNo)); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             else | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                  | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 addLog(string.Format("亮灯成功: orderNo: {0},portNo: {1} ", orderNo, portNo)); | 
					
						
							|  |  |  |  |                 int cnt = Convert.ToInt32( getConfigValue("count"))+1; | 
					
						
							|  |  |  |  |                 writeConfig("count", cnt + ""); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             return result; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         char splitStr = '%'; | 
					
						
							|  |  |  |  |         | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// rowId 保存到配置文件 | 
					
						
							|  |  |  |  |         /// 每次亮灯时调用 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         private void saveRowIds() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             | 
					
						
							|  |  |  |  |             string value = ""; | 
					
						
							|  |  |  |  |             foreach(string rowKey in dicRowId.Keys) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 value+=rowKey+"#"+dicRowId[rowKey]+splitStr; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             writeConfig("rowIds", value); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 从配置文件读取rowId 和亮灯信息 | 
					
						
							|  |  |  |  |         /// 程序启动时调用 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         private void readRowIds() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             try {  | 
					
						
							|  |  |  |  |             string[] vs = getConfigValue("rowIds") .Split(splitStr); | 
					
						
							|  |  |  |  |             dicRowId.Clear(); | 
					
						
							|  |  |  |  |             foreach(string value in vs)// 21:2#1234567 | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 string[] tmp = value.Split('#'); | 
					
						
							|  |  |  |  |                 if (tmp.Length > 1) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     dicRowId[tmp[0]] = tmp[1]; | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             catch(Exception ex) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 addLog(ex.Message); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             readBadRowIds(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         ///  | 
					
						
							|  |  |  |  |         ///  | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |           List<string> badRowIds = new List<string>(); | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 按灭时加入新rowId | 
					
						
							|  |  |  |  |         /// 接口返回时去除rowId | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |        // List<string> finishedRowIds = new List<string>(); | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 从配置文件读取返回接口失败的rowId | 
					
						
							|  |  |  |  |         /// 程序启动时调用 | 
					
						
							|  |  |  |  |         /// 亮灯时调用 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         private void readBadRowIds() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             try | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 badRowIds = getConfigValue("badRowIds").Split(splitStr).ToList(); | 
					
						
							|  |  |  |  |                   | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             catch (Exception ex) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 addLog(ex.Message); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 保存接口失败的rowId | 
					
						
							|  |  |  |  |         /// 调用失败时保存 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         private void writeBadRowIds() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             //if (badRowIds.Count == 0) | 
					
						
							|  |  |  |  |            //     return; | 
					
						
							|  |  |  |  |             string value = ""; | 
					
						
							|  |  |  |  |             foreach (string rowId in badRowIds) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 value += rowId +    splitStr; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             writeConfig("badRowIds", value); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         void clearLablesByPortOrder(int port, int order) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (port == -1) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 port = currentPort; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             if (order == -1) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 order = 1; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             elelab.pick.clearDis(port, order); | 
					
						
							|  |  |  |  |             addLog("port " + currentPort + " cleared"); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       | 
					
						
							|  |  |  |  |         private void clearDis() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             clearLablesByPortOrder(currentPort, 1); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         /*void lightUp(List<ELabel> lables) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             int portNo = currentPort; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             if (portNo == 0) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 addLog("无活动端口,亮灯失败"); | 
					
						
							|  |  |  |  |                 return; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |                | 
					
						
							|  |  |  |  |             elelab.pick.init_port(enumLabelPickType.seed); | 
					
						
							|  |  |  |  |             elelab.pick.lightLabels(lables, portNo,  enumLabelPickType.seed); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |        // delegate void showStatus(); | 
					
						
							|  |  |  |  |         void testPicked(int orderNo, int eleId, int color, int eleAddress, int count,int num2) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             ELabel lb = new ELabel(); | 
					
						
							|  |  |  |  |             lb.num3 = count; | 
					
						
							|  |  |  |  |             lb.color = color; | 
					
						
							|  |  |  |  |             lb.num1 = eleAddress; | 
					
						
							|  |  |  |  |             lb.orderNo = orderNo; | 
					
						
							|  |  |  |  |             lb.labelId = eleId; | 
					
						
							|  |  |  |  |             lb.num2 = num2; | 
					
						
							|  |  |  |  |             int rowId = dicRowId.ContainsKey(getRowKey(lb)) ? Convert.ToInt32(dicRowId[getRowKey(lb)]) : 0; | 
					
						
							|  |  |  |  |             lb.rowId = rowId; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             if (rowId>0) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 badRowIds.Add(rowId+""); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             | 
					
						
							|  |  |  |  |             testPickedRowId(lb.rowId); //调用客户第三方的api,通知灯已经灭掉了 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             /* | 
					
						
							|  |  |  |  |             if (InvokeRequired) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 this.Invoke(new showStatus(delegate() | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     returnResult(lb); | 
					
						
							|  |  |  |  |                 })); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             else | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 returnResult(lb); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         void testPickedRowId(int rowId) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             ELabel lb = new ELabel(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             lb.rowId = rowId; | 
					
						
							|  |  |  |  |             if (InvokeRequired) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 this.Invoke(new showStatus(delegate () | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     returnResult(lb); | 
					
						
							|  |  |  |  |                 })); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             else | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 returnResult(lb); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         private void returnResult(ELabel lb) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             //to show result | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             //to call client and send data | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             String url = svrUrl + "testPost"; | 
					
						
							| 
									
										
										
										
											2023-06-04 12:58:50 +08:00
										 |  |  |  |             addLog("收到按键返回事件,开始回传..." + getJson(lb)); | 
					
						
							|  |  |  |  |             //  addLog(getJson(lb)); | 
					
						
							|  |  |  |  |             string rowId = lb.rowId + ""; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             // if (dicRowId.ContainsKey(getRowKey(lb))) | 
					
						
							|  |  |  |  |             //      rowId = dicRowId[getRowKey(lb)]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-23 16:13:17 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             //  String s = getJson(lb); | 
					
						
							|  |  |  |  |             postUrl = System.Configuration.ConfigurationManager.AppSettings["WMSuri"]; | 
					
						
							| 
									
										
										
										
											2023-06-04 12:58:50 +08:00
										 |  |  |  |             if (postUrl.StartsWith("http")) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 Thread threadPreProcess = new Thread(new ParameterizedThreadStart(HttpPost)); | 
					
						
							|  |  |  |  |                 threadPreProcess.IsBackground = true; | 
					
						
							|  |  |  |  |                 threadPreProcess.Start(lb); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             else if (postUrl.StartsWith("https")) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 Thread threadPreProcess = new Thread(new ParameterizedThreadStart(HttpsPost)); | 
					
						
							|  |  |  |  |                 threadPreProcess.IsBackground = true; | 
					
						
							|  |  |  |  |                 threadPreProcess.Start(lb); | 
					
						
							|  |  |  |  |             } | 
					
						
							| 
									
										
										
										
											2023-05-23 16:13:17 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private void returnResult(int orderNo, int eleId, int color, int eleAddress, int count, int num2) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             //to show result | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             //to call client and send data | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             ELabel lb = new ELabel(); | 
					
						
							|  |  |  |  |             lb.num3 = count; | 
					
						
							|  |  |  |  |             lb.color = color; | 
					
						
							|  |  |  |  |             lb.num1 = eleAddress; | 
					
						
							|  |  |  |  |             lb.orderNo = orderNo; | 
					
						
							|  |  |  |  |             lb.labelId = eleId; | 
					
						
							|  |  |  |  |             lb.num2 = num2; | 
					
						
							|  |  |  |  |             | 
					
						
							|  |  |  |  |             String url = svrUrl + "testPost"; | 
					
						
							|  |  |  |  |             addLog("收到按键返回事件,开始回传..."); | 
					
						
							|  |  |  |  |             addLog(getJson(lb)); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             //  String s = getJson(lb); | 
					
						
							|  |  |  |  |             postUrl =   System.Configuration.ConfigurationManager.AppSettings["WMSuri"]; | 
					
						
							|  |  |  |  |             Thread threadPreProcess = new Thread(new ParameterizedThreadStart(HttpPost)); | 
					
						
							|  |  |  |  |             threadPreProcess.IsBackground = true; | 
					
						
							|  |  |  |  |             threadPreProcess.Start(lb); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private void HttpPost(Object ticket) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             //string Url = svrUrl + "testPost"; | 
					
						
							|  |  |  |  |             DataContractJsonSerializer serializer = new DataContractJsonSerializer(ticket.GetType()); | 
					
						
							|  |  |  |  |             MemoryStream stream = new MemoryStream(); | 
					
						
							|  |  |  |  |             serializer.WriteObject(stream, ticket); | 
					
						
							|  |  |  |  |             byte[] dataBytes = new byte[stream.Length]; | 
					
						
							|  |  |  |  |             stream.Position = 0; | 
					
						
							|  |  |  |  |             stream.Read(dataBytes, 0, (int)stream.Length); | 
					
						
							|  |  |  |  |             string param = Encoding.UTF8.GetString(dataBytes); | 
					
						
							|  |  |  |  |             byte[] bs = Encoding.ASCII.GetBytes(param); | 
					
						
							|  |  |  |  |             HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(postUrl); | 
					
						
							|  |  |  |  |             req.Method = "POST"; | 
					
						
							|  |  |  |  |             req.ContentType = "application/json"; | 
					
						
							|  |  |  |  |             req.ContentLength = bs.Length; | 
					
						
							| 
									
										
										
										
											2023-06-04 12:58:50 +08:00
										 |  |  |  |             try | 
					
						
							| 
									
										
										
										
											2023-05-23 16:13:17 +08:00
										 |  |  |  |             { | 
					
						
							| 
									
										
										
										
											2023-06-04 12:58:50 +08:00
										 |  |  |  |                 using (Stream reqStream = req.GetRequestStream()) | 
					
						
							|  |  |  |  |                 {              | 
					
						
							|  |  |  |  |                    reqStream.Write(bs, 0, bs.Length); | 
					
						
							|  |  |  |  |                  } | 
					
						
							|  |  |  |  |                            | 
					
						
							|  |  |  |  |                 req.BeginGetResponse(new AsyncCallback(Compleate), req); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             catch(Exception e) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 addLog(e.Message); | 
					
						
							| 
									
										
										
										
											2023-05-23 16:13:17 +08:00
										 |  |  |  |             } | 
					
						
							| 
									
										
										
										
											2023-06-04 12:58:50 +08:00
										 |  |  |  |             /* | 
					
						
							|  |  |  |  |             HttpWebResponse hwr = req.GetResponse() as HttpWebResponse; | 
					
						
							|  |  |  |  |             System.IO.StreamReader myreader = new System.IO.StreamReader(hwr.GetResponseStream(), Encoding.UTF8); | 
					
						
							|  |  |  |  |             string responseText = myreader.ReadToEnd(); | 
					
						
							|  |  |  |  |             Console.WriteLine( responseText); | 
					
						
							|  |  |  |  |              * */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private void HttpsPost(Object ticket) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             //string Url = svrUrl + "testPost"; | 
					
						
							|  |  |  |  |             DataContractJsonSerializer serializer = new DataContractJsonSerializer(ticket.GetType()); | 
					
						
							|  |  |  |  |             MemoryStream stream = new MemoryStream(); | 
					
						
							|  |  |  |  |             serializer.WriteObject(stream, ticket); | 
					
						
							|  |  |  |  |             byte[] dataBytes = new byte[stream.Length]; | 
					
						
							|  |  |  |  |             stream.Position = 0; | 
					
						
							|  |  |  |  |             stream.Read(dataBytes, 0, (int)stream.Length); | 
					
						
							|  |  |  |  |             string param = Encoding.UTF8.GetString(dataBytes); | 
					
						
							|  |  |  |  |             byte[] bs = Encoding.ASCII.GetBytes(param); | 
					
						
							|  |  |  |  |             HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(postUrl); | 
					
						
							|  |  |  |  |             req.Method = "POST"; | 
					
						
							|  |  |  |  |             req.ContentType = "application/json"; | 
					
						
							|  |  |  |  |             req.ContentLength = bs.Length; | 
					
						
							| 
									
										
										
										
											2023-05-23 16:13:17 +08:00
										 |  |  |  |             try | 
					
						
							|  |  |  |  |             { | 
					
						
							| 
									
										
										
										
											2023-06-04 12:58:50 +08:00
										 |  |  |  |                 using (Stream reqStream = req.GetRequestStream()) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     reqStream.Write(bs, 0, bs.Length); | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-23 16:13:17 +08:00
										 |  |  |  |                 req.BeginGetResponse(new AsyncCallback(Compleate), req); | 
					
						
							|  |  |  |  |             } | 
					
						
							| 
									
										
										
										
											2023-06-04 12:58:50 +08:00
										 |  |  |  |             catch (Exception e) | 
					
						
							| 
									
										
										
										
											2023-05-23 16:13:17 +08:00
										 |  |  |  |             { | 
					
						
							|  |  |  |  |                 addLog(e.Message); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             /* | 
					
						
							|  |  |  |  |             HttpWebResponse hwr = req.GetResponse() as HttpWebResponse; | 
					
						
							|  |  |  |  |             System.IO.StreamReader myreader = new System.IO.StreamReader(hwr.GetResponseStream(), Encoding.UTF8); | 
					
						
							|  |  |  |  |             string responseText = myreader.ReadToEnd(); | 
					
						
							|  |  |  |  |             Console.WriteLine( responseText); | 
					
						
							|  |  |  |  |              * */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         public void Compleate(IAsyncResult asyncResult) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             try | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 HttpWebRequest req = (asyncResult.AsyncState as HttpWebRequest); | 
					
						
							|  |  |  |  |                 HttpWebResponse res = req.EndGetResponse(asyncResult) as HttpWebResponse; | 
					
						
							|  |  |  |  |                 StreamReader reader = new StreamReader(res.GetResponseStream()); | 
					
						
							|  |  |  |  |                 string responseText = reader.ReadToEnd(); | 
					
						
							|  |  |  |  |                 Console.WriteLine(responseText); | 
					
						
							|  |  |  |  |                 this.Invoke(new showStatus(delegate() | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     addLog("收到服务器响应: " + responseText); | 
					
						
							|  |  |  |  |                     addLog("-------------------------------------------------------------"); | 
					
						
							|  |  |  |  |                 })); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 if (res.StatusCode == HttpStatusCode.OK) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                    // ELabel elb = new ELabel(); | 
					
						
							|  |  |  |  |                  //   elb.rowId = 1; | 
					
						
							|  |  |  |  |                  //   elb.labelId = 2; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                   // responseText = getJson(elb); | 
					
						
							|  |  |  |  |                   //  addLog("---->"); | 
					
						
							|  |  |  |  |                    // addLog(getJson(elb)); | 
					
						
							|  |  |  |  |                  //   addLog("<----"); | 
					
						
							|  |  |  |  |                     var mStream = new MemoryStream(Encoding.Default.GetBytes(responseText)); | 
					
						
							|  |  |  |  |                     try { | 
					
						
							|  |  |  |  |                     ELabel lb = (ELabel)jsonSerializer.ReadObject(mStream); | 
					
						
							|  |  |  |  |                     string rowid = lb.rowId + ""; | 
					
						
							|  |  |  |  |                     addLog("收到服务器响应 rowid: " + rowid ); | 
					
						
							|  |  |  |  |                     if (badRowIds.Contains(rowid)) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         badRowIds.Remove(rowid); | 
					
						
							|  |  |  |  |                        addLog(" 已处理 rowid: " + rowid ); | 
					
						
							|  |  |  |  |                             //   return; | 
					
						
							|  |  |  |  |                         } | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     catch(Exception er) { | 
					
						
							|  |  |  |  |                         addLog("收到服务器响应:\n" + responseText +", 不包含亮灯数据"); | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                 }    | 
					
						
							|  |  |  |  |                   else | 
					
						
							|  |  |  |  |                 {   | 
					
						
							|  |  |  |  |                     writeBadRowIds(); | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |               | 
					
						
							|  |  |  |  |              //   Console.WriteLine(responseText); | 
					
						
							|  |  |  |  |                 // MessageBox.Show(reader.ReadToEnd()); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             catch (Exception e) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 addLog("错误消息:" + e.Message); | 
					
						
							|  |  |  |  |                 string errStack = ""; | 
					
						
							|  |  |  |  |                 foreach (char s in e.StackTrace) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     errStack += s; | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 addLog(errStack); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 //MessageBox.Show("获取失败."); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |   | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |        System.Runtime.Serialization.Json.DataContractJsonSerializer jsonSerializer | 
					
						
							|  |  |  |  |                          = new DataContractJsonSerializer(typeof(ELabel)); | 
					
						
							|  |  |  |  |         public string getJson(ELabel label) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |              return Util.getLbJson(label); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         public string getJson(ELight light) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             string json = ""; | 
					
						
							|  |  |  |  |             /*   if (label.port == 0) //按键返回信息 | 
					
						
							|  |  |  |  |                { | 
					
						
							|  |  |  |  |                    json = String.Format("\"labelId\":{0},\"num1\":{1},\"num2\":{2},\"color\":{3},\"orderNo\":{4}" | 
					
						
							|  |  |  |  |                   , label.labelId, label.num1, label.num2 , label.color, label.orderNo); | 
					
						
							|  |  |  |  |          | 
					
						
							|  |  |  |  |                }else //亮灯信息 | 
					
						
							|  |  |  |  |               */ | 
					
						
							|  |  |  |  |             json = String.Format("\"lightId\":{0},\"which\":{1}, \"port\":{2}" | 
					
						
							|  |  |  |  |               , light.lightId,  light.which, light.port); | 
					
						
							|  |  |  |  |               | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             return "{" + json + "}"; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         delegate void showLog(); | 
					
						
							|  |  |  |  |         void addLog(string info) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (InvokeRequired) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 this.Invoke(new showLog(delegate() | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     doLogTxt(info); | 
					
						
							|  |  |  |  |                 })); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             else | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 doLogTxt(info); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         void doLogTxt(string info) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (this.textLog.Lines.Length > 100) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 this.textLog.Text = ""; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             while (info.Length < 100) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 info += " "; | 
					
						
							|  |  |  |  |             }             | 
					
						
							|  |  |  |  |              | 
					
						
							|  |  |  |  |             log.Debug(getMsg("ServiceForm", info)); | 
					
						
							|  |  |  |  |              | 
					
						
							|  |  |  |  |             info = " " + System.DateTime.Now + "    " + info; | 
					
						
							|  |  |  |  |             this.textLog.Text = info + "\r\n" + this.textLog.Text; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             if (this.textBoxLog.Lines.Length > 100) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 this.textBoxLog.Text = ""; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             this.textBoxLog.Text = "\r\n" + info + "\r\n" + this.textBoxLog.Text; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             if (this.txtOut.Lines.Length > 100) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 this.txtOut.Text = ""; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             this.txtOut.Text = "\r\n" + info + "\r\n" + this.txtOut.Text; | 
					
						
							|  |  |  |  |              | 
					
						
							|  |  |  |  |              | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         static string getMsg(string className, string msg) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             return string.Format("{0}  {1}", className, msg); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         ELabel getTestLabel() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             int color = comcolor.SelectedIndex + 1; | 
					
						
							|  |  |  |  |             int num1 = 0; | 
					
						
							|  |  |  |  |             int num2 = 0; | 
					
						
							|  |  |  |  |             int num3 = 0; | 
					
						
							|  |  |  |  |             int id = 1; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             try | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 num1 = Convert.ToInt16(txtNumber1.Text); | 
					
						
							|  |  |  |  |                 num2 = Convert.ToInt32(txtNum2.Text); | 
					
						
							|  |  |  |  |                 num3 = Convert.ToInt32(txtNum3.Text); | 
					
						
							|  |  |  |  |                 id = Convert.ToInt32(txtLabelId.Text); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             catch | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 MessageBox.Show("请输入整数"); | 
					
						
							|  |  |  |  |                 return new ELabel(); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             ELabel el = new ELabel(); | 
					
						
							|  |  |  |  |             el.rowId = new Random().Next(); | 
					
						
							|  |  |  |  |             el.labelId = id; | 
					
						
							|  |  |  |  |             el.num2 = num2; | 
					
						
							|  |  |  |  |             el.num3 = num3; | 
					
						
							|  |  |  |  |             el.num1 = num1; | 
					
						
							|  |  |  |  |             el.color = color;// new Random().Next(1, 6); | 
					
						
							|  |  |  |  |             el.port = currentPort; | 
					
						
							|  |  |  |  |             return el; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         private void btnTestLabel_Click(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             svrUrl = System.Configuration.ConfigurationManager.AppSettings["BaseUri"]; | 
					
						
							|  |  |  |  |             | 
					
						
							|  |  |  |  |        | 
					
						
							|  |  |  |  |             List<ELabel> list = new List<ELabel>(); | 
					
						
							|  |  |  |  |             list.Add(getTestLabel()); | 
					
						
							|  |  |  |  |             lightUp(list); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           /*  postUrl = svrUrl + "lightLabels"; | 
					
						
							|  |  |  |  |             addLog("开始测试亮灯"); | 
					
						
							|  |  |  |  |            | 
					
						
							|  |  |  |  |              | 
					
						
							|  |  |  |  |              | 
					
						
							|  |  |  |  |             Thread threadPreProcess = new Thread(new ParameterizedThreadStart(HttpPost)); | 
					
						
							|  |  |  |  |             threadPreProcess.IsBackground = true; | 
					
						
							|  |  |  |  |             threadPreProcess.Start(els); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             addLog(postUrl); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             String json = "亮灯数据:["+ getJson(el) +"]"; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             addLog(json); | 
					
						
							|  |  |  |  |             */ | 
					
						
							|  |  |  |  |             /* | 
					
						
							|  |  |  |  |             int color = 0; | 
					
						
							|  |  |  |  |             for (int i = 1; i < 6; i++) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 color++; | 
					
						
							|  |  |  |  |                 if (color > 7) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     color = 0; | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 testLight(i + 1, color); | 
					
						
							|  |  |  |  |                 Thread.Sleep(100); | 
					
						
							|  |  |  |  |                 //break; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             */ | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         void testLight(int orderNo, int color) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             svrUrl = System.Configuration.ConfigurationManager.AppSettings["BaseUri"]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             ELabel[] els = new ELabel[3]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             for (int i = 1; i < 4; i++) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 ELabel el = new ELabel(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 el.labelId = i; | 
					
						
							|  |  |  |  |                 el.num3 = new Random().Next(1, 8888); | 
					
						
							|  |  |  |  |                 el.num1 = new Random().Next(1, 88); | 
					
						
							|  |  |  |  |                 el.color = color;// new Random().Next(1, 6); | 
					
						
							|  |  |  |  |                 el.port = currentPort; | 
					
						
							|  |  |  |  |                 el.orderNo = orderNo; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 els[i - 1] = el; | 
					
						
							|  |  |  |  |                 Thread.Sleep(100); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             /*for (int i = 5; i < 9; i++) | 
					
						
							|  |  |  |  |               { | 
					
						
							|  |  |  |  |                   ELabel el1 = new ELabel(); | 
					
						
							|  |  |  |  |                   el1.labelId = i;// new Random().Next(5, 9); | 
					
						
							|  |  |  |  |                   el1.count = new Random().Next(1, 8666); | 
					
						
							|  |  |  |  |                   el1.address = new Random().Next(1, 86); | 
					
						
							|  |  |  |  |                   el1.color = color; //new Random().Next(1, 6); | 
					
						
							|  |  |  |  |                   el1.port = 9; | 
					
						
							|  |  |  |  |                   el1.orderNo = orderNo; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                   els[i-1] = el1; | 
					
						
							|  |  |  |  |               } | 
					
						
							|  |  |  |  |               */ | 
					
						
							|  |  |  |  |             postUrl = svrUrl + "lightLabels"; | 
					
						
							|  |  |  |  |             addLog("开始测试亮灯"); | 
					
						
							|  |  |  |  |             Thread threadPreProcess = new Thread(new ParameterizedThreadStart(HttpPost)); | 
					
						
							|  |  |  |  |             threadPreProcess.IsBackground = true; | 
					
						
							|  |  |  |  |             threadPreProcess.Start(els); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private void btnRestart_Click(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             restart(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         private void restart() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             System.Diagnostics.Process.Start(System.Reflection.Assembly.GetExecutingAssembly().Location); | 
					
						
							|  |  |  |  |             System.Environment.Exit(0); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         private void btnCallback_Click(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             postUrl = System.Configuration.ConfigurationManager.AppSettings["WMSuri"]; | 
					
						
							|  |  |  |  |             if (postUrl.Equals(this.txtCallBack.Text)) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 return; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             WriteConfig("WMSuri", txtCallBack.Text); | 
					
						
							|  |  |  |  |             restart(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private void btnTestBack_Click(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             postUrl = System.Configuration.ConfigurationManager.AppSettings["WMSuri"]; ; | 
					
						
							|  |  |  |  |             addLog("开始测试回传WMS"); | 
					
						
							|  |  |  |  |             Thread threadPreProcess = new Thread(new ParameterizedThreadStart(HttpPost)); | 
					
						
							|  |  |  |  |             threadPreProcess.IsBackground = true; | 
					
						
							|  |  |  |  |             threadPreProcess.Start(getTestLabel()); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         bool resetPort(int port) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (port <= 0) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 port = currentPort; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             if (pick.reset_device(port)) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 addLog("Reset Port " + port + " succeed."); | 
					
						
							|  |  |  |  |                 return true; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             | 
					
						
							|  |  |  |  |             addLog("Reset Port " + port + " failed."); | 
					
						
							|  |  |  |  |             return false; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private void FormHost_FormClosing(object sender, FormClosingEventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             writeBadRowIds(); | 
					
						
							|  |  |  |  |             resetPort(0); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary>   | 
					
						
							|  |  |  |  |         /// 写入配置信息   | 
					
						
							|  |  |  |  |         /// </summary>   | 
					
						
							|  |  |  |  |         protected void writeConfig(string key, string value) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             //ShowText("正在写入配置文件!请稍等...."); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             string appConfigPath = Application.StartupPath + "\\" + Application.ProductName + ".exe"; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             ConfigurationOperator co = new ConfigurationOperator(appConfigPath, ConfigType.ExeConfig); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             co.AddAppSetting(key, value); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             co.Save(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         protected string getConfigValue(string key) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             return System.Configuration.ConfigurationManager.AppSettings[key]; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private void label13_Click(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private void btnSetCartIP_Click(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             string carNo = "",ip=""; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             string carIp = txtCartIp.Text; | 
					
						
							|  |  |  |  |             string[] ss = carIp.Split(':'); | 
					
						
							|  |  |  |  |             if (ss.Length > 1) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 carNo = ss[0]; | 
					
						
							|  |  |  |  |                 ip = ss[1]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 writeConfig(carNo, ip); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 MessageBox.Show("设置成功"); | 
					
						
							|  |  |  |  |                 txtCartIp.Text = ""; | 
					
						
							|  |  |  |  |                 restart(); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private bool vaildService() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |           string cnt =  getConfigValue("Service"); | 
					
						
							|  |  |  |  |           int value = Convert.ToInt32(cnt); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           if (value > 0) | 
					
						
							|  |  |  |  |           { | 
					
						
							|  |  |  |  |               value++; | 
					
						
							|  |  |  |  |               writeConfig("Service",value+""); | 
					
						
							|  |  |  |  |               return value > 3000000; | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  |           else | 
					
						
							|  |  |  |  |           { | 
					
						
							|  |  |  |  |             return true; | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  |   | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         bool isShowID = true; | 
					
						
							|  |  |  |  |         private void btnShowId_Click(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (isShowID) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 btnShowId.Text = "Clear ID"; | 
					
						
							|  |  |  |  |                 pick.displayLabels(currentPort); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             else | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 btnShowId.Text = "Show ID"; | 
					
						
							|  |  |  |  |                 pick.clearLabels(currentPort); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             isShowID = !isShowID; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private void txtBarcode_KeyDown(object sender, KeyEventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (e.KeyCode == Keys.Enter) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |              | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         int index = -1; | 
					
						
							|  |  |  |  |         private void txtBarcode_TextChanged(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             string barcode = txtBarcode.Text; | 
					
						
							|  |  |  |  |             if (barcode.Length == 9) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 txtBarcode.SelectAll(); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             else | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 return; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             if (index >= 0 && index<=5) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 turnOffLight(index); Thread.Sleep(100); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |                 switch (barcode) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     case "H-1-3-209": | 
					
						
							|  |  |  |  |                         | 
					
						
							|  |  |  |  |                         index = 0; | 
					
						
							|  |  |  |  |                         break; | 
					
						
							|  |  |  |  |                     case "H-1-3-208": | 
					
						
							|  |  |  |  |                         index = 1; | 
					
						
							|  |  |  |  |                         break; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                     case "H-1-3-207": | 
					
						
							|  |  |  |  |                         index = 2; | 
					
						
							|  |  |  |  |                         break; | 
					
						
							|  |  |  |  |                     case "H-1-3-206": | 
					
						
							|  |  |  |  |                         index = 3; | 
					
						
							|  |  |  |  |                         break; | 
					
						
							|  |  |  |  |                     case "H-1-3-205": | 
					
						
							|  |  |  |  |                         index = 4; | 
					
						
							|  |  |  |  |                         break;  | 
					
						
							|  |  |  |  |                     default: | 
					
						
							|  |  |  |  |                         index = 6; | 
					
						
							|  |  |  |  |                         break; | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 if (index < 5) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     lbLightColor.Text = "格子编号:010"+(index +1); | 
					
						
							|  |  |  |  |                     string log = barcode + " 识别成功,格子 " + (index+1) + " 开始亮灯..."; | 
					
						
							|  |  |  |  |                     txtOut.Text  = log + "\r\n";  | 
					
						
							|  |  |  |  |                     turnOnLight(index); | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 else | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     lbLightColor.Text = "无法识别"; | 
					
						
							|  |  |  |  |                     string log = barcode + " 无法识别,亮灯失败!!!!!" ; | 
					
						
							|  |  |  |  |                     txtOut.Text = log + "\r\n";  | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |               | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |           | 
					
						
							|  |  |  |  |      | 
					
						
							|  |  |  |  |         void resetLights(int port) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             postUrl = " http://192.168.0.102:9998/DNlight/resetPort"; | 
					
						
							|  |  |  |  |             Thread threadPreProcess = new Thread(new ParameterizedThreadStart(HttpPost)); | 
					
						
							|  |  |  |  |             threadPreProcess.IsBackground = true; | 
					
						
							|  |  |  |  |             threadPreProcess.Start(port); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private void btnOffLabel_Click(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             svrUrl = System.Configuration.ConfigurationManager.AppSettings["BaseUri"]; | 
					
						
							|  |  |  |  |             int color = comcolor.SelectedIndex + 1; | 
					
						
							|  |  |  |  |             int num1 = 0; | 
					
						
							|  |  |  |  |             int num2 = 0; | 
					
						
							|  |  |  |  |             int num3 = 0; | 
					
						
							|  |  |  |  |             int id = 1; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             try | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 num1 = Convert.ToInt16(txtNumber1.Text); | 
					
						
							|  |  |  |  |                 num2 = Convert.ToInt32(txtNum2.Text); | 
					
						
							|  |  |  |  |                 num3 = Convert.ToInt32(txtNum3.Text); | 
					
						
							|  |  |  |  |                 id = Convert.ToInt32(txtLabelId.Text); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             catch | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 MessageBox.Show("请输入整数"); | 
					
						
							|  |  |  |  |                 return; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             ELabel el = new ELabel(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             el.labelId = id; | 
					
						
							|  |  |  |  |             el.num2 = num2; | 
					
						
							|  |  |  |  |             el.num3 = num3; | 
					
						
							|  |  |  |  |             el.num1 = num1; | 
					
						
							|  |  |  |  |             el.color = color;// new Random().Next(1, 6); | 
					
						
							|  |  |  |  |             el.port = currentPort; | 
					
						
							|  |  |  |  |             ELabel[] els = new ELabel[1]; | 
					
						
							|  |  |  |  |             els[0] = el; | 
					
						
							|  |  |  |  |             postUrl = svrUrl + "labelOff"; | 
					
						
							|  |  |  |  |             addLog("开始测试关闭标签"); | 
					
						
							|  |  |  |  |             Thread threadPreProcess = new Thread(new ParameterizedThreadStart(HttpPost)); | 
					
						
							|  |  |  |  |             threadPreProcess.IsBackground = true; | 
					
						
							|  |  |  |  |             threadPreProcess.Start(els); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             addLog(postUrl); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             String json = "关闭标签数据:[" + getJson(el) + "]"; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             addLog(json); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private void label3_Click(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         System.Timers.Timer timer = new System.Timers.Timer();//实例化Timer类 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |        | 
					
						
							|  |  |  |  |         private void initialTimer() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             int intTime = Convert.ToInt32( nud.Value)*1000; | 
					
						
							|  |  |  |  |             intTime = intTime > 0 ? intTime : 10000; | 
					
						
							|  |  |  |  |             timer.Interval = intTime;//设置间隔时间,为毫秒; | 
					
						
							|  |  |  |  |             timer.Elapsed += new System.Timers.ElapsedEventHandler(checkHost);//到达时间的时候执行事件; | 
					
						
							|  |  |  |  |             timer.AutoReset = true;//设置是执行一次(false)还是一直执行(true); | 
					
						
							|  |  |  |  |             timer.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件; | 
					
						
							|  |  |  |  |             timer.Start(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         bool isChecking = false; | 
					
						
							|  |  |  |  |         private void checkHost(object sender, ElapsedEventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (isChecking) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 addLog(" check is working..... return"); | 
					
						
							|  |  |  |  |                 return; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |              | 
					
						
							|  |  |  |  |             isChecking = true; | 
					
						
							|  |  |  |  |             addLog("开始检查及再次回调服务。。。。。--->" ); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             if (badRowIds.Count == 0) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 isChecking = false; | 
					
						
							|  |  |  |  |                 addLog("待处理数量: " + badRowIds.Count); | 
					
						
							|  |  |  |  |                 addLog("<--- 结束再次回调服务 "); | 
					
						
							|  |  |  |  |                 return; | 
					
						
							|  |  |  |  |                | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |                 List<string> rowIds = new List<string>(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             foreach (string row in badRowIds) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 if (string.IsNullOrEmpty(row)) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     continue; | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                rowIds.Add(row); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             | 
					
						
							|  |  |  |  |             badRowIds.Clear(); | 
					
						
							|  |  |  |  |             foreach (string row in rowIds) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 if (string.IsNullOrEmpty(row)) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     continue; | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 badRowIds.Add(row); | 
					
						
							|  |  |  |  |                 addLog("待处理数据: " + rowIds +"  "); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             addLog("待处理数量: " + rowIds.Count); | 
					
						
							|  |  |  |  |             foreach (string row in rowIds) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 if (string.IsNullOrEmpty(row)) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     continue; | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 addLog("开始回调 row ID " + row); | 
					
						
							|  |  |  |  |                 testPickedRowId(Convert.ToInt32(row)); | 
					
						
							|  |  |  |  |                 Thread.Sleep(500); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             rowIds.Clear(); | 
					
						
							|  |  |  |  |             foreach (string row in badRowIds) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 if (string.IsNullOrEmpty(row)) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     continue; | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 rowIds.Add(row); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             if (rowIds.Count > 0) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 addLog("待处理回调异常记录: "); | 
					
						
							|  |  |  |  |                 foreach (string row in rowIds) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     if (string.IsNullOrEmpty(row)) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         continue; | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                     addLog("rowId: " + row); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             addLog("<--- 结束再次回调服务 "); | 
					
						
							|  |  |  |  |             writeBadRowIds(); | 
					
						
							|  |  |  |  |             isChecking =false; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private void nud_ValueChanged(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         {    int intTime = Convert.ToInt32(nud.Value) * 1000; | 
					
						
							|  |  |  |  |             WriteConfig("hostInterv", nud.Value + ""); | 
					
						
							|  |  |  |  |             timer.Stop();  | 
					
						
							|  |  |  |  |           | 
					
						
							|  |  |  |  |             timer.Interval = intTime;//设置间隔时间,为毫秒; | 
					
						
							|  |  |  |  |            | 
					
						
							|  |  |  |  |             timer.Start(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private void lbComStatus_Click(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         System.Timers.Timer timer2 = new System.Timers.Timer();//实例化Timer类 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         //每2小时重启服务 | 
					
						
							|  |  |  |  |         private void initialTimer2() | 
					
						
							|  |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2023-06-04 12:58:50 +08:00
										 |  |  |  |            //int intTime = 1* 60 * 1000; //1分 | 
					
						
							|  |  |  |  |            int intTime = 8 * 60 * 60 * 1000; //8小时 | 
					
						
							| 
									
										
										
										
											2023-05-23 16:13:17 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |             timer2.Interval = intTime;//设置间隔时间,为毫秒; | 
					
						
							|  |  |  |  |             timer2.Elapsed += new System.Timers.ElapsedEventHandler(reset);//到达时间的时候执行事件; | 
					
						
							|  |  |  |  |             timer2.AutoReset = true;//设置是执行一次(false)还是一直执行(true); | 
					
						
							|  |  |  |  |             timer2.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件; | 
					
						
							|  |  |  |  |             timer2.Start(); | 
					
						
							| 
									
										
										
										
											2023-06-04 12:58:50 +08:00
										 |  |  |  |              | 
					
						
							| 
									
										
										
										
											2023-05-23 16:13:17 +08:00
										 |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private void reset(object sender, ElapsedEventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2023-06-04 12:58:50 +08:00
										 |  |  |  |             int hour = System.DateTime.Now.Hour; | 
					
						
							|  |  |  |  |             addLog("current hour is " + hour); | 
					
						
							|  |  |  |  |             if (hour >7  &&  hour <19) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 return; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             addLog("Restarting....Service..... " ); | 
					
						
							| 
									
										
										
										
											2023-05-23 16:13:17 +08:00
										 |  |  |  |             restart(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } |