|
|
@ -69,6 +69,27 @@ namespace SocketExample
|
|
|
|
public string ReadPowerState { get => _readpowerstate; set { _readpowerstate = value; OnPropertyChanged(); } }
|
|
|
|
public string ReadPowerState { get => _readpowerstate; set { _readpowerstate = value; OnPropertyChanged(); } }
|
|
|
|
private string _writepowerstate;
|
|
|
|
private string _writepowerstate;
|
|
|
|
public string WritePowerState { get => _writepowerstate; set { _writepowerstate = value; OnPropertyChanged(); } }
|
|
|
|
public string WritePowerState { get => _writepowerstate; set { _writepowerstate = value; OnPropertyChanged(); } }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private string _port1readtext;
|
|
|
|
|
|
|
|
private string _port2readtext;
|
|
|
|
|
|
|
|
private string _port3readtext;
|
|
|
|
|
|
|
|
private string _port4readtext;//设置读功率1-4
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private string _port1writetext;
|
|
|
|
|
|
|
|
private string _port2writetext;
|
|
|
|
|
|
|
|
private string _port3writetext;
|
|
|
|
|
|
|
|
private string _port4writetext;//设置读功率1-4
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public string Port1ReadText { get => _port1readtext; set { _port1readtext = value; OnPropertyChanged(); } }
|
|
|
|
|
|
|
|
public string Port2ReadText { get => _port2readtext; set { _port2readtext = value; OnPropertyChanged(); } }
|
|
|
|
|
|
|
|
public string Port3ReadText { get => _port3readtext; set { _port3readtext = value; OnPropertyChanged(); } }
|
|
|
|
|
|
|
|
public string Port4ReadText { get => _port4readtext; set { _port4readtext = value; OnPropertyChanged(); } }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public string Port1WriteText { get => _port1writetext; set { _port1writetext = value; OnPropertyChanged(); } }
|
|
|
|
|
|
|
|
public string Port2WriteText { get => _port2writetext; set { _port2writetext = value; OnPropertyChanged(); } }
|
|
|
|
|
|
|
|
public string Port3WriteText { get => _port3writetext; set { _port3writetext = value; OnPropertyChanged(); } }
|
|
|
|
|
|
|
|
public string Port4WriteText { get => _port4writetext; set { _port4writetext = value; OnPropertyChanged(); } }
|
|
|
|
|
|
|
|
|
|
|
|
private string _gpo1;
|
|
|
|
private string _gpo1;
|
|
|
|
private string _gpo2;
|
|
|
|
private string _gpo2;
|
|
|
|
private string _gpo3;
|
|
|
|
private string _gpo3;
|
|
|
@ -109,6 +130,10 @@ namespace SocketExample
|
|
|
|
|
|
|
|
|
|
|
|
public LinkCommand clearcomn;//清空命令
|
|
|
|
public LinkCommand clearcomn;//清空命令
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public LinkCommand setpowercomn; //设置功率
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public LinkCommand getpowercomn;//获取功率
|
|
|
|
|
|
|
|
|
|
|
|
public PanelItem(int index)
|
|
|
|
public PanelItem(int index)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Text = $"客户端{index + 1}";
|
|
|
|
Text = $"客户端{index + 1}";
|
|
|
@ -117,6 +142,8 @@ namespace SocketExample
|
|
|
|
sendcomn = new LinkCommand(Button_Click_Send);//绑定发送按钮的事件
|
|
|
|
sendcomn = new LinkCommand(Button_Click_Send);//绑定发送按钮的事件
|
|
|
|
disconnectcomn = new LinkCommand(Button_disconnect);//绑定断连按钮的事件
|
|
|
|
disconnectcomn = new LinkCommand(Button_disconnect);//绑定断连按钮的事件
|
|
|
|
clearcomn = new LinkCommand(Button_clear);//绑定清空按钮的事件
|
|
|
|
clearcomn = new LinkCommand(Button_clear);//绑定清空按钮的事件
|
|
|
|
|
|
|
|
setpowercomn = new LinkCommand(Button_SetPower);
|
|
|
|
|
|
|
|
getpowercomn = new LinkCommand(Button_GetPower);
|
|
|
|
try
|
|
|
|
try
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
@ -158,6 +185,10 @@ namespace SocketExample
|
|
|
|
public LinkCommand _disconnectcomn { get { return disconnectcomn; } }
|
|
|
|
public LinkCommand _disconnectcomn { get { return disconnectcomn; } }
|
|
|
|
|
|
|
|
|
|
|
|
public LinkCommand _clearcomn { get { return clearcomn; } }
|
|
|
|
public LinkCommand _clearcomn { get { return clearcomn; } }
|
|
|
|
|
|
|
|
public LinkCommand _setpowercomn { get { return setpowercomn; } }
|
|
|
|
|
|
|
|
public LinkCommand _getpowercomn { get { return getpowercomn; } }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private Task onSend(ITcpClient client, ReceivedDataEventArgs e)
|
|
|
|
private Task onSend(ITcpClient client, ReceivedDataEventArgs e)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
@ -290,8 +321,8 @@ namespace SocketExample
|
|
|
|
string tempWritestate = "";
|
|
|
|
string tempWritestate = "";
|
|
|
|
for (int n = 0;n < (Convert.ToInt32(dataLength,16)/5);n++)
|
|
|
|
for (int n = 0;n < (Convert.ToInt32(dataLength,16)/5);n++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
tempReadstate += $"A{n+1} : {(Convert.ToInt32(readStateString.Substring(12+10*n,4),16)/100).ToString()} ";
|
|
|
|
tempReadstate += $"端口{n+1}:{(Convert.ToInt32(readStateString.Substring(12+10*n,4),16)/100).ToString()} ";
|
|
|
|
tempWritestate += $"A{n + 1} : {(Convert.ToInt32(readStateString.Substring(16 + 10 * n, 4), 16) / 100).ToString()} ";
|
|
|
|
tempWritestate += $"端口{n + 1}:{(Convert.ToInt32(readStateString.Substring(16 + 10 * n, 4), 16) / 100).ToString()} ";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
ReadPowerState = tempReadstate;
|
|
|
|
ReadPowerState = tempReadstate;
|
|
|
|
WritePowerState = tempWritestate;
|
|
|
|
WritePowerState = tempWritestate;
|
|
|
@ -465,6 +496,51 @@ namespace SocketExample
|
|
|
|
client.Send(data);
|
|
|
|
client.Send(data);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Button_SetPower()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if(_port1readtext == null || _port1writetext == null|| _port2readtext == null || _port2writetext == null || _port3readtext == null || _port3writetext == null || _port4readtext == null || _port4writetext == null)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
MessageBox.Show("数值不可为空!");
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
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, " ")} ";
|
|
|
|
|
|
|
|
}//功率设置时为两位数,乘100后再转换为16进制字符串,再填满左侧保证4位数,最后两位两位隔开
|
|
|
|
|
|
|
|
setPowerString += "52 0D";//命令结尾
|
|
|
|
|
|
|
|
byte[] data = strToToHexByte(setPowerString);
|
|
|
|
|
|
|
|
client.Send(data);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
byte[] confirmdata1 = strToToHexByte("AA 55 05 5F ");//保存命令
|
|
|
|
|
|
|
|
byte[] confirmdata2 = System.Text.Encoding.UTF8.GetBytes("\"SAVE\" ");
|
|
|
|
|
|
|
|
byte[] confirmdata3 = strToToHexByte("01 5A 0D");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
byte[] confirmdata = new byte[confirmdata1.Length+ confirmdata2.Length+ confirmdata3.Length];
|
|
|
|
|
|
|
|
confirmdata1.CopyTo(confirmdata,0);
|
|
|
|
|
|
|
|
confirmdata2.CopyTo(confirmdata,confirmdata1.Length);
|
|
|
|
|
|
|
|
confirmdata3.CopyTo(confirmdata,confirmdata1.Length+ confirmdata2.Length);//保存命令拼接
|
|
|
|
|
|
|
|
client.Send(confirmdata);
|
|
|
|
|
|
|
|
data = strToToHexByte("AA 55 00 72 72 0D");//获取功率
|
|
|
|
|
|
|
|
client.Send(data);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch(Exception e)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
Infotext += $"处理请求时出错: {e.Message}\n";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Button_GetPower()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
byte[] data = strToToHexByte("AA 55 00 72 72 0D");//获取功率
|
|
|
|
|
|
|
|
client.Send(data);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void Button_Click_Send()//发送按钮的事件
|
|
|
|
void Button_Click_Send()//发送按钮的事件
|
|
|
|
{
|
|
|
|
{
|
|
|
|
try
|
|
|
|
try
|
|
|
|