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.Message += Bms_Message; } private void Bms_Message(object sender, 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 == arRS232.MessageType.Error) addmsg(e.Message); else addmsg($"{e.MsgType}:{sb}"); } 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); } 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(); } } }