Files
ENIG/Cs_HMI/TestProject/Test_BMS/Form1.cs
backuppc 98d638cd9a ..
2025-12-05 17:31:56 +09:00

121 lines
3.4 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics.Eventing.Reader;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Test_BMS
{
public partial class Form1 : Form
{
arDev.BMS bms;
public Form1()
{
InitializeComponent();
bms = new arDev.BMS();
bms.BMSDataReceive += Bms_BMSDataReceive;
bms.BMSCellDataReceive += Bms_BMSCellDataReceive;
bms.Message += Bms_Message;
this.Text = $"{Application.ProductName} ver{Application.ProductVersion}";
}
private void Bms_BMSCellDataReceive(object sender, arDev.BMSCelvoltageEventArgs e)
{
var valuestr = string.Join(" ", e.voltage.Select(t => t.ToString()));
addmsg($"voltage:{valuestr}");
}
private void Bms_BMSDataReceive(object sender, EventArgs e)
{
//최종 데이터가 수신되는 경우
string msg = $"{bms.Current_Volt}v,{bms.Current_Level}%,{bms.Current_Amp}/{bms.Current_MaxAmp}";
addmsg("Recv:" + msg);
}
private void Bms_Message(object sender, arDev.arRS232.MessageEventArgs e)
{
var sb = new System.Text.StringBuilder();
if (e.Data != null)
{
foreach (var b in e.Data)
sb.Append(" " + b.ToString("X2"));
}
else sb.Append(e.Message);
if (e.MsgType == arDev.arRS232.MessageType.Error)
addmsg(e.Message);
else if(e.MsgType == arDev.arRS232.MessageType.Send)
{
addmsg($"Tx:{sb}");
}
else if(e.MsgType == arDev.arRS232.MessageType.Recv)
{
addmsg($"Rx:{sb}");
}
else
addmsg($"{e.MsgType}:{sb}");
}
void addmsg(string m)
{
if (logTextBox1.InvokeRequired)
{
logTextBox1.BeginInvoke(new Action(() => {
logTextBox1.AddMsg(m);
}));
}
else
{
logTextBox1.AddMsg(m);
}
}
private void Form1_Load(object sender, EventArgs e)
{
this.comboBox1.Items.Clear();
foreach (var port in System.IO.Ports.SerialPort.GetPortNames())
this.comboBox1.Items.Add(port);
}
private void button1_Click(object sender, EventArgs e)
{
bms.BaudRate = int.Parse(this.comboBox2.Text);
bms.PortName = comboBox1.Text;
bms.Open();
addmsg($"open:{bms.IsOpen}");
}
private void button2_Click(object sender, EventArgs e)
{
bms.Close();
}
private void button3_Click(object sender, EventArgs e)
{
bms.SendQuery_ReadStatue();
}
private void label1_Click(object sender, EventArgs e)
{
comboBox1.Text = "COM41";
}
private void button4_Click(object sender, EventArgs e)
{
bms.SendQuery_ReadCellvoltage();
}
private void button5_Click(object sender, EventArgs e)
{
bms.SendQuery();
}
}
}