diff --git a/SocketExample/App.xaml b/SocketExample/App.xaml
index abe739a..e6910fc 100644
--- a/SocketExample/App.xaml
+++ b/SocketExample/App.xaml
@@ -27,9 +27,67 @@
-
+
+
+
+ #FF4285F4
+ #FF3367D6
+ #FF34A853
+ #FFEA4335
+ #FFEEEEEE
+ #FF757575
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SocketExample/RFIDmonitor.csproj b/SocketExample/RFIDmonitor.csproj
index 5de969c..45a0c96 100644
--- a/SocketExample/RFIDmonitor.csproj
+++ b/SocketExample/RFIDmonitor.csproj
@@ -259,6 +259,9 @@
+
+
+
diff --git a/SocketExample/TCPWindowV2.xaml b/SocketExample/TCPWindowV2.xaml
index ffdf918..3e43270 100644
--- a/SocketExample/TCPWindowV2.xaml
+++ b/SocketExample/TCPWindowV2.xaml
@@ -4,9 +4,12 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
+ xmlns:controls="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit"
+ xmlns:PresentationOptions="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"
xmlns:local="clr-namespace:SocketExample"
mc:Ignorable="d"
- Title="RFID读写器多终端监控软件v1.062" Height="450" Width="800">
+ Title="RFID读写器多终端监控软件v1.07" Height="450" Width="800"
+ Background="Transparent" AllowsTransparency="True" WindowStyle="None" WindowStartupLocation="CenterScreen">
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/SocketExample/TCPWindowV2.xaml.cs b/SocketExample/TCPWindowV2.xaml.cs
index 8aaaeef..4d332b2 100644
--- a/SocketExample/TCPWindowV2.xaml.cs
+++ b/SocketExample/TCPWindowV2.xaml.cs
@@ -75,7 +75,9 @@ namespace SocketExample
private string _linkbuttontext { get; set; }
private string _infotext;//信息框
- public string Infotext { get => _infotext; set
+ public string Infotext
+ {
+ get => _infotext; set
{
_infotext = value;
OnPropertyChanged(); // 通知 UI 更新
@@ -126,7 +128,7 @@ namespace SocketExample
public string Port3WriteText { get => _port3writetext; set { _port3writetext = value; OnPropertyChanged(); } }
public string Port4WriteText { get => _port4writetext; set { _port4writetext = value; OnPropertyChanged(); } }
public int[] PortComboBox { get => _portComboBox; set { _portComboBox = value; OnPropertyChanged(); } }
- public string[] GPOComboBox { get => _gpoComboBox;set { _gpoComboBox = value; OnPropertyChanged(); } }
+ public string[] GPOComboBox { get => _gpoComboBox; set { _gpoComboBox = value; OnPropertyChanged(); } }
public string[] SendTextComboBox { get => _sendtextComboBox; set { _sendtextComboBox = value; OnPropertyChanged(); } }
@@ -191,7 +193,7 @@ namespace SocketExample
readcomn = new LinkCommand(Button_Read);
stopreadingcomn = new LinkCommand(Button_StopReading);
sendcomn = new LinkCommand(Button_Click_Send);//绑定发送按钮的事件
- sendactioncomn = new LinkCommand (Button_SendActionComn);
+ sendactioncomn = new LinkCommand(Button_SendActionComn);
disconnectcomn = new LinkCommand(Button_disconnect);//绑定断连按钮的事件
clearcomn = new LinkCommand(Button_clear);//绑定清空按钮的事件
setpowercomn = new LinkCommand(Button_SetPower);
@@ -200,13 +202,13 @@ namespace SocketExample
GPOSelectionChangedCommand = new RelayCommand(GPOComboBox_SelectChanged);
SendTextChangedCommand = new RelayCommand(SendTextComboBox_SelectChanged);
TextChangedCommand = new RelayCommand(TextBlock_SelectChanged);
-
- //页面初始化
- int[] Powerdatasource = {5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33};
- string[] GPOdatasource = {"高","低"};
- string[] SendTextdatasource = { "单次读取","时间段盘点"};
- Borderwidth = ((int)SystemParameters.PrimaryScreenWidth-25)/4;
+ //页面初始化
+ int[] Powerdatasource = { 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33 };
+ string[] GPOdatasource = { "高", "低" };
+ string[] SendTextdatasource = { "单次读取", "时间段盘点" };
+
+ Borderwidth = ((int)SystemParameters.PrimaryScreenWidth - 60) / 4; //动态生成界面宽度
MessageText = string.Empty;
IPtext = "192.168.0.7";//默认IP
Porttext = "20108";//默认端口
@@ -256,12 +258,13 @@ namespace SocketExample
return EasyTask.CompletedTask;
}
-
+
private Task onRecieved(ITcpClient client, ReceivedDataEventArgs e) //接收事件
{
+ Text = Text.Replace(" ", "");
path = "";
string time = DateTime.Now.ToString();
- string currentTime = time.Substring(9, time.Length-9);
+ string currentTime = time.Substring(9, time.Length - 9);
var mes = e.ByteBlock.Span.ToString(Encoding.UTF8);
byte[] data = e.ByteBlock.Span.ToArray();
string hexString = BitConverter.ToString(data).Replace("-", " ");
@@ -271,8 +274,8 @@ namespace SocketExample
string dataLength = readStateString.Substring(4, 2);//获取字符串中内容长度
string commandState = readStateString.Substring(6, 2);//获取命令
- if(commandState != "81")
- Infotext += $"({currentTime})客户端接收到信息:\n{hexString}\n\n";
+ if (commandState != "81")
+ Infotext += $"({currentTime})客户端接收到信息:\n{hexString}\n\n";
int i = Convert.ToInt32(dataLength, 16);
if (i != 0)
@@ -299,12 +302,12 @@ namespace SocketExample
{
int TempLength = taglist[j].EPCstring.Length * 3 - 1;
EPCinfo = NewDataString.Substring(startTemp, TempLength);
- items.Add(new TagItem(hexString,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}/" + Text +"("+ IPtext+")"+ ".txt";
- EnsureTxtExists(path,Text, IPtext, Porttext);
+ path = $"日志文件夹/{year}/{Text}/" + 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 = "";
@@ -333,9 +336,9 @@ namespace SocketExample
ObservableCollection items = new ObservableCollection();
for (int j = 0; j < taglist.Count; j++)
{
- int TempLength = taglist[j].EPCstring.Length * 3 -1;
+ int TempLength = taglist[j].EPCstring.Length * 3 - 1;
EPCinfo = hexString.Substring(startTemp, TempLength);
- items.Add(new TagItem(hexString,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}");
@@ -343,14 +346,15 @@ namespace SocketExample
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("");
}
-
+
TagItems = items;
}
- catch (Exception ex) {
+ catch (Exception ex)
+ {
Infotext += ex;
}
@@ -378,8 +382,8 @@ namespace SocketExample
GPO4 = "低";
if (GPIBinInfo.Substring(j, 1) == "1")
- {
- if(GPI4 != "低")
+ {
+ if (GPI4 != "低")
{
GPI4 = "低";
GPI4string = "GPI4:" + GPIChangeLog(GPI4);
@@ -387,13 +391,13 @@ namespace SocketExample
}
}
else
- if(GPI4 != "高")
- {
- GPI4 = "高";
- GPI4string = "GPI4:" + GPIChangeLog(GPI4);
- GPIchange = true;
- }
-
+ if (GPI4 != "高")
+ {
+ GPI4 = "高";
+ GPI4string = "GPI4:" + GPIChangeLog(GPI4);
+ GPIchange = true;
+ }
+
break;
case 5:
if (GPOBinInfo.Substring(j, 1) == "1")
@@ -406,17 +410,17 @@ namespace SocketExample
if (GPI3 != "低")
{
GPI3 = "低";
- GPI3string = "GPI3:" + GPIChangeLog(GPI3) + " ";
+ GPI3string = "GPI3:" + GPIChangeLog(GPI3) + " ";
GPIchange = true;
}
}
else
if (GPI3 != "高")
- {
- GPI3 = "高";
- GPI3string = "GPI3:" + GPIChangeLog(GPI3) + " ";
- GPIchange = true;
- }
+ {
+ GPI3 = "高";
+ GPI3string = "GPI3:" + GPIChangeLog(GPI3) + " ";
+ GPIchange = true;
+ }
break;
case 6:
@@ -430,17 +434,17 @@ namespace SocketExample
if (GPI2 != "低")
{
GPI2 = "低";
- GPI2string = "GPI2:" + GPIChangeLog(GPI2) + " ";
+ GPI2string = "GPI2:" + GPIChangeLog(GPI2) + " ";
GPIchange = true;
}
}
else
if (GPI2 != "高")
- {
- GPI2 = "高";
- GPI2string = "GPI2:" + GPIChangeLog(GPI2) + " ";
- GPIchange = true;
- }
+ {
+ GPI2 = "高";
+ GPI2string = "GPI2:" + GPIChangeLog(GPI2) + " ";
+ GPIchange = true;
+ }
break;
case 7:
if (GPOBinInfo.Substring(j, 1) == "1")
@@ -453,24 +457,24 @@ namespace SocketExample
if (GPI1 != "低")
{
GPI1 = "低";
- GPI1string = "GPI1:" + GPIChangeLog(GPI1) + " ";
+ GPI1string = "GPI1:" + GPIChangeLog(GPI1) + " ";
GPIchange = true;
}
}
else
if (GPI1 != "高")
- {
- GPI1 = "高";
- GPI1string = "GPI1:" + GPIChangeLog(GPI1) + " ";
- GPIchange = true;
- }
+ {
+ GPI1 = "高";
+ GPI1string = "GPI1:" + GPIChangeLog(GPI1) + " ";
+ GPIchange = true;
+ }
break;
default:
break;
-
+
}
}
- if(GPIchange == true)
+ if (GPIchange == true)
{
EnsureFolderExists($"日志文件夹/{GPIyear}/{Text}");
string temppath = $"日志文件夹/{GPIyear}/{Text}/" + Text + "GPI" + "(" + IPtext + ")" + ".txt";
@@ -479,14 +483,14 @@ namespace SocketExample
writeToTxt(temppath, $"{GPI1string}{GPI2string}{GPI3string}{GPI4string}\n当前状态:GPI1:{GPI1} GPI2:{GPI2} GPI3:{GPI3} GPI4:{GPI4}\n当前时间:{currenttime}\n ______________________________");
GPIchange = false;
}
-
+
break;
case "72":
//获取功率信息
try
{
- for (int n = 0;n < (Convert.ToInt32(dataLength,16)/5);n++)
+ for (int n = 0; n < (Convert.ToInt32(dataLength, 16) / 5); n++)
{
switch (n)
{
@@ -561,7 +565,7 @@ namespace SocketExample
EPCinfo = "No Read";
Timeinfo = $" {time}";//获取时间
ObservableCollection items = new ObservableCollection();
- items.Add(new TagItem(hexString,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}");
@@ -572,7 +576,7 @@ namespace SocketExample
break;
}
}
-
+
return EasyTask.CompletedTask;
}
@@ -618,14 +622,14 @@ namespace SocketExample
Thread.Sleep(1000);
- GPIOthread = new Thread(new ThreadStart(delegate () { while (true) { byte[] data = strToToHexByte("AA 55 00 81 81 0D"); client.Send(data); Thread.Sleep(3000); } }));
+ GPIOthread = new Thread(new ThreadStart(delegate () { while (true) { byte[] data = strToToHexByte("AA 55 00 81 81 0D"); client.Send(data); Thread.Sleep(1000); } }));
GPIOthread.Start();//心跳获取GPIO状态
}
catch (Exception ex)
{
Infotext += $"连接时报错,错误内容:{ex}!\n";
}
-
+
return EasyTask.CompletedTask;
}
#endregion
@@ -634,7 +638,7 @@ namespace SocketExample
private string GPIChangeLog(string gpiInfo)
{
- if(gpiInfo == "低")
+ if (gpiInfo == "低")
{
return "高 => 低";
}
@@ -651,7 +655,7 @@ namespace SocketExample
client.Send(data);
}
- public byte GetXor(byte[] data,int m)
+ public byte GetXor(byte[] data, int m)
{
byte CheckCode = 0;
int len = data.Length;
@@ -672,7 +676,7 @@ namespace SocketExample
}
catch (Exception excp)
{
-
+
}
}
return Tempbytes;
@@ -689,9 +693,9 @@ namespace SocketExample
return returnBytes;
}
- private static void writeToTxt(string path,string content)
+ private static void writeToTxt(string path, string content)
{
- StreamWriter streamWriter = new StreamWriter(path,true);
+ StreamWriter streamWriter = new StreamWriter(path, true);
streamWriter.WriteLineAsync(content);
streamWriter.Close();
}
@@ -701,36 +705,36 @@ namespace SocketExample
#region 动态界面控件功能
async void Button_Link()//链接按钮的事件
{
- if(LinkButtonText == "连接")
- {
- try
+ if (LinkButtonText == "连接")
{
-
- ip = IPAddress.Parse(IPtext);
- port = int.Parse(Porttext);
- Infotext += $"{Text}";
- client = new TcpClient();
-
- //连接事件
- client.Connected += onConnected;
- //断连事件
- client.Closed = (client, e) => { try { GPIOthread.Abort(); Infotext += "已断开!\n"; StateColour = "Red"; LinkState = "未连接"; } catch (Exception ex) { Infotext += ex; } return EasyTask.CompletedTask; };
- //接收事件
- client.Received += onRecieved;
-
- //设置连接属性
- await client.SetupAsync(new TouchSocketConfig().SetRemoteIPHost($"{IPtext}:{Porttext}").ConfigureContainer(a =>
+ try
{
- a.AddConsoleLogger();//添加一个日志注入
- }));
-
- //开启连接
- await client.ConnectAsync();
- }
- catch (Exception ex)
- {
- Infotext += $"处理请求时出错: {ex.Message}\n";
- }
+
+ ip = IPAddress.Parse(IPtext);
+ port = int.Parse(Porttext);
+ Infotext += $"{Text}";
+ client = new TcpClient();
+
+ //连接事件
+ client.Connected += onConnected;
+ //断连事件
+ client.Closed = (client, e) => { try { GPIOthread.Abort(); Infotext += "已断开!\n"; StateColour = "Red"; LinkState = "未连接"; } catch (Exception ex) { Infotext += ex; } return EasyTask.CompletedTask; };
+ //接收事件
+ client.Received += onRecieved;
+
+ //设置连接属性
+ await client.SetupAsync(new TouchSocketConfig().SetRemoteIPHost($"{IPtext}:{Porttext}").ConfigureContainer(a =>
+ {
+ a.AddConsoleLogger();//添加一个日志注入
+ }));
+
+ //开启连接
+ await client.ConnectAsync();
+ }
+ catch (Exception ex)
+ {
+ Infotext += $"处理请求时出错: {ex.Message}\n";
+ }
LinkButtonText = "断开";
}
else
@@ -747,10 +751,11 @@ namespace SocketExample
byte[] data = strToToHexByte("AA 55 02 02 07 D0 D7 0D");//获取2000ms内标签信息
client.Send(data);
}
- catch (Exception ex) {
+ catch (Exception ex)
+ {
Infotext += $"发送读取命令时出错: {ex.Message}\n";
}
-
+
}
void Button_StopReading()
@@ -772,7 +777,7 @@ namespace SocketExample
try
{
- if(Port1ReadText == null || Port1WriteText == null|| Port2ReadText == null || Port2WriteText == null || Port3ReadText == null || Port3WriteText == null || Port4ReadText == null || Port4WriteText == null)
+ if (Port1ReadText == null || Port1WriteText == null || Port2ReadText == null || Port2WriteText == null || Port3ReadText == null || Port3WriteText == null || Port4ReadText == null || Port4WriteText == null)
{
MessageBox.Show("数值不可为空!");
return;
@@ -780,25 +785,26 @@ namespace SocketExample
string setPowerString = "AA 55 14 42 ";//设置命令开头
int[] powers = new int[8] {int.Parse(Port1ReadText),int.Parse(Port2ReadText), int.Parse(Port3ReadText), int.Parse(Port4ReadText),
int.Parse(Port1WriteText),int.Parse(Port2WriteText),int.Parse(Port3WriteText),int.Parse(Port4WriteText)};
- for (int i = 0; i < powers.Length/2; i++) {
- setPowerString += $"0{i+1} {(powers[i]*100).ToString("X").PadLeft(4,'0').Insert(2," ")} {(powers[i+4] * 100).ToString("X").PadLeft(4, '0').Insert(2, " ")} ";
+ for (int i = 0; i < powers.Length / 2; i++)
+ {
+ setPowerString += $"0{i + 1} {(powers[i] * 100).ToString("X").PadLeft(4, '0').Insert(2, " ")} {(powers[i + 4] * 100).ToString("X").PadLeft(4, '0').Insert(2, " ")} ";
}//功率设置时为两位数,乘100后再转换为16进制字符串,再填满左侧保证4位数,最后两位两位隔开
byte[] powerdata = strToToHexByte(setPowerString);
- byte xor = GetXor(powerdata,2);//计算校验位
- setPowerString += Convert.ToString(xor,16) + " 0D";//校验位需转成16进制字符串,命令结尾
+ byte xor = GetXor(powerdata, 2);//计算校验位
+ setPowerString += Convert.ToString(xor, 16) + " 0D";//校验位需转成16进制字符串,命令结尾
byte[] data = strToToHexByte(setPowerString);
client.Send(data);
Infotext += setPowerString;
data = strToToHexByte("AA 55 00 72 72 0D");//获取功率
client.Send(data);
}
- catch(Exception e)
+ catch (Exception e)
{
Infotext += $"处理请求时出错: {e.Message}\n";
}
}
-
+
void Button_GetPower()
{
try
@@ -810,7 +816,7 @@ namespace SocketExample
{
Infotext += ex.Message;
}
-
+
}
void Button_Click_Send()//发送按钮的事件
@@ -832,10 +838,10 @@ namespace SocketExample
}
catch (Exception ex)
{
- Infotext += $"处理请求时出错: {ex.Message}\n";
+ Infotext += $"处理请求时出错: {ex.Message}\n";
}
}
-
+
void Button_SendActionComn()
{
try
@@ -930,11 +936,11 @@ namespace SocketExample
}
sender.SelectedItem = null;
}
- catch(Exception ex)
+ catch (Exception ex)
{
Infotext += ex.Message;
}
-
+
}
void GPOComboBox_SelectChanged(ComboBox sender)
@@ -966,7 +972,7 @@ namespace SocketExample
}
if (sender.SelectedItem?.ToString() == "高")
Order += "01 ";
- else if(sender.SelectedItem?.ToString() == "低")
+ else if (sender.SelectedItem?.ToString() == "低")
Order += "00 ";
Order += "00 00 ";
Order += Convert.ToString(GetXor(strToToHexByte(Order), 2), 16) + " 0D";
@@ -1021,11 +1027,11 @@ namespace SocketExample
public void dispose()
{
try
- {
- if(client!=null)
- client.Close();
- if(GPIOthread!=null)
- GPIOthread.Abort();
+ {
+ if (client != null)
+ client.Close();
+ if (GPIOthread != null)
+ GPIOthread.Abort();
}
catch (Exception ex)
{
@@ -1036,11 +1042,11 @@ namespace SocketExample
string CheckForOnce()
{
string actionstring = "AA 55 02 01 ";
- if(TimeOut!=""&&TimeOut!=null)
+ 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";
+ actionstring += "00 00 ";
+ actionstring += Convert.ToString(GetXor(strToToHexByte(actionstring), 2), 16).PadLeft(2, '0').ToUpper() + " 0D";
return actionstring;
}
string CheckDuringTime()
@@ -1121,7 +1127,7 @@ namespace SocketExample
public class TagItem : INotifyPropertyChanged
{
private string _originmessage;//原始数据
- public string OriginMessage { get => _originmessage;set { _originmessage = value;OnPropertyChanged(); } }
+ public string OriginMessage { get => _originmessage; set { _originmessage = value; OnPropertyChanged(); } }
private string _rssiinfo;//RSSI强度
public string RSSIinfo { get => _rssiinfo; set { _rssiinfo = value; OnPropertyChanged(); } }
@@ -1134,7 +1140,7 @@ namespace SocketExample
public string EPCinfo { get => _epcinfo; set { _epcinfo = value; OnPropertyChanged(); } }
public string EPCASC { get => _epcasc; set { _epcasc = value; OnPropertyChanged(); } }
- public TagItem(string originMessage,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;
@@ -1152,23 +1158,34 @@ namespace SocketExample
}
}
+
+ #region 主界面参数
+ int currentcount = 0;//目前客户端的数量
+
+ List items = new List();//客户端组件列表
+
+ public static double? WindowLeft { get; set; }
+ public static double? WindowTop { get; set; }
+ public static double? WindowWidth { get; set; }
+ public static double? WindowHeight { get; set; }
+ public static WindowState? OriginWindowState { get; set; }
+ public static int? Buttonflag { get; set; }
public TCPWindowV2()
{
InitializeComponent();
EnsureFolderExists("日志文件夹");
this.Closing += TCPWindowV2_Closing;
+ SaveWindowSettings();
+ Buttonflag = 0;
}
-
+ #endregion
//结束所有线程,防止心跳线程冗余
private void TCPWindowV2_Closing(object sender, CancelEventArgs e)
{
System.Environment.Exit(0);
}
- int currentcount = 0;//目前客户端的数量
-
- List items = new List();//客户端组件列表
-
+ #region 主界面按钮事件
private void GenerateButton_Click(object sender, RoutedEventArgs e)//添加客户端框体
{
if (int.TryParse(CountTextBox.Text, out int count) && count > 0)
@@ -1189,13 +1206,50 @@ namespace SocketExample
}
}
+ private void Shutdown_Button_Click(object sender, RoutedEventArgs e)
+ {
+ Application.Current.Shutdown();
+ }
+
+ private void Maxmize_Button_Click(object sender, RoutedEventArgs e)
+ {
+ if (Buttonflag == 0)
+ {
+ this.WindowState = WindowState.Maximized;
+ Maxmize_Button.Content = "缩小";
+ Buttonflag = 1;
+ }
+ else
+ {
+ LoadWindowSettings();
+ Maxmize_Button.Content = "最大化";
+ Buttonflag = 0;
+ }
+ }
+
+ private void Minimize_Button_Click(object sender, RoutedEventArgs e)
+ {
+ this.WindowState = WindowState.Minimized;
+ }
+ private void ClearButton_Click(object sender, RoutedEventArgs e)//清空客户端
+ {
+ foreach (PanelItem item in items)
+ {
+ item.dispose();
+ }
+ items = new List();
+ PanelContainer.ItemsSource = null;
+ currentcount = 0;
+ }
+ #endregion
public class LinkCommand : ICommand //command方法实现
{
private Action _excute;
private Action _excutewithindex;
- public LinkCommand(Action action) {
+ public LinkCommand(Action action)
+ {
_excute = action;
}
@@ -1213,21 +1267,10 @@ namespace SocketExample
public void Execute(object parameter)
{
- _excute();
+ _excute();
}
}
- private void ClearButton_Click(object sender, RoutedEventArgs e)//清空客户端
- {
- foreach (PanelItem item in items)
- {
- item.dispose();
- }
- items = new List();
- PanelContainer.ItemsSource = null;
- currentcount = 0;
- }
-
private static List GetTagInfos(byte[] AutoDealReportData)
{
List tagInfoList = new List();
@@ -1403,7 +1446,7 @@ namespace SocketExample
}
}
- private static void EnsureTxtExists(string txtPath,string MachineName,string IPinfo,string Portinfo)
+ private static void EnsureTxtExists(string txtPath, string MachineName, string IPinfo, string Portinfo)
{
// 检查指定的txt路径对应的txt是否已经存在
if (!File.Exists(txtPath))
@@ -1425,5 +1468,39 @@ namespace SocketExample
}
}
+ private void Border_MouseDown(object sender, MouseButtonEventArgs e)
+ {
+ if (e.ChangedButton == MouseButton.Left)
+ {
+ this.DragMove();
+ }
+ }
+
+ private void LoadWindowSettings()
+ {
+ if (WindowLeft.HasValue && WindowTop.HasValue)
+ {
+ this.Left = WindowLeft.Value;
+ this.Top = WindowTop.Value;
+ }
+ if (WindowWidth.HasValue && WindowHeight.HasValue)
+ {
+ this.Width = WindowWidth.Value;
+ this.Height = WindowHeight.Value;
+ }
+ if (OriginWindowState.HasValue)
+ {
+ this.WindowState = OriginWindowState.Value;
+ }
+ }
+
+ private void SaveWindowSettings()
+ {
+ WindowLeft = this.Left;
+ WindowTop = this.Top;
+ WindowWidth = this.Width;
+ WindowHeight = this.Height;
+ OriginWindowState = this.WindowState;
+ }
}
}
diff --git a/SocketExample/海威图标-横.png b/SocketExample/海威图标-横.png
new file mode 100644
index 0000000..49e0878
Binary files /dev/null and b/SocketExample/海威图标-横.png differ
diff --git a/SocketExample/海威图标-竖.png b/SocketExample/海威图标-竖.png
new file mode 100644
index 0000000..3aaee8a
Binary files /dev/null and b/SocketExample/海威图标-竖.png differ