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.

156 lines
2.9 KiB

3 years ago
using MasterClient.Client;
3 years ago
using System;
3 years ago
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
3 years ago
namespace MasterClient
3 years ago
{
public partial class MainForm : Form
{
3 years ago
private bool isFirstLog = true;
private ICommClient client;
3 years ago
public MainForm()
{
InitializeComponent();
3 years ago
}
private void ChangeStatus(bool status)
{
3 years ago
btnConnect.Enabled = !status;
tbIP.Enabled = !status;
nudPort.Enabled = !status;
nudIdentifier.Enabled = !status;
btnDisconnect.Enabled = status;
tbStatus.Text = status ? "Connected" : "Disconnected";
tbStatus.BackColor = status ? Color.Lime : Color.Silver;
gbMode.Enabled = !status;
3 years ago
3 years ago
Log(status ? "--- Connected ---" : "--- Disconnected ---");
3 years ago
}
private void Log(string text)
{
rtbLog.AppendText((isFirstLog ? "" : Environment.NewLine) + text);
isFirstLog = false;
ScrollToEnd();
}
private void ScrollToEnd()
{
if (!chkAutoScroll.Checked)
return;
rtbLog.SelectionStart = rtbLog.Text.Length;
rtbLog.ScrollToCaret();
}
private void ClearLog()
{
rtbLog.Clear();
isFirstLog = true;
ScrollToEnd();
}
private void btnConnect_Click(object sender, EventArgs e)
{
3 years ago
try
{
InitServer();
client.SetServer(tbIP.Text, (int)nudPort.Value);
client.Connect();
3 years ago
3 years ago
ChangeStatus(true);
}
catch (Exception ex)
{
Log($"[ERROR] {ex.Message}");
}
}
private void InitServer()
{
if (client != null && client.GetStatus())
{
Log("--- Disconnect previous connection ---");
btnDisconnect_Click(null, null);
}
if (chkModbus.Checked)
{
client = new Client.ModbusMaster((byte)nudIdentifier.Value);
Log("--- Run as Modbus mode ---");
}
else if (chkOPCUA.Checked)
{
Log("--- Run as OPCUA mode ---");
}
else if (chkSdk.Checked)
{
Log("--- Run as SDK mode ---");
}
3 years ago
}
private void btnDisconnect_Click(object sender, EventArgs e)
{
3 years ago
try
{
client.Disconnect();
3 years ago
3 years ago
ChangeStatus(false);
}
catch (Exception ex)
{
Log($"[ERROR] {ex.Message}");
}
3 years ago
}
private void btnRead_Click(object sender, EventArgs e)
{
3 years ago
try
{
if (!client.GetStatus())
throw new Exception("Disconneced");
3 years ago
3 years ago
string value = client.ReadValue(tbReadName.Text);
Log($"[READ] {tbReadName.Text}:{value}");
}
catch (Exception ex)
{
Log($"[ERROR] {ex.Message}");
}
3 years ago
}
private void btnWrite_Click(object sender, EventArgs e)
{
3 years ago
try
{
if (!client.GetStatus())
throw new Exception("Disconneced");
3 years ago
3 years ago
client.WriteValue(tbWriteName.Text, tbWriteValue.Text);
Log($"[WRITE] {tbWriteName.Text}:{tbWriteValue.Text}");
}
catch (Exception ex)
{
Log($"[ERROR] {ex.Message}");
}
3 years ago
}
private void btnClear_Click(object sender, EventArgs e)
{
ClearLog();
3 years ago
}
}
}