change-完善条码绑定

dev
liuwf 1 year ago
parent ddba87a8d4
commit b945ebb240

@ -24,7 +24,6 @@ using System.Linq;
using Aucma.Core.Scanner; using Aucma.Core.Scanner;
using System.Collections.Generic; using System.Collections.Generic;
using NPOI.HSSF.Record; using NPOI.HSSF.Record;
using Aucma.Core.PLc;
using SqlSugar; using SqlSugar;
using Microsoft.AspNetCore.Mvc.ModelBinding; using Microsoft.AspNetCore.Mvc.ModelBinding;
using Admin.Core.Model.ViewModels; using Admin.Core.Model.ViewModels;
@ -34,6 +33,8 @@ using Brushes = System.Windows.Media.Brushes;
using Admin.Core.Model.Model_New; using Admin.Core.Model.Model_New;
using Microsoft.IdentityModel.Logging; using Microsoft.IdentityModel.Logging;
using static Npgsql.Replication.PgOutput.Messages.RelationMessage; using static Npgsql.Replication.PgOutput.Messages.RelationMessage;
using Aucma.Core.HwPLc;
using System.Windows.Documents;
/* /*
* *
*/ */
@ -69,18 +70,18 @@ namespace Aucma.Core.CodeBinding.ViewModels
MvCodeHelper.ReceiveCode1Event += receiveCode1; MvCodeHelper.ReceiveCode1Event += receiveCode1;
MvCodeHelper.ReceiveCode2Event += receiveCode2; MvCodeHelper.ReceiveCode2Event += receiveCode2;
LoadData(); LoadData();
add();
//实时绑定条码和实时下发plc放行信号 //实时绑定条码和实时下发plc放行信号
realBindingAndSendPlc(); realBindingAndSendPlc();
//Task.Run(() => Task.Run(() =>
//{ {
// Thread.Sleep(5000); Thread.Sleep(3000);
// receiveCode1("L23000000899"); receiveCode1("B24010181060282920002");
// Thread.Sleep(2000); Thread.Sleep(2000);
// receiveCode2("B23000000824"); receiveCode2("16160030000000910780");
//}); });
} }
catch (Exception ex) catch (Exception ex)
@ -119,30 +120,43 @@ namespace Aucma.Core.CodeBinding.ViewModels
Thread.Sleep(500); Thread.Sleep(500);
} }
}); });
// 实时下发plc放行信号 // 实时下发plc放行信号
Task.Run(() => Task.Run(() =>
{
try
{ {
while (true) while (true)
{ {
try Thread.Sleep(3000);
var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("条码绑定Plc"));
if (obj != null && obj.plc.IsConnected)
{ {
CodeBindingRecord record = _codeBindingRecordServices.FirstAsync(x => x.isPlcPass == 1 && x.RecordTime2 >= System.DateTime.Now.AddDays(-1)).Result; CodeBindingRecord record = _codeBindingRecordServices.FirstAsync(x => x.isPlcPass == 1 && x.RecordTime2 >= System.DateTime.Now.AddDays(-1)).Result;
if (record != null) if (record != null)
{ {
// 下发plc放行信号 // 下发plc放行信号
if (SendPlcPass()) RefreshAndWriteLog($"条码[{record.BoxCode}]下发plc放行信号等待plc反馈...");
if (SendPlcPass(obj))
{ {
RefreshAndWriteLog($"条码[{record.BoxCode}]放行成功");
record.isPlcPass = 2; record.isPlcPass = 2;
_ = _codeBindingRecordServices.UpdateAsync(record).Result; _ = _codeBindingRecordServices.UpdateAsync(record).Result;
LoadData();
}
else
{
RefreshAndWriteLog("等待Plc反馈信号5秒超时!");
} }
} }
} }
Thread.Sleep(1000);
}
}
catch (Exception ex) catch (Exception ex)
{ {
log.Error(ex.ToString()); log.Error(ex.ToString());
} }
Thread.Sleep(500);
}
}); });
} }
@ -153,13 +167,15 @@ namespace Aucma.Core.CodeBinding.ViewModels
{ {
try try
{ {
// 赋值 ListItems.Clear();
Code1 = "B236000007811023002"; //// 赋值
// Code1Time = "2023-10-23 16:05:23"; //Code1 = "B236000007811023002";
Code2 = "B236000007811023002"; //// Code1Time = "2023-10-23 16:05:23";
// Code2Time = "2023-10-23 16:05:23"; //Code2 = "B236000007811023002";
BindingInfo = "条码[B236000007811023002]和SN条码[B236000007811023002]绑定成功!"; //// Code2Time = "2023-10-23 16:05:23";
//BindingInfo = "条码[B236000007811023002]和SN条码[B236000007811023002]绑定成功!";
LoadCharts(); LoadCharts();
List<CodeBindingRecord> records = null; List<CodeBindingRecord> records = null;
records = await _codeBindingRecordServices.QueryAsync(x => x.BoxCode != null && x.RecordTime2 >= System.DateTime.Now.AddDays(-1), "RECORD_TIME2 desc"); records = await _codeBindingRecordServices.QueryAsync(x => x.BoxCode != null && x.RecordTime2 >= System.DateTime.Now.AddDays(-1), "RECORD_TIME2 desc");
if (records != null) if (records != null)
@ -232,10 +248,14 @@ namespace Aucma.Core.CodeBinding.ViewModels
// 测试方法 // 测试方法
private async void add() private async void add()
{ {
//String code = "9002006859"; //DateTime startTime = DateTime.Now;
//List<BaseBomInfo> bomInfo = await _baseBomInfoServices.QueryAsync(x => x.MaterialCode == code); //Thread.Sleep(5000);
//string aa = bomInfo.FirstOrDefault().MaterialName;
//Console.WriteLine(aa); //TimeSpan elapsedTime = DateTime.Now - startTime;
//Console.WriteLine(elapsedTime.TotalSeconds);
} }
#endregion #endregion
@ -429,9 +449,11 @@ namespace Aucma.Core.CodeBinding.ViewModels
/// <param name="logStr"></param> /// <param name="logStr"></param>
private void RefreshAndWriteLog(string logStr) private void RefreshAndWriteLog(string logStr)
{ {
DateTime time = System.DateTime.Now; TimeSpan currentTime = DateTime.Now.TimeOfDay;
BindingInfo = time + ":" + logStr; // DateTime time = System.DateTime.Now;
log.Info(logStr); string timeString = currentTime.ToString(@"hh\:mm\:ss");
BindingInfo = timeString + ":" + logStr;
log.Info(BindingInfo);
} }
@ -495,31 +517,17 @@ namespace Aucma.Core.CodeBinding.ViewModels
/// 下发plc放行信号 /// 下发plc放行信号
/// </summary> /// </summary>
/// <param name="materialType"></param> /// <param name="materialType"></param>
private bool SendPlcPass() private bool SendPlcPass(PlcModel obj)
{ {
bool result = false; bool result = false;
try try
{ {
var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("条码绑定Plc"));
if (obj != null) log.Info("D7100写1");
{
if (obj.plc.IsConnected)
{
// 往plc写入放行信号 // 往plc写入放行信号
obj.plc.WriteInt32("D100", 1); obj.plc.WriteInt16("D7100", "1");
// 等待plc反馈信号 // 等待plc反馈信号
waitPlcSignal(); result = waitPlcSignal(obj);
result = true;
}
else
{
log.Info("条码绑定plc连接失败请检查plc连接");
}
}
else
{
log.Info("获取plc连接对象信息为空");
}
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -531,42 +539,35 @@ namespace Aucma.Core.CodeBinding.ViewModels
/// 读取plc放行反馈 /// 读取plc放行反馈
/// </summary> /// </summary>
/// <param name="materialType"></param> /// <param name="materialType"></param>
private void waitPlcSignal() private bool waitPlcSignal(PlcModel obj)
{ {
bool result = false;
try try
{ {
DateTime startTime = DateTime.Now;
bool isFlag = true; bool isFlag = true;
var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("条码绑定Plc"));
if (obj != null)
{
if (obj.plc.IsConnected)
{
do do
{ {
if (obj.plc.ReadInt32("D100") == 2) if (obj.plc.ReadInt16("D7200") == 2)
{ {
Console.WriteLine("收到plc放行成功"); log.Info("D7100读2");
obj.plc.WriteInt32("D100", 0);
isFlag = false; isFlag = false;
result = true;
} }
Thread.Sleep(1000); TimeSpan elapsedTime = DateTime.Now - startTime;
} while (isFlag); if (elapsedTime.TotalSeconds >= 5)
}
else
{
log.Info("条码绑定plc连接失败请检查plc连接");
}
}
else
{ {
log.Info("获取plc连接对象信息为空"); isFlag = false;
} }
Thread.Sleep(500);
} while (isFlag);
} }
catch (Exception ex) catch (Exception ex)
{ {
log.Error("读取plc放行反馈方法waitPlcSignal()出现异常,ex:" + ex); log.Error("读取plc放行反馈方法waitPlcSignal()出现异常,ex:" + ex);
} }
return result;
} }
#endregion #endregion

@ -118,7 +118,7 @@
</StackPanel> </StackPanel>
<StackPanel Grid.Row="2" Grid.Column="0" Orientation="Horizontal" VerticalAlignment="Center" Margin="100 0 0 0 "> <StackPanel Grid.Row="2" Grid.Column="0" Orientation="Horizontal" VerticalAlignment="Center" Margin="100 0 0 0 ">
<Label Content="提示信息 " FontSize="20" Foreground="#FFFFFF"/> <Label Content="提示信息 " FontSize="20" Foreground="#FFFFFF"/>
<TextBox TextWrapping="Wrap" Text="{Binding BindingInfo}" Width="500" Height="150" FontSize="20" Foreground="#FFFFFF"/> <TextBox TextWrapping="Wrap" Text="{Binding BindingInfo}" Width="600" Height="200" FontSize="18" Foreground="#FFFFFF"/>
</StackPanel> </StackPanel>
</Grid> </Grid>

@ -208,6 +208,8 @@
{ {
"Id": 1, "Id": 1,
"EquipName": "条码绑定Plc", "EquipName": "条码绑定Plc",
"PlcType": "Melsec",
"Enabled": true,
"IP": "127.0.0.1", "IP": "127.0.0.1",
"Port": 6000 "Port": 6000
} }

Loading…
Cancel
Save