You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

187 lines
4.4 KiB

using Autofac;
using DotNetty.Handlers.Logging;
using HybirdFrameworkCore.Autofac;
using Newtonsoft.Json;
using Service.Charger.Client;
namespace WinFormStarter;
public partial class Form2 : Form
{
private ChargerClient? _chargerClient;
public Form2()
{
InitializeComponent();
Init();
}
private void Init()
{
this.txtIp.Text = @"127.0.0.1";
this.txtPort.Text = @"9998";
this.txtDestAddr.Text = @"03,01,01,02";
this.grpCmd.Enabled = false;
this.grpData.Enabled = false;
this.rTxtSend.Enabled = false;
this.rTxtReceive.Enabled = false;
}
#region ui invoke
private void EnableUi(Control control, bool enabled)
{
if (control.InvokeRequired)
{
void Enable()
{
control.Enabled = enabled;
}
control.Invoke((MethodInvoker)Enable);
}
else
{
control.Enabled = enabled;
}
}
private void AppendText(RichTextBox rtxt, string t)
{
if (rtxt.InvokeRequired)
{
void Mi()
{
rtxt.AppendText(t);
}
rtxt.Invoke((MethodInvoker)Mi);
}
else
{
rtxt.AppendText(t);
}
}
private void SetText(Control textBox, string t)
{
if (textBox.InvokeRequired)
{
void Mi()
{
textBox.Text = t;
}
textBox.Invoke((MethodInvoker)Mi);
}
else
{
textBox.Text = t;
}
}
#endregion
private void DisplayData()
{
this.SetText(this.rTxtData, JsonConvert.SerializeObject(_chargerClient, Formatting.Indented));
}
private void btnChangeInOrOut_Click(object sender, EventArgs e)
{
}
private void btnConn_Click(object sender, EventArgs e)
{
string ip = txtIp.Text;
var port = int.Parse(txtPort.Text);
string destAddr = txtDestAddr.Text;
Task.Run(() =>
{
if (_chargerClient is not { Connected: true })
{
_chargerClient = AppInfo.Container.Resolve<ChargerClient>();
_chargerClient.AutoReconnect = false;
_chargerClient.LogLevel = LogLevel.TRACE;
_chargerClient.InitBootstrap(ip, port);
_chargerClient.BaseConnect();
if (_chargerClient.Connected)
{
_chargerClient.SessionAttr("1", destAddr);
SetText(lblConnStatus, @"连接成功");
SetText(btnConn, @"断开连接");
EnableUi(this.grpCmd, true);
EnableUi(this.grpData, true);
EnableUi(this.rTxtSend, true);
EnableUi(this.rTxtReceive, true);
ClientMgr.AddBySn("1", _chargerClient);
}
}
else
{
_chargerClient.Close();
_chargerClient = null;
SetText(lblConnStatus, @"未连接");
SetText(btnConn, @"连接");
EnableUi(this.grpCmd, false);
EnableUi(this.grpData, false);
EnableUi(this.rTxtSend, false);
EnableUi(this.rTxtReceive, false);
}
});
}
private void btnAuth_Click(object sender, EventArgs e)
{
_chargerClient?.SendAuth();
AppendText(this.rTxtSend, _chargerClient.CurrentCmd);
DisplayData();
}
private void btnSendBinStatus_Click(object sender, EventArgs e)
{
}
private void btnSendAuxiliaryPower_Click(object sender, EventArgs e)
{
}
private void btnStartCharge_Click(object sender, EventArgs e)
{
}
private void btnStopCharge_Click(object sender, EventArgs e)
{
}
private void btnChangePower_Click(object sender, EventArgs e)
{
}
private void btnSetChargeRate_Click(object sender, EventArgs e)
{
}
private void btnOfflineStopCharge_Click(object sender, EventArgs e)
{
}
private void btnSendOutEnableCharge_Click(object sender, EventArgs e)
{
}
private void btnSetPrice_Click(object sender, EventArgs e)
{
}
private void btnReadBatteryInfo_Click(object sender, EventArgs e)
{
_chargerClient.SendQueryBattery();
DisplayData();
}
}