|
|
|
@ -20,6 +20,7 @@ using System.Windows;
|
|
|
|
|
using System.Windows.Controls;
|
|
|
|
|
using System.Windows.Input;
|
|
|
|
|
using System.Windows.Markup;
|
|
|
|
|
using System.Windows.Shapes;
|
|
|
|
|
using System.Xml;
|
|
|
|
|
using GalaSoft.MvvmLight.Command;
|
|
|
|
|
using Google.Protobuf.WellKnownTypes;
|
|
|
|
@ -275,7 +276,7 @@ namespace SocketExample
|
|
|
|
|
Array.Copy(data, 0, newData, 0, 5); // 复制前半部分 // 插入新值
|
|
|
|
|
Array.Copy(data, 5, newData, 5, 4);
|
|
|
|
|
Array.Copy(data, 5, newData, 6, data.Length - 5);
|
|
|
|
|
Timeinfo = $"{currentTime} {time.Substring(0, 10)}";//获取时间
|
|
|
|
|
Timeinfo = $"{time}";//获取时间
|
|
|
|
|
string NewDataString = BitConverter.ToString(newData).Replace("-", " ");
|
|
|
|
|
|
|
|
|
|
int startTemp = 33;
|
|
|
|
@ -288,12 +289,13 @@ namespace SocketExample
|
|
|
|
|
{
|
|
|
|
|
int TempLength = taglist[j].EPCstring.Length * 3 - 1;
|
|
|
|
|
EPCinfo = NewDataString.Substring(startTemp, TempLength);
|
|
|
|
|
items.Add(new TagItem(taglist[j].EPCstring, EPCinfo, taglist[j].RSSI.ToString(), taglist[j].Count.ToString(), Timeinfo));
|
|
|
|
|
items.Add(new TagItem(hexString,taglist[j].EPCstring, EPCinfo, taglist[j].RSSI.ToString(), taglist[j].Count.ToString(), Timeinfo));
|
|
|
|
|
startTemp += 16 + TempLength;
|
|
|
|
|
string year = DateTime.Now.ToString("yyyy-MM-dd");
|
|
|
|
|
EnsureFolderExists($"日志文件夹/{year}/{Text}");
|
|
|
|
|
path = $"日志文件夹/{year}/{Text}/" + path + Text + ".txt";
|
|
|
|
|
writeToTxt(path, $"EPC:{taglist[j].EPCstring}\nHEX:{EPCinfo}\nRSSI:{taglist[j].RSSI.ToString()} Count:{taglist[j].Count.ToString()} Time:{Timeinfo}\n____________________________");
|
|
|
|
|
path = $"日志文件夹/{year}/{Text}/" + path + Text +"("+ IPtext+")"+ ".txt";
|
|
|
|
|
EnsureTxtExists(path,Text, IPtext, Porttext);
|
|
|
|
|
writeToTxt(path, $"接收消息:{hexString}\nEPC:{taglist[j].EPCstring}\nHEX:{EPCinfo}\nRSSI:{taglist[j].RSSI.ToString()} Count:{taglist[j].Count.ToString()} Time:{Timeinfo}\n____________________________");
|
|
|
|
|
path = "";
|
|
|
|
|
|
|
|
|
|
//LogService.Instance.Debug("");
|
|
|
|
@ -311,7 +313,7 @@ namespace SocketExample
|
|
|
|
|
case "02":
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
Timeinfo = $"{currentTime} {time.Substring(0, 10)}";//获取时间
|
|
|
|
|
Timeinfo = $"{time}";//获取时间
|
|
|
|
|
|
|
|
|
|
int startTemp = 33;
|
|
|
|
|
|
|
|
|
@ -323,12 +325,13 @@ namespace SocketExample
|
|
|
|
|
{
|
|
|
|
|
int TempLength = taglist[j].EPCstring.Length * 3 -1;
|
|
|
|
|
EPCinfo = hexString.Substring(startTemp, TempLength);
|
|
|
|
|
items.Add(new TagItem(taglist[j].EPCstring, EPCinfo, taglist[j].RSSI.ToString(), taglist[j].Count.ToString(), Timeinfo));
|
|
|
|
|
items.Add(new TagItem(hexString,taglist[j].EPCstring, EPCinfo, taglist[j].RSSI.ToString(), taglist[j].Count.ToString(), Timeinfo));
|
|
|
|
|
startTemp += 16 + TempLength;
|
|
|
|
|
string year = DateTime.Now.ToString("yyyy-MM-dd");
|
|
|
|
|
EnsureFolderExists($"日志文件夹/{year}/{Text}");
|
|
|
|
|
path = $"日志文件夹/{year}/{Text}/" + path + Text + ".txt";
|
|
|
|
|
writeToTxt(path, $"EPC:{taglist[j].EPCstring}\nHEX:{EPCinfo}\nRSSI:{taglist[j].RSSI.ToString()} Count:{taglist[j].Count.ToString()} Time:{Timeinfo}\n____________________________");
|
|
|
|
|
path = $"日志文件夹/{year}/{Text}/" + path + Text + "(" + IPtext + ")" + ".txt";
|
|
|
|
|
EnsureTxtExists(path, Text, IPtext, Porttext);
|
|
|
|
|
writeToTxt(path, $"接收消息:{hexString}\nEPC:{taglist[j].EPCstring}\nHEX:{EPCinfo}\nRSSI:{taglist[j].RSSI.ToString()} Count:{taglist[j].Count.ToString()} Time:{Timeinfo}\n____________________________");
|
|
|
|
|
path = "";
|
|
|
|
|
|
|
|
|
|
//LogService.Instance.Debug("");
|
|
|
|
@ -473,16 +476,23 @@ namespace SocketExample
|
|
|
|
|
{
|
|
|
|
|
switch (commandState)
|
|
|
|
|
{
|
|
|
|
|
case "01":
|
|
|
|
|
case "02":
|
|
|
|
|
Infotext += "未读取到\n";
|
|
|
|
|
RSSIinfo = "##";//未读取到数值时清空数据为初始值
|
|
|
|
|
RSSIinfo = "No Read";//未读取到数值时清空数据为初始值
|
|
|
|
|
Countinfo = "00";
|
|
|
|
|
EPCASC = "###";
|
|
|
|
|
EPCinfo = "###";
|
|
|
|
|
Timeinfo = $" {currentTime}\n{time.Substring(0, 10)}";//获取时间
|
|
|
|
|
EPCASC = "No Read";
|
|
|
|
|
EPCinfo = "No Read";
|
|
|
|
|
Timeinfo = $" {time}";//获取时间
|
|
|
|
|
ObservableCollection<TagItem> items = new ObservableCollection<TagItem>();
|
|
|
|
|
items.Add(new TagItem(EPCASC, EPCinfo, RSSIinfo, Countinfo, Timeinfo));
|
|
|
|
|
items.Add(new TagItem(hexString,EPCASC, EPCinfo, RSSIinfo, Countinfo, Timeinfo));
|
|
|
|
|
TagItems = items;
|
|
|
|
|
string year = DateTime.Now.ToString("yyyy-MM-dd");
|
|
|
|
|
EnsureFolderExists($"日志文件夹/{year}/{Text}");
|
|
|
|
|
path = $"日志文件夹/{year}/{Text}/" + path + Text + "(" + IPtext + ")" + ".txt";
|
|
|
|
|
EnsureTxtExists(path, Text, IPtext, Porttext);
|
|
|
|
|
writeToTxt(path, $"接收消息:{hexString}\nEPC:{EPCASC}\nHEX:{EPCinfo}\nRSSI:{RSSIinfo} Count:{Countinfo} Time:{Timeinfo}\n____________________________");
|
|
|
|
|
path = "";
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -745,7 +755,7 @@ namespace SocketExample
|
|
|
|
|
{
|
|
|
|
|
case "单次读取":
|
|
|
|
|
ActionType = "单次读取";
|
|
|
|
|
data = strToToHexByte("AA 55 02 01 00 64 67 0D");//单次
|
|
|
|
|
data = strToToHexByte(CheckForOnce());//单次
|
|
|
|
|
break;
|
|
|
|
|
/*
|
|
|
|
|
case "连续读取":
|
|
|
|
@ -909,11 +919,24 @@ namespace SocketExample
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
string CheckForOnce()
|
|
|
|
|
{
|
|
|
|
|
string actionstring = "AA 55 02 01 ";
|
|
|
|
|
if(TimeOut!=""&&TimeOut!=null)
|
|
|
|
|
actionstring += Convert.ToInt32(TimeOut).ToString("X").PadLeft(4, '0').Insert(2, " ") + " ";
|
|
|
|
|
else
|
|
|
|
|
actionstring +="00 00 ";
|
|
|
|
|
actionstring += Convert.ToString(GetXor(strToToHexByte(actionstring), 2), 16).PadLeft(2,'0').ToUpper() + " 0D";
|
|
|
|
|
return actionstring;
|
|
|
|
|
}
|
|
|
|
|
string CheckDuringTime()
|
|
|
|
|
{
|
|
|
|
|
string actionstring = "AA 55 02 02 ";
|
|
|
|
|
actionstring += Convert.ToInt32(TimeOut).ToString("X").PadLeft(4, '0').Insert(2, " ")+ " ";
|
|
|
|
|
actionstring += Convert.ToString(GetXor(strToToHexByte(actionstring), 2), 16) + " 0D";
|
|
|
|
|
if (TimeOut != "" && TimeOut != null)
|
|
|
|
|
actionstring += Convert.ToInt32(TimeOut).ToString("X").PadLeft(4, '0').Insert(2, " ") + " ";
|
|
|
|
|
else
|
|
|
|
|
actionstring += "00 00 ";
|
|
|
|
|
actionstring += Convert.ToString(GetXor(strToToHexByte(actionstring), 2), 16).PadLeft(2, '0') + " 0D";
|
|
|
|
|
return actionstring;
|
|
|
|
|
}
|
|
|
|
|
void SaveCommand()
|
|
|
|
@ -940,6 +963,9 @@ namespace SocketExample
|
|
|
|
|
|
|
|
|
|
public class TagItem : INotifyPropertyChanged
|
|
|
|
|
{
|
|
|
|
|
private string _originmessage;//原始数据
|
|
|
|
|
public string OriginMessage { get => _originmessage;set { _originmessage = value;OnPropertyChanged(); } }
|
|
|
|
|
|
|
|
|
|
private string _rssiinfo;//RSSI强度
|
|
|
|
|
public string RSSIinfo { get => _rssiinfo; set { _rssiinfo = value; OnPropertyChanged(); } }
|
|
|
|
|
private string _countinfo;//count数值
|
|
|
|
@ -951,8 +977,9 @@ namespace SocketExample
|
|
|
|
|
public string EPCinfo { get => _epcinfo; set { _epcinfo = value; OnPropertyChanged(); } }
|
|
|
|
|
public string EPCASC { get => _epcasc; set { _epcasc = value; OnPropertyChanged(); } }
|
|
|
|
|
|
|
|
|
|
public TagItem(string infoEPC,string ascEPC,string RSSI,string count,string time)
|
|
|
|
|
public TagItem(string originMessage,string infoEPC,string ascEPC,string RSSI,string count,string time)
|
|
|
|
|
{
|
|
|
|
|
OriginMessage = originMessage;
|
|
|
|
|
EPCinfo = infoEPC;
|
|
|
|
|
EPCASC = ascEPC;
|
|
|
|
|
RSSIinfo = RSSI;
|
|
|
|
@ -1215,5 +1242,27 @@ namespace SocketExample
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static void EnsureTxtExists(string txtPath,string MachineName,string IPinfo,string Portinfo)
|
|
|
|
|
{
|
|
|
|
|
// 检查指定的txt路径对应的txt是否已经存在
|
|
|
|
|
if (!File.Exists(txtPath))
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
StreamWriter streamWriter = new StreamWriter(txtPath, true);
|
|
|
|
|
streamWriter.WriteLineAsync($"设备名称:{MachineName}\nIP地址:{IPinfo}\n端口号:{Portinfo}\n____________________________");
|
|
|
|
|
streamWriter.Close();
|
|
|
|
|
}
|
|
|
|
|
catch (IOException ex)
|
|
|
|
|
{
|
|
|
|
|
// 如果在创建文件夹过程中出现IOException异常(比如权限不足、磁盘已满等原因导致无法创建文件夹)
|
|
|
|
|
// 这里通过消息框向用户展示创建文件夹失败的异常信息,方便用户知晓问题所在
|
|
|
|
|
MessageBox.Show($"创建txt {txtPath} 失败,异常信息: {ex.Message}");
|
|
|
|
|
// 重新抛出异常,让调用这个方法的上层代码知道创建文件夹出现了问题,以便进行进一步的处理,比如终止程序或者尝试其他恢复操作
|
|
|
|
|
throw;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|