feat - 写入功能测试

read_card
SoulStar 5 days ago
parent 07b293449a
commit 5d2dbff2ac

@ -199,6 +199,8 @@ Content="查询" Width="200" Visibility="Hidden" FontSize="20" Command="{Binding
<Grid Grid.Row="0" >
<WrapPanel Orientation="Horizontal" ItemHeight="50">
<TextBlock Text="RFID写入列表" FontSize="15" VerticalAlignment="Center" Margin="10,0,0,0"/>
<Label Content="产线:" FontSize="15" Foreground="Black" VerticalAlignment="Center" Margin="10,0,0,0"/>
<ComboBox ItemsSource="{Binding Items}" Width="100" Height="30" FontSize="15" SelectedItem="{Binding QueryIsCheck,Mode=TwoWay}" Margin="10,0,0,0" Foreground="Black"/>
<Label Content="订单号:" FontSize="15" Foreground="Black" VerticalAlignment="Center" Margin="10,0,0,0"/>
<TextBox IsReadOnly="False" IsEnabled="True" Text="{Binding OrderNo,Mode=TwoWay}" Width="100" Height="30" FontSize="15" Foreground="Black" Margin="0,0,0,0" />
<Label Content="产线号:" FontSize="15" Foreground="Black" VerticalAlignment="Center" Margin="10,0,0,0"/>

@ -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 心跳检测

Loading…
Cancel
Save