feat - 发卡器写入功能完善,前端样式修改

read_card
SoulStar 4 days ago
parent 5d2dbff2ac
commit 2ff635b052

@ -6,6 +6,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.4.2" />
<PackageReference Include="sqlite-net-pcl" Version="1.9.172" /> <PackageReference Include="sqlite-net-pcl" Version="1.9.172" />
<PackageReference Include="SqlSugarCore" Version="5.1.4.134" /> <PackageReference Include="SqlSugarCore" Version="5.1.4.134" />
<PackageReference Include="System.Text.Json" Version="10.0.5" /> <PackageReference Include="System.Text.Json" Version="10.0.5" />

@ -3,13 +3,15 @@ using System.Linq;
using System.Text; using System.Text;
using SQLite; using SQLite;
using SqlSugar; using SqlSugar;
using CommunityToolkit.Mvvm.ComponentModel;
namespace SlnMesnac.Repository namespace SlnMesnac.Repository
{ {
///<summary> ///<summary>
/// ///
///</summary> ///</summary>
public partial class real_readdata public class real_readdata : ObservableObject
{ {
/// <summary> /// <summary>
/// Desc: /// Desc:
@ -75,12 +77,25 @@ namespace SlnMesnac.Repository
/// </summary> /// </summary>
public DateTime? writetime { get; set; } public DateTime? writetime { get; set; }
private string _writestatus;
/// <summary> /// <summary>
/// Desc: /// Desc:
/// Default: /// Default:
/// Nullable:True /// Nullable:True
/// </summary> /// </summary>
public string writestatus { get; set; } public string writestatus
{
get => _writestatus;
set
{
if (_writestatus != value)
{
SetProperty(ref _writestatus, value);
}
}
}
/// <summary> /// <summary>
/// Desc: /// Desc:

@ -172,13 +172,13 @@
ScrollViewer.VerticalScrollBarVisibility="Auto" BorderThickness="0" CanUserAddRows="False" SelectionMode="Single" IsReadOnly="True" ScrollViewer.VerticalScrollBarVisibility="Auto" BorderThickness="0" CanUserAddRows="False" SelectionMode="Single" IsReadOnly="True"
Foreground="Black" > Foreground="Black" >
<DataGrid.Columns> <DataGrid.Columns>
<DataGridTextColumn Binding="{Binding objid}" Header="序号" Width="0.5*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}"/> <DataGridTextColumn Binding="{Binding objid}" Header="序号" Width="100" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}"/>
<DataGridTextColumn Binding="{Binding orderno}" Header="订单号" Width="1.2*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" /> <DataGridTextColumn Binding="{Binding orderno}" Header="订单号" Width="100" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" />
<DataGridTextColumn Binding="{Binding lineno}" Header="产线号" Width="0.5*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" /> <DataGridTextColumn Binding="{Binding lineno}" Header="产线号" Width="100" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" />
<DataGridTextColumn Binding="{Binding rfidepc}" Header="原始EPC" Width="1.1*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" /> <DataGridTextColumn Binding="{Binding rfidepc}" Header="原始EPC" Width="3*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" />
<DataGridTextColumn Binding="{Binding rfidascii}" Header="RFID编码" Width="3*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" /> <DataGridTextColumn Binding="{Binding rfidascii}" Header="RFID编码" Width="3*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" />
<DataGridTextColumn Binding="{Binding readtime,StringFormat=\{0:yyyy-MM-dd HH:mm:ss\}}" Header="读取时间" Width="1.5*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}"/> <!--<DataGridTextColumn Binding="{Binding readtime,StringFormat=\{0:yyyy-MM-dd HH:mm:ss\}}" Header="读取时间" Width="1.5*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}"/>-->
<DataGridTextColumn Binding="{Binding writetime,StringFormat=\{0:yyyy-MM-dd HH:mm:ss\}}" Header="写入时间" Width="1.5*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}"/> <DataGridTextColumn Binding="{Binding writetime,StringFormat=\{0:yyyy-MM-dd HH:mm:ss\}}" Header="写入时间" Width="180" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}"/>
<!--<DataGridTextColumn Binding="{Binding writestatus}" Header="写入状态" Width="1*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" />--> <!--<DataGridTextColumn Binding="{Binding writestatus}" Header="写入状态" Width="1*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" />-->
<DataGridTemplateColumn Header="写入状态" Width="1*"> <DataGridTemplateColumn Header="写入状态" Width="1*">

@ -158,7 +158,8 @@ Content="查询" Width="200" Visibility="Hidden" FontSize="20" Command="{Binding
<TextBlock Text="{Binding RFIDConnectState,Mode=TwoWay}" FontSize="15" Style="{StaticResource RFIDCounnectStyle}" Margin="0,0,8,0"/> <TextBlock Text="{Binding RFIDConnectState,Mode=TwoWay}" FontSize="15" Style="{StaticResource RFIDCounnectStyle}" Margin="0,0,8,0"/>
<TextBlock Text="上次写入状态:" FontSize="15" Foreground="White" Margin="0,0,8,0"/> <TextBlock Text="上次写入状态:" FontSize="15" Foreground="White" Margin="0,0,8,0"/>
<TextBlock Text="{Binding LastWriteState,Mode=TwoWay}" FontSize="15" Style="{StaticResource SuccessTextStyle}" Margin="0,0,8,0"/> <TextBlock Text="{Binding LastWriteState,Mode=TwoWay}" FontSize="15" Style="{StaticResource SuccessTextStyle}" Margin="0,0,8,0"/>
<!--<TextBlock Text="成功" FontSize="15" Style="{StaticResource SuccessTextStyle}" Margin="0,0,8,0"/>--> <TextBlock Text="状态:" FontSize="15" Foreground="White" Margin="0,0,8,0"/>
<TextBlock Text="{Binding WorkState,Mode=TwoWay}" FontSize="15" Foreground="White" Margin="0,0,8,0"/>
</StackPanel> </StackPanel>
@ -210,8 +211,8 @@ Content="查询" Width="200" Visibility="Hidden" FontSize="20" Command="{Binding
<Label Content="写入数量:" FontSize="15" Foreground="Black" VerticalAlignment="Center" Margin="10,0,0,0"/> <Label Content="写入数量:" FontSize="15" Foreground="Black" VerticalAlignment="Center" Margin="10,0,0,0"/>
<TextBox IsReadOnly="False" IsEnabled="True" Text="{Binding WriteCount,Mode=TwoWay}" Width="100" Height="30" FontSize="15" Foreground="Black" Margin="0,0,0,0" /> <TextBox IsReadOnly="False" IsEnabled="True" Text="{Binding WriteCount,Mode=TwoWay}" Width="100" Height="30" FontSize="15" Foreground="Black" Margin="0,0,0,0" />
<Button Content="生成编码" Width="100" Height="30" FontSize="15" Command="{Binding GenerateCodeCommand}" Background="#009999" Style="{StaticResource BUTTON_AGREE}" Margin="10,0,0,0"/> <Button Content="生成编码" Width="100" Height="30" FontSize="15" Command="{Binding GenerateCodeCommand}" Background="#009999" Style="{StaticResource BUTTON_AGREE}" Margin="10,0,0,0"/>
<Button Content="清除数据" Width="100" Height="30" FontSize="15" Command="{Binding ListClearCommand}" Background="#009999" Style="{StaticResource BUTTON_AGREE}" Margin="10,0,0,0"/> <Button Content="清除数据" Width="100" Height="30" FontSize="15" Command="{Binding ListClearCommand}" Background="OrangeRed" Style="{StaticResource BUTTON_AGREE}" Margin="10,0,0,0"/>
<Button Content="自动写入" Width="100" Height="30" FontSize="15" Command="{Binding AutoWriteCommand}" Background="#009999" Style="{StaticResource BUTTON_AGREE}" Margin="10,0,0,0"/> <!--<Button Content="自动写入" Width="100" Height="30" FontSize="15" Command="{Binding AutoWriteCommand}" Background="#009999" Style="{StaticResource BUTTON_AGREE}" Margin="10,0,0,0"/>-->
</WrapPanel> </WrapPanel>
</Grid> </Grid>
<!-- 数据表格绑定ViewModel中的历史记录 --> <!-- 数据表格绑定ViewModel中的历史记录 -->
@ -230,14 +231,14 @@ Content="查询" Width="200" Visibility="Hidden" FontSize="20" Command="{Binding
</Style> </Style>
</DataGrid.ColumnHeaderStyle> </DataGrid.ColumnHeaderStyle>
<DataGrid.Columns> <DataGrid.Columns>
<DataGridTextColumn Binding="{Binding serialno}" Header="编号" Width="1*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" /> <DataGridTextColumn Binding="{Binding serialno}" Header="编号" Width="100" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" />
<DataGridTextColumn Binding="{Binding rfidascii}" Header="RFID编码" Width="6*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" /> <DataGridTextColumn Binding="{Binding rfidascii}" Header="RFID编码" Width="6*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" />
<DataGridTextColumn Binding="{Binding writestatus}" Header="状态" Width="1*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" /> <DataGridTextColumn Binding="{Binding writestatus}" Header="状态" Width="70" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" />
<DataGridTemplateColumn Header="操作" Width="2*"> <DataGridTemplateColumn Header="操作" Width="100">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate>
<Button Content="写入" Height="40" Width="100" Command="{Binding DataContext.RFIDWriteCommand, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" <Button Content="写入" Width="70" Height="30" FontSize="15" Background="DarkSeaGreen" Command="{Binding DataContext.RFIDWriteCommand, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
CommandParameter="{Binding}"/> CommandParameter="{Binding}" Style="{StaticResource BUTTON_AGREE}"/>
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn> </DataGridTemplateColumn>
@ -262,8 +263,8 @@ Content="查询" Width="200" Visibility="Hidden" FontSize="20" Command="{Binding
<Grid Grid.Row="0" > <Grid Grid.Row="0" >
<WrapPanel Orientation="Horizontal" ItemHeight="50"> <WrapPanel Orientation="Horizontal" ItemHeight="50">
<TextBlock Text="RFID写入记录" FontSize="15" VerticalAlignment="Center" Margin="10,0,0,0"/> <TextBlock Text="RFID写入记录" FontSize="15" VerticalAlignment="Center" Margin="10,0,0,0"/>
<Button Content="清除列表" Width="100" Height="30" FontSize="15" Command="{Binding HistoryClearCommand}" Background="#009999" Style="{StaticResource BUTTON_AGREE}" Margin="10,0,0,0"/> <Button Content="清除列表" Width="100" Height="30" FontSize="15" Command="{Binding HistoryClearCommand}" Background="OrangeRed" Style="{StaticResource BUTTON_AGREE}" Margin="10,0,0,0"/>
<Button Content="查看历史" Width="100" Height="30" FontSize="15" Command="{Binding HistoryPageCommand}" Background="#009999" Style="{StaticResource BUTTON_AGREE}" Margin="10,0,0,0"/> <Button Content="查看历史" Width="100" Height="30" FontSize="15" Command="{Binding HistoryPageCommand}" Background="BlueViolet" Style="{StaticResource BUTTON_AGREE}" Margin="10,0,0,0"/>
</WrapPanel> </WrapPanel>
</Grid> </Grid>
<!-- 数据表格绑定ViewModel中的历史记录 --> <!-- 数据表格绑定ViewModel中的历史记录 -->
@ -282,10 +283,10 @@ Content="查询" Width="200" Visibility="Hidden" FontSize="20" Command="{Binding
</Style> </Style>
</DataGrid.ColumnHeaderStyle> </DataGrid.ColumnHeaderStyle>
<DataGrid.Columns> <DataGrid.Columns>
<DataGridTextColumn Binding="{Binding LineNumber}" Header="产线号" Width="1.5*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" /> <DataGridTextColumn Binding="{Binding lineno}" Header="产线号" Width="70" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" />
<DataGridTextColumn Binding="{Binding OriginalEPC}" Header="原始EPC" Width="3*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" /> <DataGridTextColumn Binding="{Binding rfidepc}" Header="原始EPC" Width="3*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" />
<DataGridTextColumn Binding="{Binding RFIDCode}" Header="RFID编码" Width="3*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" /> <DataGridTextColumn Binding="{Binding rfidascii}" Header="RFID编码" Width="3*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" />
<DataGridTextColumn Binding="{Binding WriteTime}" Header="写入时间" Width="1.5*" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" /> <DataGridTextColumn Binding="{Binding writetime,StringFormat=\{0:yyyy-MM-dd HH:mm:ss\}}" Header="写入时间" Width="180" ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" />
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>
</ScrollViewer> </ScrollViewer>

@ -133,6 +133,22 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
} }
} }
/// <summary>
/// 工作状态
/// </summary>
private string _workState;
public string WorkState
{
get => _workState;
set
{
if (_workState != value)
{
SetProperty(ref _workState, value);
}
}
}
/// <summary> /// <summary>
/// RFID连接状态 /// RFID连接状态
/// </summary> /// </summary>
@ -262,6 +278,8 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
Items.Add(rfid.FilterData); Items.Add(rfid.FilterData);
} }
WorkState = "空闲";
Log.Information("RFID输送带系统启动"); Log.Information("RFID输送带系统启动");
} }
@ -284,7 +302,7 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
PreparedWriteList.Add(new real_readdata() PreparedWriteList.Add(new real_readdata()
{ {
objid = Guid.NewGuid().ToString(), //objid = Guid.NewGuid().ToString(),
orderno = OrderNo, orderno = OrderNo,
lineno = LineNo, lineno = LineNo,
bindno = BindNo, bindno = BindNo,
@ -348,6 +366,8 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
/// </summary> /// </summary>
/// <param name="obj"></param> /// <param name="obj"></param>
private void RFIDWrite(object obj) private void RFIDWrite(object obj)
{
try
{ {
//获取设备编号 //获取设备编号
if (string.IsNullOrEmpty(QueryIsCheck.ToString().Trim())) if (string.IsNullOrEmpty(QueryIsCheck.ToString().Trim()))
@ -369,7 +389,13 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
List<DeviceInfoConfig> DeviceInfos = appConfig.deviceInfoConfig.Where(x => x.Collectid == appConfig.StationCode && x.Name == QueryIsCheck.ToString().Trim() && x.Deleteflag == 0).ToList(); 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 == DeviceInfos[0].Deviceid).Set_BeginIdentify().GetAwaiter().GetResult();
//rfidList.FirstOrDefault(x => x.deviceid == iCombineId)
WorkState = "盘点中";
}
catch (Exception ex)
{
Log.Error($"手动写入异常:{ex.Message}");
}
} }
/// <summary> /// <summary>
@ -390,6 +416,7 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
return; return;
} }
WorkState = "写入中";
//写入 三次重写 //写入 三次重写
bool writeflag = await rfidList.FirstOrDefault(x => x.deviceid == iCombineId).Set_Write(tagInfos[0].EPC, NowReadData.rfidascii); bool writeflag = await rfidList.FirstOrDefault(x => x.deviceid == iCombineId).Set_Write(tagInfos[0].EPC, NowReadData.rfidascii);
if (!writeflag) if (!writeflag)
@ -405,40 +432,36 @@ namespace SlnMesnac.WPF.ViewModel.IndexPage
Log.Error($"第三次写入失败"); Log.Error($"第三次写入失败");
MessageBox.Show("三次写入失败,请重新开始盘点"); MessageBox.Show("三次写入失败,请重新开始盘点");
LastWriteState = "失败"; LastWriteState = "失败";
//rfidList.FirstOrDefault(x => x.deviceid == iCombineId).Set_BeginIdentify().GetAwaiter().GetResult(); WorkState = "空闲";
return; return;
} }
} }
} }
WorkState = "空闲";
NowReadData.rfidepc = tagInfos[0].EPCstring; NowReadData.rfidepc = tagInfos[0].EPCstring;
NowReadData.writetime = DateTime.Now; NowReadData.writetime = DateTime.Now;
NowReadData.writestatus = "已写入";
var a = dataService.Helper.Insert(NowReadData); NowReadData.objid = Guid.NewGuid().ToString();
//刷新界面 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"); int.TryParse(NowReadData.serialno, out int no);
//RefreshEventArgs(iCombineId, tagInfos);
App.Current.Dispatcher.Invoke(() => App.Current.Dispatcher.Invoke(() =>
{ {
TempRecordList.Add(NowReadData); TempRecordList.Add(NowReadData);
PreparedWriteList[no - 1].writestatus = "已写入";
}); });
await Task.Run(async () => NowReadData = null!;
{ LastWriteState = "成功";
await Task.Delay(1000);
await rfidList.FirstOrDefault(x => x.deviceid == iCombineId)!.Set_BeginIdentify();
});
} }
catch (Exception e) catch (Exception e)
{ {
Log.Error($"读结果准备写入时异常:{e.Message}"); Log.Error($"读结果准备写入时异常:{e.Message}");
} }
finally
{
}
} }
private void LoadDeviceInfo() private void LoadDeviceInfo()

Loading…
Cancel
Save