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);
 | ||
|             }
 | ||
|         }
 | ||
|     }
 | ||
| }
 |