221 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			221 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | 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 System.Threading; | |||
|  | 
 | |||
|  | namespace DNExamples | |||
|  | { | |||
|  |     public partial class frmExample : Form | |||
|  |     { | |||
|  |         int port = 1; //端口号 | |||
|  |           int[] ids  = new int[] { 1, 2}; | |||
|  |         public frmExample() | |||
|  |         { | |||
|  |             InitializeComponent(); | |||
|  |              DNLights.lightOffEvent += testPicked; //设置标签按灭委托事件  | |||
|  |              DNLights.initPort();//初始化端口数据 | |||
|  |             // Thread threadPreProcess = new Thread(DNLights.searchLight); | |||
|  |           //   threadPreProcess.IsBackground = true; | |||
|  |            //  threadPreProcess.Start(); | |||
|  |              initComs(); | |||
|  |         } | |||
|  | 
 | |||
|  |         void initComs() | |||
|  |         { | |||
|  |             String[] Portname = System.IO.Ports.SerialPort.GetPortNames();  | |||
|  |             combComs .Items.Clear(); | |||
|  |              | |||
|  |             try | |||
|  |             { | |||
|  | 
 | |||
|  |                 for (int i = 0; i < Portname.Length; i++) | |||
|  |                 { | |||
|  |                     | |||
|  |                     combComs.Items.Add(Portname[i]); | |||
|  |                    | |||
|  |                 } | |||
|  |                 if (combComs.Items.Count > 0) | |||
|  |                 { | |||
|  |                     combComs.SelectedIndex = 0; | |||
|  |                 } | |||
|  |                // getPortNo(); | |||
|  |             } | |||
|  |             finally | |||
|  |             { | |||
|  |                  | |||
|  |             } | |||
|  | 
 | |||
|  |            | |||
|  |             | |||
|  |         } | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 点亮一组标签 | |||
|  |         /// </summary> | |||
|  |         void lightsLabels() | |||
|  |         { | |||
|  |            //DNLights.initPort(); //开始一组亮灯操作 | |||
|  | 
 | |||
|  |               | |||
|  |            //标签ID | |||
|  |             int[] address;//标签坐标(行、列) | |||
|  |             int[] counts;//显示数量 | |||
|  |             bool result;//亮灯结果 | |||
|  |             int color;//灯的颜色 0 不亮 1 红灯 2 绿灯 3 蓝灯 4 红闪 5 绿闪 6 蓝闪  | |||
|  | 
 | |||
|  |             //点亮红灯 | |||
|  |             /* | |||
|  |             color = 1; | |||
|  |           //  ids = new int[] { 1, 1 }; | |||
|  |              address = new int[] { 11, 22 }; | |||
|  |             counts = new int[] { 5, 8 }; | |||
|  |             result = DNLights.lightLabels(port, color, ids, address, counts); | |||
|  |             //点亮绿灯 | |||
|  |             | |||
|  |            | |||
|  |             color = 2; | |||
|  |             ids = new int[] { 1, 2 ,3,4,5,6,7,8,9 }; | |||
|  |             address = new int[] { 11, 22,11,12,13,14,15,16 ,16 }; | |||
|  |             counts = new int[] { 5, 6  ,1,2,13,14,5,666,999}; | |||
|  |             int[] colors = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; | |||
|  |             for (int i = 0; i < 9; i++) | |||
|  |             { | |||
|  |                 Thread.Sleep(15); | |||
|  |                 colors[i] = new Random().Next(1,9); | |||
|  |             } | |||
|  |             */ | |||
|  | 
 | |||
|  |             | |||
|  |             ids = new int[] { 1, 2  }; | |||
|  |             address = new int[] { new Random().Next(11, 35), new Random().Next(21, 38)  }; | |||
|  |             counts = new int[] { new Random().Next(1, 500), new Random().Next(1, 300)  }; | |||
|  |             int[] colors = new int[] { 1, 2  }; | |||
|  |             for (int i = 0; i < 2; i++) | |||
|  |             { | |||
|  |                 Thread.Sleep(15); | |||
|  |                 colors[i] = new Random().Next(1, 3); | |||
|  |             } | |||
|  | 
 | |||
|  |             result = DNLights.lightLabels(port, colors, ids, address, counts); | |||
|  |               | |||
|  |         } | |||
|  | 
 | |||
|  |         delegate void showStatus(); | |||
|  |         /// <summary> | |||
|  |         /// 接收返回的数据 | |||
|  |         /// </summary> | |||
|  |         /// <param name="portNo">端口号</param> | |||
|  |         /// <param name="eleId">标签ID</param> | |||
|  |         /// <param name="color">颜色</param> | |||
|  |         /// <param name="eleAddress">地址(行/列)</param> | |||
|  |         /// <param name="count">数量</param> | |||
|  |         void testPicked(int port,int eleId, int color, int eleAddress, int count) | |||
|  |         { | |||
|  |             if (InvokeRequired) | |||
|  |             { | |||
|  |                 this.Invoke(new showStatus(delegate() | |||
|  |                 { | |||
|  |                     showResult( port,eleId, color, eleAddress, count); | |||
|  |                 })); | |||
|  | 
 | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  | 
 | |||
|  |                 showResult(port,  eleId, color, eleAddress, count); | |||
|  |             } | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         int countResult = 0; | |||
|  |         List<int> results = new List<int>();  | |||
|  |         void showResult( int port, int eleId, int color, int eleAddress, int count) | |||
|  |         { | |||
|  |           //  if (results.Contains(eleId)) { return; } | |||
|  |             string result = string.Format("\n\n 端口:{0} \n\n 标签ID:{1} \n\n 颜色:{2} \n\n 地址:{3} \n\n 数量:{4}", port, eleId, color, eleAddress, count); | |||
|  |             Console.WriteLine(result); | |||
|  |             lbLightOffReturn.Text = result; | |||
|  | 
 | |||
|  |             countResult++; | |||
|  | 
 | |||
|  |             if (!results.Contains(eleId)) | |||
|  |             { | |||
|  |                 results.Add(eleId); | |||
|  |                 if (results.Count == ids.Length) | |||
|  |                 { | |||
|  |                     Console.WriteLine(" To light Labels again"); | |||
|  |                     Console.WriteLine("。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。"); | |||
|  |                     results.Clear(); | |||
|  |                     countResult = 0; | |||
|  |                     Thread.Sleep(1000); | |||
|  |                     lightsLabels(); | |||
|  | 
 | |||
|  |                 } | |||
|  |             } | |||
|  | 
 | |||
|  |           | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         private void btnLights_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             lightsLabels(); | |||
|  |         } | |||
|  | 
 | |||
|  |         private void btnOff_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |           //  elelab.DNLights.turnOffLightOfPort(port);//熄灭指定端口的标签和通道灯 | |||
|  |             int[] ids={1,2  }; | |||
|  |          //   elelab.DNLights.turnOffLights(port,ids);//熄灭指定端口、指定标签id 数组的标签,不包括通道灯 | |||
|  |           //  elelab.DNLights.turnOffLight(1); //熄灭所有端口标签ID为1的标签 | |||
|  |             elelab.DNLights.turnOffLight(); //熄灭所有端口的标签和通道灯 | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         private void btnReset_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             elelab.DNLights.resetDevice(port);//输入要复位的端口号 | |||
|  |         } | |||
|  | 
 | |||
|  |           | |||
|  |   | |||
|  |         private void btnOpenLed_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             elelab.DNLights.open_channel_led(port, 5000);//传入端口号和通道灯id | |||
|  |         } | |||
|  | 
 | |||
|  |         private void btnCloseLed_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             elelab.DNLights.close_channel_led(port, 5000);//传入端口号和通道灯id | |||
|  |         } | |||
|  | 
 | |||
|  |         private void frmExample_Load(object sender, EventArgs e) | |||
|  |         { | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         private void combComs_SelectedIndexChanged(object sender, EventArgs e) | |||
|  |         { | |||
|  |             getPortNo(); | |||
|  |         } | |||
|  | 
 | |||
|  |         private void getPortNo() | |||
|  |         { | |||
|  |             if (combComs.Items.Count> 0) | |||
|  |             { | |||
|  |                 string com = combComs.Text.Trim().Substring(3); | |||
|  |                  | |||
|  |                 port = Convert.ToInt16(com); | |||
|  |             } | |||
|  |         } | |||
|  |     } | |||
|  | } |