ldj/DNExamples/Form1.cs

221 lines
6.6 KiB
C#
Raw Permalink Normal View History

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