|
|
|
|
@ -49,20 +49,22 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
private DispatcherTimer _timer;
|
|
|
|
|
private RealReadDataService dataService = RealReadDataService.Instance;
|
|
|
|
|
|
|
|
|
|
private real_readdata NowReadData;
|
|
|
|
|
|
|
|
|
|
#region 关联属性
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 历史遗留的达芬
|
|
|
|
|
/// </summary>
|
|
|
|
|
private ObservableCollection<Real_DataInfo> _Deviceinfo = new ObservableCollection<Real_DataInfo>();
|
|
|
|
|
public ObservableCollection<Real_DataInfo> Deviceinfo
|
|
|
|
|
public ObservableCollection<string> Items { get; set; }
|
|
|
|
|
|
|
|
|
|
private string _QueryIsCheck = "";
|
|
|
|
|
public string QueryIsCheck
|
|
|
|
|
{
|
|
|
|
|
get { return _Deviceinfo; }
|
|
|
|
|
get { return _QueryIsCheck; }
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
if (_Deviceinfo != value)
|
|
|
|
|
_QueryIsCheck = value;
|
|
|
|
|
if (_QueryIsCheck != value)
|
|
|
|
|
{
|
|
|
|
|
SetProperty(ref _Deviceinfo, value);
|
|
|
|
|
SetProperty(ref _QueryIsCheck, value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -253,6 +255,13 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
CurrentDateTime = DateTime.Now;
|
|
|
|
|
};
|
|
|
|
|
_timer.Start();
|
|
|
|
|
|
|
|
|
|
Items = new ObservableCollection<string>();
|
|
|
|
|
foreach (var rfid in rfidList)
|
|
|
|
|
{
|
|
|
|
|
Items.Add(rfid.FilterData);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Log.Information("RFID输送带系统启动");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -263,13 +272,13 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
private void GenerateCode(object obj)
|
|
|
|
|
{
|
|
|
|
|
PreparedWriteList.Clear();
|
|
|
|
|
if(!int.TryParse(WriteCount, out int count))
|
|
|
|
|
if (!int.TryParse(WriteCount, out int count))
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show("请输入有效的写入数量!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for(int i = 1; i <= count; i++)
|
|
|
|
|
for (int i = 1; i <= count; i++)
|
|
|
|
|
{
|
|
|
|
|
string writeString = OrderNo + LineNo + DateTime.Now.ToString("yy") + BindNo + i.ToString("D2");
|
|
|
|
|
|
|
|
|
|
@ -292,7 +301,7 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
/// <param name="obj"></param>
|
|
|
|
|
private void ListClear(object obj)
|
|
|
|
|
{
|
|
|
|
|
if(MessageBox.Show("确认", "确定要清除已生成的数据吗?(该操作不可还原)", MessageBoxButtons.OKCancel) == DialogResult.OK)
|
|
|
|
|
if (MessageBox.Show("确认", "确定要清除已生成的数据吗?(该操作不可还原)", MessageBoxButtons.OKCancel) == DialogResult.OK)
|
|
|
|
|
{
|
|
|
|
|
PreparedWriteList.Clear();
|
|
|
|
|
}
|
|
|
|
|
@ -326,7 +335,12 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
/// <param name="obj"></param>
|
|
|
|
|
private void AutoWrite(object obj)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
//获取设备编号
|
|
|
|
|
if (string.IsNullOrEmpty(QueryIsCheck.ToString().Trim()))
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show("请选择产线!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
@ -335,103 +349,82 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
/// <param name="obj"></param>
|
|
|
|
|
private void RFIDWrite(object obj)
|
|
|
|
|
{
|
|
|
|
|
//获取设备编号
|
|
|
|
|
if (string.IsNullOrEmpty(QueryIsCheck.ToString().Trim()))
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show("请选择产线!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
real_readdata? data;
|
|
|
|
|
if (obj is real_readdata)
|
|
|
|
|
{
|
|
|
|
|
data = obj as real_readdata;
|
|
|
|
|
NowReadData = data;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
List<DeviceInfoConfig> DeviceInfos = appConfig.deviceInfoConfig.Where(x => x.Collectid == appConfig.StationCode && x.Name == QueryIsCheck.ToString().Trim() && x.Deleteflag == 0).ToList();
|
|
|
|
|
|
|
|
|
|
rfidList.FirstOrDefault(x => x.deviceid == DeviceInfos[0].Deviceid).Set_BeginIdentify().GetAwaiter().GetResult();
|
|
|
|
|
//rfidList.FirstOrDefault(x => x.deviceid == iCombineId)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 接收到连续盘点标签返回
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// </summary>3
|
|
|
|
|
/// <param name="iCombineId"></param>
|
|
|
|
|
/// <param name="tagInfos"></param>
|
|
|
|
|
private async void RecvIdentifyData_Instance(string iCombineId, List<TagInfo> tagInfos)
|
|
|
|
|
{
|
|
|
|
|
string info = "";
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).OrderNo))
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show("请先获取MES订单号!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
//读到停止连续盘点
|
|
|
|
|
bool stopflag = await rfidList.FirstOrDefault(x => x.deviceid == iCombineId).Set_StopIdentify();
|
|
|
|
|
//查询数据库是否已存在记录
|
|
|
|
|
bool iflag = false;
|
|
|
|
|
string epcascii = Encoding.ASCII.GetString(tagInfos[0].EPC);
|
|
|
|
|
epcascii = epcascii.Replace("\0", "");
|
|
|
|
|
List<real_readdata> real_Readdatas = dataService.Helper.Query(x => x.rfidascii == epcascii);
|
|
|
|
|
|
|
|
|
|
//如果不存在则写入
|
|
|
|
|
if (real_Readdatas.Count <= 0)
|
|
|
|
|
//if (true)
|
|
|
|
|
if (string.IsNullOrEmpty(NowReadData.serialno))
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).SerialNo))
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).ReadTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
//拼接订单号写入标签
|
|
|
|
|
string WriteData = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).OrderNo
|
|
|
|
|
+ Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).LineNo
|
|
|
|
|
+ DateTime.Now.ToString("yy")
|
|
|
|
|
+ Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).NextProductNo
|
|
|
|
|
+ Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).SerialNo;
|
|
|
|
|
//写入 三次重写
|
|
|
|
|
bool writeflag = await rfidList.FirstOrDefault(x => x.deviceid == iCombineId).Set_Write(tagInfos[0].EPC, WriteData);
|
|
|
|
|
MessageBox.Show("错误,无序列号");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//写入 三次重写
|
|
|
|
|
bool writeflag = await rfidList.FirstOrDefault(x => x.deviceid == iCombineId).Set_Write(tagInfos[0].EPC, NowReadData.rfidascii);
|
|
|
|
|
if (!writeflag)
|
|
|
|
|
{
|
|
|
|
|
Log.Error($"第一次写入失败,重试中...");
|
|
|
|
|
writeflag = await rfidList.FirstOrDefault(x => x.deviceid == iCombineId).Set_Write(tagInfos[0].EPC, NowReadData.rfidascii);
|
|
|
|
|
if (!writeflag)
|
|
|
|
|
{
|
|
|
|
|
Log.Error($"第一次写入失败,重试中...");
|
|
|
|
|
writeflag = await rfidList.FirstOrDefault(x => x.deviceid == iCombineId).Set_Write(tagInfos[0].EPC, WriteData);
|
|
|
|
|
Log.Error($"第二次写入失败,重试中...");
|
|
|
|
|
writeflag = await rfidList.FirstOrDefault(x => x.deviceid == iCombineId).Set_Write(tagInfos[0].EPC, NowReadData.rfidascii);
|
|
|
|
|
if (!writeflag)
|
|
|
|
|
{
|
|
|
|
|
Log.Error($"第二次写入失败,重试中...");
|
|
|
|
|
writeflag = await rfidList.FirstOrDefault(x => x.deviceid == iCombineId).Set_Write(tagInfos[0].EPC, WriteData);
|
|
|
|
|
if (!writeflag)
|
|
|
|
|
{
|
|
|
|
|
Log.Error($"第三次写入失败,立即开始重新盘点");
|
|
|
|
|
LastWriteState = "失败";
|
|
|
|
|
rfidList.FirstOrDefault(x => x.deviceid == iCombineId).Set_BeginIdentify().GetAwaiter().GetResult();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
Log.Error($"第三次写入失败");
|
|
|
|
|
MessageBox.Show("三次写入失败,请重新开始盘点");
|
|
|
|
|
LastWriteState = "失败";
|
|
|
|
|
//rfidList.FirstOrDefault(x => x.deviceid == iCombineId).Set_BeginIdentify().GetAwaiter().GetResult();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).WriteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).WriteStatus = "成功";
|
|
|
|
|
LastWriteState = "成功";
|
|
|
|
|
Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).RfidASCII = WriteData;
|
|
|
|
|
Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).RfidEPC = tagInfos[0].EPCstring;
|
|
|
|
|
Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).SerialNo = (Convert.ToInt32(Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).SerialNo) + 1).ToString("D2");
|
|
|
|
|
//保存写入记录
|
|
|
|
|
real_readdata real_Readdata = new real_readdata()
|
|
|
|
|
{
|
|
|
|
|
serialno = (Convert.ToInt32(Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).SerialNo) - 1).ToString("D2"),
|
|
|
|
|
orderno = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).OrderNo,
|
|
|
|
|
lineno = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).LineNo,
|
|
|
|
|
producttype = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).ProductType,
|
|
|
|
|
rfidepc = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).RfidEPC,
|
|
|
|
|
rfidascii = WriteData,
|
|
|
|
|
readtime = Convert.ToDateTime(Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).ReadTime),
|
|
|
|
|
writetime = Convert.ToDateTime(Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).WriteTime),
|
|
|
|
|
writestatus = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).WriteStatus
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var a = dataService.Helper.Insert(real_Readdata);
|
|
|
|
|
//刷新界面
|
|
|
|
|
//Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).RfidASCII = Encoding.ASCII.GetString(tagInfos[0].EPC);
|
|
|
|
|
//Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).ReadTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
//RefreshEventArgs(iCombineId, tagInfos);
|
|
|
|
|
AddRFIDData(iCombineId, tagInfos);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
NowReadData.rfidepc = tagInfos[0].EPCstring;
|
|
|
|
|
NowReadData.writetime = DateTime.Now;
|
|
|
|
|
|
|
|
|
|
var a = dataService.Helper.Insert(NowReadData);
|
|
|
|
|
//刷新界面
|
|
|
|
|
//Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).RfidASCII = Encoding.ASCII.GetString(tagInfos[0].EPC);
|
|
|
|
|
//Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).ReadTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
//RefreshEventArgs(iCombineId, tagInfos);
|
|
|
|
|
|
|
|
|
|
App.Current.Dispatcher.Invoke(() =>
|
|
|
|
|
{
|
|
|
|
|
TempRecordList.Add(NowReadData);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
await Task.Run(async () =>
|
|
|
|
|
{
|
|
|
|
|
await Task.Delay(1000);
|
|
|
|
|
@ -448,38 +441,6 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 添加数据的方法(核心:添加前/后判断行数)
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="iCombineId"></param>
|
|
|
|
|
/// <param name="tagInfos"></param>
|
|
|
|
|
public void AddRFIDData(string iCombineId, List<TagInfo> tagInfos)
|
|
|
|
|
{
|
|
|
|
|
//// 1. 判断当前行数是否>10,是则清空
|
|
|
|
|
//if (RFIDHistoryRecords.Count >= 10)
|
|
|
|
|
//{
|
|
|
|
|
// RFIDHistoryRecords.Clear();
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
App.Current.Dispatcher.Invoke(() =>
|
|
|
|
|
{
|
|
|
|
|
//RFIDHistoryRecords.Insert(0, new RFIDRecord
|
|
|
|
|
//{
|
|
|
|
|
// OrderNumber = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).OrderNo,
|
|
|
|
|
// LineNumber = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).LineNo,
|
|
|
|
|
// ProductType = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).ProductType,
|
|
|
|
|
// OriginalEPC = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).RfidEPC,
|
|
|
|
|
// RFIDCode = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).RfidASCII,
|
|
|
|
|
// ReadTime = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).ReadTime,
|
|
|
|
|
// WriteTime = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).ReadTime,
|
|
|
|
|
// WriteStatus = Deviceinfo.FirstOrDefault(x => x.Deviceid == iCombineId).WriteStatus // 模拟1条失败数据
|
|
|
|
|
//});
|
|
|
|
|
//RFIDHistoryRecords.OrderByDescending(x => x.ReadTime).ToList();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void LoadDeviceInfo()
|
|
|
|
|
{
|
|
|
|
|
List<DeviceInfoConfig> DeviceInfos = appConfig.deviceInfoConfig.Where(x => x.Collectid == appConfig.StationCode && x.Deleteflag == 0).ToList();
|
|
|
|
|
@ -509,73 +470,6 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
|
|
|
|
|
real_DataInfos.Add(real_DataInfo);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Real_DataInfo real_DataInfo = new Real_DataInfo()
|
|
|
|
|
//{
|
|
|
|
|
// Name = "1",
|
|
|
|
|
// Deviceid = "10001",
|
|
|
|
|
// Connectstr = "192.168.0.1:20108",
|
|
|
|
|
// LineNo = "6#",
|
|
|
|
|
// OrderNo = "123456",
|
|
|
|
|
// ProductType = "整芯带",
|
|
|
|
|
// WriteCount = "0",
|
|
|
|
|
// RfidCount = "20",
|
|
|
|
|
// IsOnline = "未连接",
|
|
|
|
|
// RfidASCII = "0",
|
|
|
|
|
// RfidEPC = "0",
|
|
|
|
|
// ReadTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
|
|
|
|
|
// WriteTime = DateTime.Now.AddSeconds(10).ToString("yyyy-MM-dd HH:mm:ss"),
|
|
|
|
|
// ProductStatus = "生产中",
|
|
|
|
|
// WriteStatus = "写入成功",
|
|
|
|
|
//};
|
|
|
|
|
//Real_DataInfo real_DataInfo2 = new Real_DataInfo()
|
|
|
|
|
//{
|
|
|
|
|
// Name = "2",
|
|
|
|
|
// Deviceid = "10002",
|
|
|
|
|
// Connectstr = "127.0.0.1:20108",
|
|
|
|
|
// LineNo = "7#",
|
|
|
|
|
// OrderNo = "123456",
|
|
|
|
|
// ProductType = "整芯带",
|
|
|
|
|
// WriteCount = "0",
|
|
|
|
|
// RfidCount = "20",
|
|
|
|
|
// IsOnline = "未连接",
|
|
|
|
|
// RfidASCII = "0",
|
|
|
|
|
// RfidEPC = "0",
|
|
|
|
|
// ReadTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
|
|
|
|
|
// WriteTime = DateTime.Now.AddSeconds(10).ToString("yyyy-MM-dd HH:mm:ss"),
|
|
|
|
|
// ProductStatus = "生产中",
|
|
|
|
|
// WriteStatus = "写入成功",
|
|
|
|
|
//};
|
|
|
|
|
//real_DataInfos.Add(real_DataInfo);
|
|
|
|
|
//real_DataInfos.Add(real_DataInfo2);
|
|
|
|
|
App.Current.Dispatcher.Invoke(() =>
|
|
|
|
|
{
|
|
|
|
|
Deviceinfo.Clear();
|
|
|
|
|
|
|
|
|
|
foreach (var item in real_DataInfos)
|
|
|
|
|
{
|
|
|
|
|
Real_DataInfo real_DataInfo = new Real_DataInfo()
|
|
|
|
|
{
|
|
|
|
|
Name = item.Name,
|
|
|
|
|
Deviceid = item.Deviceid,
|
|
|
|
|
Connectstr = item.Connectstr,
|
|
|
|
|
LineName = item.Name,
|
|
|
|
|
LineNo = item.LineNo,
|
|
|
|
|
OrderNo = item.OrderNo,
|
|
|
|
|
ProductType = item.ProductType,
|
|
|
|
|
WriteCount = item.WriteCount,
|
|
|
|
|
RfidCount = item.RfidCount,
|
|
|
|
|
IsOnline = item.IsOnline,
|
|
|
|
|
RfidASCII = item.RfidASCII,
|
|
|
|
|
ReadTime = item.ReadTime,
|
|
|
|
|
WriteTime = item.WriteTime,
|
|
|
|
|
ProductStatus = item.ProductStatus,
|
|
|
|
|
WriteStatus = item.WriteStatus,
|
|
|
|
|
RfidEPC = item.RfidEPC,
|
|
|
|
|
};
|
|
|
|
|
Deviceinfo.Add(real_DataInfo);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region 心跳检测
|
|
|
|
|
|