|
|
@ -17,6 +17,7 @@ using System.Threading.Tasks;
|
|
|
|
using System.Timers;
|
|
|
|
using System.Timers;
|
|
|
|
using System.Windows.Forms;
|
|
|
|
using System.Windows.Forms;
|
|
|
|
using System.Xml.Serialization;
|
|
|
|
using System.Xml.Serialization;
|
|
|
|
|
|
|
|
using NewLife.Caching;
|
|
|
|
|
|
|
|
|
|
|
|
namespace NDSD_Screwdriver
|
|
|
|
namespace NDSD_Screwdriver
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -25,7 +26,7 @@ namespace NDSD_Screwdriver
|
|
|
|
/// <summary>
|
|
|
|
/// <summary>
|
|
|
|
/// 输出端口操作
|
|
|
|
/// 输出端口操作
|
|
|
|
/// </summary>
|
|
|
|
/// </summary>
|
|
|
|
private DOperate DOperate;
|
|
|
|
private DOperate DOperateInfo;
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// <summary>
|
|
|
|
/// TCP服务器
|
|
|
|
/// TCP服务器
|
|
|
@ -67,19 +68,28 @@ namespace NDSD_Screwdriver
|
|
|
|
|
|
|
|
|
|
|
|
private CancellationTokenSource cancellationTokenSource;
|
|
|
|
private CancellationTokenSource cancellationTokenSource;
|
|
|
|
|
|
|
|
|
|
|
|
public int textRFID = 0;
|
|
|
|
private CancellationTokenSource sendCancellationTokenSource;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public int textRFID = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private Queue<DOperateEntity> _methodQueue;
|
|
|
|
|
|
|
|
private ICache cache = Cache.Default;
|
|
|
|
int FlashIndex = 0;
|
|
|
|
int FlashIndex = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool _flashflag = true;
|
|
|
|
|
|
|
|
|
|
|
|
public MainForm()
|
|
|
|
public MainForm()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
InitializeComponent();
|
|
|
|
InitializeComponent();
|
|
|
|
|
|
|
|
_methodQueue = new Queue<DOperateEntity>();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FlashThreadTime();
|
|
|
|
var memorySetting = MemorySetting.Current;
|
|
|
|
var memorySetting = MemorySetting.Current;
|
|
|
|
|
|
|
|
|
|
|
|
SqlLiteTool.CreateTable(memorySetting.DB);
|
|
|
|
SqlLiteTool.CreateTable(memorySetting.DB);
|
|
|
@ -88,7 +98,7 @@ namespace NDSD_Screwdriver
|
|
|
|
LogDataGridView.AutoGenerateColumns = false;
|
|
|
|
LogDataGridView.AutoGenerateColumns = false;
|
|
|
|
LogDataGridView.DataSource = null;
|
|
|
|
LogDataGridView.DataSource = null;
|
|
|
|
LogDataGridView.DataSource = RFIDLogsEntitys;
|
|
|
|
LogDataGridView.DataSource = RFIDLogsEntitys;
|
|
|
|
DOperate = new DOperate();
|
|
|
|
DOperateInfo = new DOperate();
|
|
|
|
if (!server.ServerOpen(memorySetting.ServerIP, memorySetting.ServerPort))
|
|
|
|
if (!server.ServerOpen(memorySetting.ServerIP, memorySetting.ServerPort))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
MessageBox.Show("服务端打开失败!");
|
|
|
|
MessageBox.Show("服务端打开失败!");
|
|
|
@ -99,6 +109,7 @@ namespace NDSD_Screwdriver
|
|
|
|
{
|
|
|
|
{
|
|
|
|
serialPort = new SerialPortFactory(memorySetting.Com);
|
|
|
|
serialPort = new SerialPortFactory(memorySetting.Com);
|
|
|
|
StartLongRunningTask();
|
|
|
|
StartLongRunningTask();
|
|
|
|
|
|
|
|
SendRunningTask();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (Exception e)
|
|
|
|
catch (Exception e)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -107,6 +118,10 @@ namespace NDSD_Screwdriver
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
|
|
|
|
private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (server != null)
|
|
|
|
if (server != null)
|
|
|
@ -124,6 +139,16 @@ namespace NDSD_Screwdriver
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (sendCancellationTokenSource != null)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
sendCancellationTokenSource.Cancel();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (cancellationTokenSource != null)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
cancellationTokenSource.Cancel();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
timer.Close();
|
|
|
|
timer.Close();
|
|
|
|
timer.Dispose();
|
|
|
|
timer.Dispose();
|
|
|
|
|
|
|
|
|
|
|
@ -140,7 +165,7 @@ namespace NDSD_Screwdriver
|
|
|
|
private void DOTest_Click(object sender, EventArgs e)
|
|
|
|
private void DOTest_Click(object sender, EventArgs e)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
//string str = serialPort.Read();
|
|
|
|
//string str = serialPort.Read();
|
|
|
|
ScrewdriverTest screwdriverTest = new ScrewdriverTest(server, DOperate);
|
|
|
|
ScrewdriverTest screwdriverTest = new ScrewdriverTest(server, DOperateInfo);
|
|
|
|
screwdriverTest.Show();
|
|
|
|
screwdriverTest.Show();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -159,16 +184,10 @@ namespace NDSD_Screwdriver
|
|
|
|
/// </summary>
|
|
|
|
/// </summary>
|
|
|
|
private void InitTable()
|
|
|
|
private void InitTable()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
_flashflag = true;
|
|
|
|
FlashIndex = 0;
|
|
|
|
FlashIndex = 0;
|
|
|
|
textRFID = 0;
|
|
|
|
textRFID = 0;
|
|
|
|
|
|
|
|
|
|
|
|
timer.Start();
|
|
|
|
timer.Start();
|
|
|
|
//if (flashThread != null)
|
|
|
|
|
|
|
|
//{
|
|
|
|
|
|
|
|
// flashThread.Abort();
|
|
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
//FlashThread();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var memorySetting = MemorySetting.Current;
|
|
|
|
var memorySetting = MemorySetting.Current;
|
|
|
|
//读取rfid数据
|
|
|
|
//读取rfid数据
|
|
|
@ -378,6 +397,7 @@ namespace NDSD_Screwdriver
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
timer.Stop();
|
|
|
|
timer.Stop();
|
|
|
|
|
|
|
|
_flashflag = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
flag = 1;
|
|
|
|
flag = 1;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
@ -426,33 +446,57 @@ namespace NDSD_Screwdriver
|
|
|
|
SetRowsLightState(i, Brushes.Transparent);
|
|
|
|
SetRowsLightState(i, Brushes.Transparent);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
timer.Stop();
|
|
|
|
if(_flashflag)
|
|
|
|
Thread.Sleep(100);
|
|
|
|
timer.Stop();
|
|
|
|
|
|
|
|
Thread.Sleep(500);
|
|
|
|
//刷新IO的状态
|
|
|
|
//刷新IO的状态
|
|
|
|
for (int i = 0; i < RFIDStatesEntities.Count; i++)
|
|
|
|
for (int i = 0; i < RFIDStatesEntities.Count; i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
if (RFIDStatesEntities[i].RFIDState == 1)
|
|
|
|
if (RFIDStatesEntities[i].RFIDState == 1)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
DOperate.DOpen(lightsEntities[i].Yellow);
|
|
|
|
// DOperateInfo.DOpen(lightsEntities[i].Yellow);
|
|
|
|
Thread.Sleep(100);
|
|
|
|
_methodQueue.Enqueue(new DOperateEntity()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
port = lightsEntities[i].Yellow,
|
|
|
|
|
|
|
|
delay = 0
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (RFIDStatesEntities[i].RFIDState == 3)
|
|
|
|
else if (RFIDStatesEntities[i].RFIDState == 3)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
DOperate.DOpen(lightsEntities[i].Green);
|
|
|
|
_methodQueue.Enqueue(new DOperateEntity()
|
|
|
|
Thread.Sleep(100);
|
|
|
|
{
|
|
|
|
DOperate.DClose(lightsEntities[i].Yellow);
|
|
|
|
port = lightsEntities[i].Green,
|
|
|
|
Thread.Sleep(100);
|
|
|
|
delay = 0
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_methodQueue.Enqueue(new DOperateEntity()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
port = lightsEntities[i].Yellow,
|
|
|
|
|
|
|
|
delay = -1
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (RFIDStatesEntities[i].RFIDState == 4)
|
|
|
|
else if (RFIDStatesEntities[i].RFIDState == 4)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
DOperate.DOpen(lightsEntities[i].Red);
|
|
|
|
|
|
|
|
Thread.Sleep(100);
|
|
|
|
_methodQueue.Enqueue(new DOperateEntity()
|
|
|
|
DOperate.DClose(lightsEntities[i].Yellow);
|
|
|
|
{
|
|
|
|
Thread.Sleep(100);
|
|
|
|
port = lightsEntities[i].Red,
|
|
|
|
|
|
|
|
delay = 0
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_methodQueue.Enqueue(new DOperateEntity()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
port = lightsEntities[i].Yellow,
|
|
|
|
|
|
|
|
delay = -1
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
timer.Start();
|
|
|
|
if (_flashflag)
|
|
|
|
|
|
|
|
timer.Start();
|
|
|
|
RefreshRoll();
|
|
|
|
RefreshRoll();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -515,18 +559,6 @@ namespace NDSD_Screwdriver
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// IO控制
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
private void LightControl()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void ComDataAnalysis(string str)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// <summary>
|
|
|
|
/// 列表回调函数
|
|
|
|
/// 列表回调函数
|
|
|
@ -572,6 +604,54 @@ namespace NDSD_Screwdriver
|
|
|
|
}, cancellationTokenSource.Token);
|
|
|
|
}, cancellationTokenSource.Token);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// RFID刷新任务
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
private void SendRunningTask()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
sendCancellationTokenSource = new CancellationTokenSource();
|
|
|
|
|
|
|
|
Task.Run(() =>
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
while (!sendCancellationTokenSource.Token.IsCancellationRequested)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!cache.ContainsKey("Test"))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while (_methodQueue.Count > 0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var q = _methodQueue.Dequeue();
|
|
|
|
|
|
|
|
// -1 DClose > 0 DTimeOpen =0 Dopen
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (q.delay == -1)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
DOperateInfo.DClose(q.port);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (q.delay == 0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
DOperateInfo.DOpen(q.port);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (q.delay > 0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
DOperateInfo.DTimeOpen(q.port, q.delay);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Thread.Sleep(210); // 模拟一些长时间的工作
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
_methodQueue.Clear();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Thread.Sleep(100); // 模拟一些长时间的工作
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}, cancellationTokenSource.Token);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
///// <summary>
|
|
|
|
///// <summary>
|
|
|
|
///// 等待工作指示灯闪烁进程
|
|
|
|
///// 等待工作指示灯闪烁进程
|
|
|
|
///// </summary>
|
|
|
|
///// </summary>
|
|
|
@ -607,13 +687,21 @@ namespace NDSD_Screwdriver
|
|
|
|
if (step == 0)
|
|
|
|
if (step == 0)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
step = 1;
|
|
|
|
step = 1;
|
|
|
|
DOperate.DTimeOpen(lightsEntities[FlashIndex].Yellow, 1);
|
|
|
|
_methodQueue.Enqueue(new DOperateEntity()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
port = lightsEntities[FlashIndex].Yellow,
|
|
|
|
|
|
|
|
delay = 1
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
monitorEntities[FlashIndex].RowEntitys[2].Color = Brushes.Yellow;
|
|
|
|
monitorEntities[FlashIndex].RowEntitys[2].Color = Brushes.Yellow;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (step == 1)
|
|
|
|
else if (step == 1)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
step=0;
|
|
|
|
step=0;
|
|
|
|
monitorEntities[FlashIndex].RowEntitys[2].Color = Brushes.Transparent;
|
|
|
|
monitorEntities[FlashIndex].RowEntitys[2].Color = Brushes.Transparent;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
RefreshRoll();
|
|
|
|
RefreshRoll();
|
|
|
@ -686,12 +774,26 @@ namespace NDSD_Screwdriver
|
|
|
|
{
|
|
|
|
{
|
|
|
|
for (int i = 0; i < RFIDStatesEntities.Count; i++)
|
|
|
|
for (int i = 0; i < RFIDStatesEntities.Count; i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
DOperate.DClose(lightsEntities[i].Yellow);
|
|
|
|
|
|
|
|
Thread.Sleep(100);
|
|
|
|
_methodQueue.Enqueue(new DOperateEntity()
|
|
|
|
DOperate.DClose(lightsEntities[i].Red);
|
|
|
|
{
|
|
|
|
Thread.Sleep(100);
|
|
|
|
port = lightsEntities[i].Yellow,
|
|
|
|
DOperate.DClose(lightsEntities[i].Green);
|
|
|
|
delay = -1
|
|
|
|
Thread.Sleep(100);
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_methodQueue.Enqueue(new DOperateEntity()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
port = lightsEntities[i].Red,
|
|
|
|
|
|
|
|
delay = -1
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_methodQueue.Enqueue(new DOperateEntity()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
port = lightsEntities[i].Green,
|
|
|
|
|
|
|
|
delay = -1
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|