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