1176 lines
40 KiB
C#
1176 lines
40 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.IO.Ports;
|
|
using System.Collections.Generic;
|
|
using System.Windows.Forms;
|
|
|
|
public partial class frmBluetooth : Form
|
|
{
|
|
//private bool JDY31 = false;
|
|
|
|
|
|
public SerialPort serial; //Create a new serial slot
|
|
public List<string> AvailablePorts = new List<string>(); //Available COM Ports List
|
|
public bool SerialConnected = false; //is serial connected ?
|
|
public bool IsReceiving = false;
|
|
public bool HasBTInfos = false;
|
|
public bool CopiedInfos = false;
|
|
|
|
public System.Windows.Forms.Timer SerialTimer = new System.Windows.Forms.Timer();
|
|
private static string[] Read = new string[] { "", "", "", "", "", "" };
|
|
|
|
public bool InfosReading = false;
|
|
public int InfosState = 0;
|
|
public int CurrentAutoProgramTime = 0;
|
|
public int CurrentAutoProgramTime2 = 0;
|
|
|
|
|
|
public frmBluetooth()
|
|
{
|
|
InitializeComponent();
|
|
|
|
GetPortName();
|
|
//comboBox1.SelectedIndex = 0;
|
|
comboBox2.SelectedIndex = 2;
|
|
//comboBox3.SelectedIndex = 0;
|
|
|
|
SerialTimer.Interval = 100;
|
|
SerialTimer.Tick += Loop;
|
|
SerialTimer.Start();
|
|
|
|
comboBox4.SelectedIndex = 0;
|
|
|
|
/*foreach (Control control in base.Controls)
|
|
{
|
|
float emSize = control.Font.Size * (class18_0.class10_settings_0.scaleRate / 100f);
|
|
control.Font = new Font(control.Font.Name, emSize, control.Font.Style, control.Font.Unit);
|
|
}*/
|
|
}
|
|
|
|
public void Loop(object sender, EventArgs e)
|
|
{
|
|
//SerialTimer.Interval = 5000;
|
|
//SerialConnect();
|
|
//GetPortName();
|
|
|
|
if (checkBoxAutoProgram.Checked)
|
|
{
|
|
CurrentAutoProgramTime2++;
|
|
if (CurrentAutoProgramTime2 >= 10)
|
|
{
|
|
CurrentAutoProgramTime++; //1sec has passed
|
|
CurrentAutoProgramTime2 = 0;
|
|
}
|
|
|
|
if (CurrentAutoProgramTime >= (int) numericUpDown1.Value)
|
|
{
|
|
//#######################
|
|
//Read Adapter infos
|
|
//MessageBox.Show(Form.ActiveForm, "Reading Bluetooth Adapter infos...", "BMTune");
|
|
/*ClearInfos();
|
|
InfosState = 0;
|
|
InfosReading = true;*/
|
|
//#######################
|
|
//Set Adapter as Slave
|
|
//MessageBox.Show(Form.ActiveForm, "Setting Bluetooth Adapter as Slave...", "BMTune");
|
|
LogsBT("Autoprogramming adapter...");
|
|
ClearInfos();
|
|
SetSettings(true);
|
|
System.Media.SoundPlayer snd = new System.Media.SoundPlayer(Properties.Resources.alert2);
|
|
snd.Play();
|
|
LogsBT("Autoprogramming adapter done!");
|
|
//MessageBox.Show(Form.ActiveForm, "Bluetooth Adapter Set as Slave!", "BMTune");
|
|
//#######################
|
|
|
|
CurrentAutoProgramTime = 0;
|
|
CurrentAutoProgramTime2 = 0;
|
|
}
|
|
}
|
|
|
|
|
|
if (SerialConnected)
|
|
{
|
|
button2.Text = "Stop";
|
|
this.Text = "Bluetooth Programmer - " + comboBox1.Text + " Connected";
|
|
|
|
/*while (serial.BytesToRead > 0)
|
|
{
|
|
byte This = ReadByte();
|
|
textBox3.AppendText("0x" + This.ToString("X2") + ",");
|
|
textBox4.AppendText(Convert.ToChar(This).ToString() + ",");
|
|
textBox7.AppendText(((int)This).ToString() + ",");
|
|
IsReceiving = true;
|
|
}
|
|
|
|
if (IsReceiving)
|
|
{
|
|
textBox3.AppendText(Environment.NewLine);
|
|
textBox4.AppendText(Environment.NewLine);
|
|
textBox7.AppendText(Environment.NewLine);
|
|
IsReceiving = false;
|
|
}*/
|
|
|
|
if (InfosReading)
|
|
{
|
|
if (InfosState == 0)
|
|
{
|
|
SendStringCommand("AT+NAME");
|
|
serial_ReadBack("Get Name");
|
|
serial_ReadBack("Get Name #2");
|
|
InfosState++;
|
|
}
|
|
else if (InfosState == 1)
|
|
{
|
|
SendStringCommand("AT+VERSION");
|
|
serial_ReadBack("Get Version");
|
|
serial_ReadBack("Get Version #2");
|
|
InfosState++;
|
|
}
|
|
else if (InfosState == 2)
|
|
{
|
|
SendStringCommand("AT+ROLE");
|
|
serial_ReadBack("Get Role");
|
|
serial_ReadBack("Get Role #2");
|
|
InfosState++;
|
|
}
|
|
else if (InfosState == 3)
|
|
{
|
|
SendStringCommand("AT+ADDR");
|
|
serial_ReadBack("Get Addr");
|
|
serial_ReadBack("Get Addr #2");
|
|
InfosState++;
|
|
}
|
|
else if (InfosState == 4)
|
|
{
|
|
SendStringCommand("AT+PSWD");
|
|
serial_ReadBack("Get Pswd");
|
|
serial_ReadBack("Get Pswd #2");
|
|
InfosState++;
|
|
}
|
|
else if (InfosState == 5)
|
|
{
|
|
SendStringCommand("AT+UART");
|
|
serial_ReadBack("Get Uart");
|
|
serial_ReadBack("Get Uart #2");
|
|
InfosState++;
|
|
}
|
|
else if (InfosState == 6)
|
|
{
|
|
SendStringCommand("AT+BIND");
|
|
serial_ReadBack("Get Bind");
|
|
serial_ReadBack("Get Bind #2");
|
|
InfosState++;
|
|
}
|
|
else if (InfosState == 7)
|
|
{
|
|
HasBTInfos = true;
|
|
InfosReading = false;
|
|
InfosState = 0;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
button2.Text = "Start";
|
|
this.Text = "Bluetooth Programmer";
|
|
}
|
|
}
|
|
|
|
private bool CheckConnected()
|
|
{
|
|
bool IsFinallyConnected = false;
|
|
try
|
|
{
|
|
if (serial != null)
|
|
{
|
|
if (serial.IsOpen)
|
|
{
|
|
IsFinallyConnected = true;
|
|
//serial.Close();
|
|
//serial.Dispose();
|
|
}
|
|
else
|
|
{
|
|
SerialConnected = false;
|
|
button2.Text = "Connect";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
SerialConnected = false;
|
|
button2.Text = "Connect";
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
SerialConnected = false;
|
|
button2.Text = "Connect";
|
|
}
|
|
|
|
return IsFinallyConnected;
|
|
}
|
|
|
|
private void SendStringCommand(string ThisStr)
|
|
{
|
|
try
|
|
{
|
|
//This function serve to retreive bluetooth adapter infos
|
|
string CommandEnd = "\n\r";
|
|
if (comboBox4.SelectedIndex == 1) CommandEnd = "?\r";
|
|
|
|
if (CheckConnected()) serial.WriteLine(ThisStr + CommandEnd);
|
|
}
|
|
catch { }
|
|
}
|
|
|
|
private void SendStringCommandParameter(string ThisStrCMD, string ThisStrParameters)
|
|
{
|
|
try
|
|
{
|
|
//This function serve to apply bluetooth adapter parameters
|
|
string CommandEqual = "=";
|
|
string CommandEnd = "\n\r";
|
|
if (comboBox4.SelectedIndex == 1) CommandEnd = "\r";
|
|
if (comboBox4.SelectedIndex == 2) CommandEqual = "";
|
|
|
|
if (CheckConnected()) serial.WriteLine(ThisStrCMD + CommandEqual + ThisStrParameters + CommandEnd);
|
|
}
|
|
catch { }
|
|
}
|
|
|
|
|
|
private void SerialConnect()
|
|
{
|
|
//Close before Setting Values
|
|
if (serial != null)
|
|
{
|
|
if (serial.IsOpen)
|
|
{
|
|
serial.Close();
|
|
serial.Dispose();
|
|
}
|
|
}
|
|
|
|
if (AvailablePorts.Count > 0)
|
|
{
|
|
try
|
|
{
|
|
if (serial != null)
|
|
{
|
|
if (serial.IsOpen) serial.Close();
|
|
serial.Dispose();
|
|
serial = null;
|
|
}
|
|
|
|
serial = new SerialPort();
|
|
serial.PortName = AvailablePorts[comboBox1.SelectedIndex];
|
|
serial.ReadTimeout = 1500;
|
|
serial.WriteTimeout = 800;
|
|
|
|
serial.BaudRate = int.Parse(comboBox2.Text);
|
|
serial.Open();
|
|
SerialConnected = true;
|
|
button2.Text = "Close";
|
|
|
|
InfosState = 0;
|
|
InfosReading = true;
|
|
//ReadInfos();
|
|
|
|
/*if (TryConnectAdapter())
|
|
{
|
|
SerialConnected = true;
|
|
button2.Text = "Close";
|
|
ReadInfos();
|
|
}*/
|
|
}
|
|
catch { }
|
|
}
|
|
}
|
|
|
|
public bool TryConnectAdapter()
|
|
{
|
|
//try0 = user default settings
|
|
//try1 = 38400 test
|
|
//try2 = 9600 test
|
|
|
|
int BTTest = 0;
|
|
comboBox4.SelectedIndex = 0;
|
|
|
|
while (BTTest < 3)
|
|
{
|
|
if (serial != null)
|
|
{
|
|
if (serial.IsOpen)
|
|
{
|
|
serial.Close();
|
|
serial.Dispose();
|
|
}
|
|
}
|
|
|
|
serial = null;
|
|
serial = new SerialPort();
|
|
serial.PortName = AvailablePorts[comboBox1.SelectedIndex];
|
|
//serial.ReadTimeout = 800;
|
|
//serial.WriteTimeout = 400;
|
|
serial.ReadTimeout = 250;
|
|
serial.WriteTimeout = 200;
|
|
|
|
if (BTTest == 0) serial.BaudRate = int.Parse(comboBox2.Text);
|
|
if (BTTest == 1) serial.BaudRate = 38400;
|
|
if (BTTest == 2) serial.BaudRate = 9600;
|
|
serial.Open();
|
|
|
|
serial.DiscardInBuffer();
|
|
serial.DiscardOutBuffer();
|
|
|
|
LogsBT("Trying on baudrate: " + serial.BaudRate);
|
|
|
|
//+BAUD=6
|
|
//OK
|
|
|
|
string str = "";
|
|
serial.WriteLine("AT\n\r");
|
|
Thread.Sleep(serial.ReadTimeout);
|
|
if (serial.BytesToRead > 0) str = serial.ReadLine();
|
|
|
|
if (str == "")
|
|
{
|
|
serial.Write("AT?\n\r");
|
|
Thread.Sleep(serial.ReadTimeout);
|
|
if (serial.BytesToRead > 0) str = serial.ReadLine();
|
|
|
|
if (str.Contains("OK")) comboBox4.SelectedIndex = 2;
|
|
}
|
|
if (str == "")
|
|
{
|
|
serial.Write("AT?\r");
|
|
Thread.Sleep(serial.ReadTimeout);
|
|
if (serial.BytesToRead > 0) str = serial.ReadLine();
|
|
}
|
|
if (str == "")
|
|
{
|
|
serial.Write("AT\r");
|
|
Thread.Sleep(serial.ReadTimeout);
|
|
if (serial.BytesToRead > 0) str = serial.ReadLine();
|
|
}
|
|
/*if (str == "")
|
|
{
|
|
serial.Write("AT+VERSION\n\r");
|
|
Thread.Sleep(serial.ReadTimeout);
|
|
if (serial.BytesToRead > 0) str = serial.ReadLine();
|
|
}
|
|
if (str == "")
|
|
{
|
|
serial.Write("AT+VERSION?\n\r");
|
|
Thread.Sleep(serial.ReadTimeout);
|
|
if (serial.BytesToRead > 0) str = serial.ReadLine();
|
|
}
|
|
if (str == "")
|
|
{
|
|
serial.Write("AT+VERSION?\r");
|
|
Thread.Sleep(serial.ReadTimeout);
|
|
if (serial.BytesToRead > 0) str = serial.ReadLine();
|
|
}*/
|
|
|
|
if (str.Contains("OK"))
|
|
//if (str != "")
|
|
{
|
|
if (BTTest == 1)
|
|
{
|
|
comboBox2.Text = "38400";
|
|
}
|
|
if (BTTest == 2)
|
|
{
|
|
bool BaudChanged = false;
|
|
comboBox2.Text = "9600";
|
|
MessageBox.Show(Form.ActiveForm, "We detected that the default baudrate is set at 9600!\n\nBMTune will try to set the baudrate to 38400", "BMTune");
|
|
|
|
serial.WriteLine("AT+BAUD6\n\r");
|
|
Thread.Sleep(serial.ReadTimeout);
|
|
if (serial.BytesToRead > 0) str = serial.ReadLine();
|
|
if (str.Contains("+BAUD="))
|
|
{
|
|
Read[4] = str.Replace("+BAUD=", "");
|
|
if (Read[4] == "6") Reconnect38400();
|
|
BaudChanged = true;
|
|
}
|
|
//######################
|
|
if (!BaudChanged)
|
|
{
|
|
serial.WriteLine("AT+BAUD=6\n\r");
|
|
Thread.Sleep(serial.ReadTimeout);
|
|
if (serial.BytesToRead > 0) str = serial.ReadLine();
|
|
if (str.Contains("+BAUD="))
|
|
{
|
|
Read[4] = str.Replace("+BAUD=", "");
|
|
if (Read[4] == "6")
|
|
{
|
|
Reconnect38400();
|
|
BaudChanged = true;
|
|
}
|
|
}
|
|
}
|
|
//######################
|
|
if (!BaudChanged)
|
|
{
|
|
serial.WriteLine("AT+UART=38400,0,0\n\r");
|
|
Thread.Sleep(serial.ReadTimeout);
|
|
if (serial.BytesToRead > 0) str = serial.ReadLine();
|
|
if (str.Contains("+UART="))
|
|
{
|
|
Read[4] = str.Replace("+UART=", "");
|
|
if (Read[4].Contains("38400"))
|
|
{
|
|
Reconnect38400();
|
|
BaudChanged = true;
|
|
}
|
|
}
|
|
if (str.Contains("+UART:"))
|
|
{
|
|
Read[4] = str.Replace("+UART:", "");
|
|
if (Read[4].Contains("38400"))
|
|
{
|
|
Reconnect38400();
|
|
BaudChanged = true;
|
|
}
|
|
}
|
|
}
|
|
//######################
|
|
if (!BaudChanged)
|
|
{
|
|
serial.WriteLine("AT+UART=38400,0,0\r");
|
|
Thread.Sleep(serial.ReadTimeout);
|
|
if (serial.BytesToRead > 0) str = serial.ReadLine();
|
|
if (str.Contains("+UART="))
|
|
{
|
|
Read[4] = str.Replace("+UART=", "");
|
|
if (Read[4].Contains("38400"))
|
|
{
|
|
Reconnect38400();
|
|
BaudChanged = true;
|
|
}
|
|
}
|
|
if (str.Contains("+UART:"))
|
|
{
|
|
Read[4] = str.Replace("+UART:", "");
|
|
if (Read[4].Contains("38400"))
|
|
{
|
|
Reconnect38400();
|
|
BaudChanged = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//###########################################
|
|
//###########################################
|
|
//###########################################
|
|
serial.WriteLine("AT+VERSION?\r");
|
|
Thread.Sleep(serial.ReadTimeout);
|
|
if (serial.BytesToRead > 0) str = serial.ReadLine();
|
|
//Console.WriteLine("received " + str);
|
|
if (str.Contains("+VERSION="))
|
|
{
|
|
if (comboBox4.SelectedIndex == 0) comboBox4.SelectedIndex = 1; //JDY-MCU
|
|
BTTest = 99;
|
|
return true;
|
|
}
|
|
|
|
serial.WriteLine("AT+VERSION\n\r");
|
|
Thread.Sleep(serial.ReadTimeout);
|
|
if (serial.BytesToRead > 0) str = serial.ReadLine();
|
|
//Console.WriteLine("received " + str);
|
|
if (str.Contains("+VERSION:"))
|
|
{
|
|
comboBox4.SelectedIndex = 0; //HC05
|
|
BTTest = 99;
|
|
return true;
|
|
}
|
|
/*if (str.Contains("+VERSION="))
|
|
{
|
|
comboBox4.SelectedIndex = 2; //ZS-040
|
|
BTTest = 99;
|
|
return true;
|
|
}*/
|
|
}
|
|
|
|
BTTest++;
|
|
}
|
|
|
|
|
|
return false;
|
|
}
|
|
|
|
public void Reconnect38400()
|
|
{
|
|
if (serial.IsOpen)
|
|
{
|
|
serial.Close();
|
|
serial.Dispose();
|
|
}
|
|
MessageBox.Show(Form.ActiveForm, "Baudrate has changed, restart the adapter if it's not in AT+MODE\n\nBMTune will reconnect at baudrate 38400", "BMTune");
|
|
serial.BaudRate = 38400;
|
|
serial.Open();
|
|
}
|
|
|
|
public void GetPortName()
|
|
{
|
|
AvailablePorts.Clear();
|
|
comboBox1.Items.Clear();
|
|
|
|
|
|
foreach (string s in SerialPort.GetPortNames())
|
|
{
|
|
AvailablePorts.Add(s);
|
|
comboBox1.Items.Add(s);
|
|
}
|
|
}
|
|
|
|
private void button2_Click(object sender, EventArgs e)
|
|
{
|
|
HasBTInfos = false;
|
|
if (!SerialConnected)
|
|
{
|
|
ClearInfos();
|
|
SerialConnect();
|
|
}
|
|
else
|
|
{
|
|
try
|
|
{
|
|
if (serial.IsOpen)
|
|
{
|
|
serial.Close();
|
|
serial.Dispose();
|
|
}
|
|
}
|
|
catch { }
|
|
SerialConnected = false;
|
|
button2.Text = "Connect";
|
|
}
|
|
}
|
|
|
|
public void Write(byte[] Bytes)
|
|
{
|
|
try
|
|
{
|
|
try
|
|
{
|
|
serial.Write(Bytes, 0, Bytes.Length);
|
|
}
|
|
catch { }
|
|
}
|
|
catch (TimeoutException)
|
|
{
|
|
try
|
|
{
|
|
serial.DiscardInBuffer();
|
|
serial.DiscardOutBuffer();
|
|
}
|
|
catch { }
|
|
|
|
}
|
|
}
|
|
|
|
public byte ReadByte()
|
|
{
|
|
int Timeout = 0;
|
|
|
|
try
|
|
{
|
|
try
|
|
{
|
|
//Timeout Loop if bytes is not availables
|
|
int TimeoutTime = 600;
|
|
while (serial.BytesToRead < 1 & Timeout < TimeoutTime)
|
|
{
|
|
Thread.Sleep(1);
|
|
Timeout++;
|
|
}
|
|
|
|
//Check Timeout is out of time
|
|
if (Timeout >= TimeoutTime)
|
|
return 255;
|
|
else
|
|
return (byte)serial.ReadByte();
|
|
}
|
|
catch
|
|
{
|
|
return 255;
|
|
}
|
|
}
|
|
catch (TimeoutException)
|
|
{
|
|
return 255;
|
|
}
|
|
}
|
|
|
|
private void button1_Click(object sender, EventArgs e)
|
|
{
|
|
/*if (SerialConnected)
|
|
{
|
|
string Text = textBox1.Text;
|
|
byte[] ThisMessage = new byte[Text.Length];
|
|
if (comboBox3.SelectedIndex >= 1) ThisMessage = new byte[Text.Length + 1];
|
|
if (comboBox3.SelectedIndex == 3) ThisMessage = new byte[Text.Length + 2];
|
|
|
|
for (int i = 0; i < Text.Length; i++) ThisMessage[i] = Convert.ToByte(Text[i]);
|
|
|
|
//Add final
|
|
if (comboBox3.SelectedIndex == 1) ThisMessage[Text.Length] = Convert.ToByte('\n');
|
|
if (comboBox3.SelectedIndex == 2) ThisMessage[Text.Length] = Convert.ToByte('\r');
|
|
if (comboBox3.SelectedIndex == 3) { ThisMessage[Text.Length] = Convert.ToByte('\n'); ThisMessage[Text.Length + 1] = Convert.ToByte('\r'); }
|
|
|
|
//Set Textbox Display
|
|
for (int i = 0; i < ThisMessage.Length; i++)
|
|
{
|
|
textBox2.AppendText("0x" + ThisMessage[i].ToString("X2") + ",");
|
|
textBox5.AppendText(Convert.ToChar(ThisMessage[i]).ToString() + ",");
|
|
textBox6.AppendText(((int)ThisMessage[i]).ToString() + ",");
|
|
}
|
|
textBox2.AppendText(Environment.NewLine);
|
|
textBox5.AppendText(Environment.NewLine);
|
|
textBox6.AppendText(Environment.NewLine);
|
|
|
|
//Write
|
|
Write(ThisMessage);
|
|
}*/
|
|
}
|
|
|
|
private void Button4_Click(object sender, EventArgs e)
|
|
{
|
|
ClearInfos();
|
|
SetSettings(true);
|
|
CurrentAutoProgramTime = 0;
|
|
CurrentAutoProgramTime2 = 0;
|
|
MessageBox.Show(Form.ActiveForm, "Bluetooth Adapter Set as Slave!", "BMTune");
|
|
}
|
|
|
|
private void LogsBT(string logT)
|
|
{
|
|
textBox2.AppendText(logT + Environment.NewLine);
|
|
}
|
|
|
|
private void SetSettings(bool Slave)
|
|
{
|
|
if (Slave) txt_Name.Text = "BMLogger-ECU";
|
|
else txt_Name.Text = "BMDatalogger";
|
|
|
|
//string CommandEqual = "=";
|
|
//string CommandEnd = "\n\r";
|
|
//if (comboBox4.SelectedIndex == 1) CommandEnd = "\r";
|
|
//if (comboBox4.SelectedIndex == 2) CommandEqual = "";
|
|
|
|
SendStringCommandParameter("AT+NAME", txt_Name.Text);
|
|
serial_ReadBack("Set Name");
|
|
|
|
if (txt_Pass.Text != "1234")
|
|
{
|
|
|
|
if (comboBox4.SelectedIndex == 2 || comboBox4.SelectedIndex == 3) SendStringCommandParameter("AT+PIN", "1234");
|
|
else SendStringCommandParameter("AT+PSWD", "1234");
|
|
serial_ReadBack("Set Pswd");
|
|
}
|
|
|
|
if (txt_Uart.Text != "38400,0,0")
|
|
{
|
|
if (comboBox4.SelectedIndex == 2 || comboBox4.SelectedIndex == 3) SendStringCommandParameter("AT+BAUD", "6");
|
|
else SendStringCommandParameter("AT+UART", "38400,0,0");
|
|
serial_ReadBack("Set Uart");
|
|
}
|
|
|
|
if (Slave)
|
|
{
|
|
SendStringCommand("AT+ADDR");
|
|
serial_ReadBack("Get Addr");
|
|
serial_ReadBack("Get Addr #2");
|
|
}
|
|
else
|
|
{
|
|
if (comboBox4.SelectedIndex != 2 && comboBox4.SelectedIndex != 3)
|
|
{
|
|
if (comboBox4.SelectedIndex == 0) if (CheckConnected()) serial.WriteLine("AT+RMAAD\n\r");
|
|
if (comboBox4.SelectedIndex == 1) if (CheckConnected()) serial.WriteLine("AT+RMAAD\r");
|
|
serial_ReadBack("RMAAD");
|
|
|
|
if (comboBox4.SelectedIndex == 0) if (CheckConnected()) serial.WriteLine("AT+CMODE=0\n\r");
|
|
if (comboBox4.SelectedIndex == 1) if (CheckConnected()) serial.WriteLine("AT+CMODE=0\r");
|
|
serial_ReadBack("Set CMode");
|
|
}
|
|
|
|
SendStringCommandParameter("AT+BIND", txt_BuffID.Text);
|
|
serial_ReadBack("Set Bind");
|
|
}
|
|
|
|
if (Slave)
|
|
{
|
|
if (cmb_Role.SelectedIndex != 0)
|
|
{
|
|
SendStringCommandParameter("AT+ROLE", "0");
|
|
serial_ReadBack("Set Role");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (cmb_Role.SelectedIndex != 1)
|
|
{
|
|
SendStringCommandParameter("AT+ROLE", "1");
|
|
serial_ReadBack("Set Role");
|
|
}
|
|
}
|
|
|
|
if (Slave)
|
|
{
|
|
InfosState = 0;
|
|
InfosReading = true;
|
|
}
|
|
//ReadInfos();
|
|
}
|
|
|
|
public void serial_ReadBack(string CMDS)
|
|
{
|
|
if (CheckConnected())
|
|
{
|
|
if (serial.IsOpen && serial.ReadBufferSize > 0)
|
|
{
|
|
try
|
|
{
|
|
string str = serial.ReadLine();
|
|
//Console.WriteLine("received " + str);
|
|
/*if (str.Contains("OK"))
|
|
{
|
|
ATMOODE = true;
|
|
}*/
|
|
if (str.Contains("+VERSION="))
|
|
{
|
|
//ATMOODE = true;
|
|
//JDY31 = true;
|
|
comboBox4.SelectedIndex = 1;
|
|
Read[0] = str.Replace("+VERSION=", "");
|
|
txt_Version.Text = Read[0].Replace("\r", "");
|
|
}
|
|
if (str.Contains("+ADDR="))
|
|
{
|
|
Read[2] = str.Replace("+ADDR=", "");
|
|
txt_ID.Text = Read[2].Replace("\r", "");
|
|
RedoAddr();
|
|
}
|
|
if (str.Contains("+PIN="))
|
|
{
|
|
Read[3] = str.Replace("+PIN=", "");
|
|
Read[3] = Read[3].Replace("\"", "");
|
|
txt_Pass.Text = Read[3].Replace("\r", "");
|
|
}
|
|
if (str.Contains("+PSWD="))
|
|
{
|
|
Read[3] = str.Replace("+PSWD=", "");
|
|
Read[3] = Read[3].Replace("\"", "");
|
|
txt_Pass.Text = Read[3].Replace("\r", "");
|
|
}
|
|
if (str.Contains("+BAUD="))
|
|
{
|
|
Read[4] = str.Replace("+BAUD=", "");
|
|
if (Read[4] == "1") txt_Uart.Text = "1200,0,0";
|
|
if (Read[4] == "2") txt_Uart.Text = "2400,0,0";
|
|
if (Read[4] == "3") txt_Uart.Text = "4800,0,0";
|
|
if (Read[4] == "4") txt_Uart.Text = "9600,0,0";
|
|
if (Read[4] == "5") txt_Uart.Text = "19200,0,0";
|
|
if (Read[4] == "6") txt_Uart.Text = "38400,0,0";
|
|
if (Read[4] == "7") txt_Uart.Text = "57600,0,0";
|
|
if (Read[4] == "8") txt_Uart.Text = "115200,0,0";
|
|
if (Read[4] == "9") txt_Uart.Text = "230400,0,0";
|
|
if (Read[4] == "A") txt_Uart.Text = "460800,0,0";
|
|
if (Read[4] == "B") txt_Uart.Text = "921600,0,0";
|
|
if (Read[4] == "C") txt_Uart.Text = "1382400,0,0";
|
|
}
|
|
if (str.Contains("+UART="))
|
|
{
|
|
Read[4] = str.Replace("+UART=", "");
|
|
txt_Uart.Text = Read[4].Replace("\r", "");
|
|
}
|
|
if (str.Contains("+BIND="))
|
|
{
|
|
Read[0] = str.Replace("+BIND=", "");
|
|
txt_Bind.Text = Read[0].Replace("\r", "");
|
|
}
|
|
if (str.Contains("+NAME="))
|
|
{
|
|
Read[5] = str.Replace("+NAME=", "");
|
|
txt_Name.Text = Read[5].Replace("\r", "");
|
|
}
|
|
if (str.Contains("+ROLE="))
|
|
{
|
|
Read[1] = str.Replace("+ROLE=", "");
|
|
try
|
|
{
|
|
cmb_Role.SelectedIndex = int.Parse(Read[1].Replace("\r", ""));
|
|
}
|
|
catch { }
|
|
}
|
|
|
|
//#########################
|
|
if (str.Contains("+NAME:"))
|
|
{
|
|
Read[5] = str.Replace("+NAME:", "");
|
|
txt_Name.Text = Read[5].Replace("\r", "");
|
|
}
|
|
if (str.Contains("+VERSION:"))
|
|
{
|
|
Read[0] = str.Replace("+VERSION:", "");
|
|
txt_Version.Text = Read[0].Replace("\r", "");
|
|
}
|
|
if (str.Contains("+ROLE:"))
|
|
{
|
|
Read[1] = str.Replace("+ROLE:", "");
|
|
//textBox10.Text = Read[1].Replace("\r", "");
|
|
try
|
|
{
|
|
cmb_Role.SelectedIndex = int.Parse(Read[1].Replace("\r", ""));
|
|
}
|
|
catch { }
|
|
}
|
|
if (str.Contains("+ADDR:"))
|
|
{
|
|
Read[2] = str.Replace("+ADDR:", "");
|
|
txt_ID.Text = Read[2].Replace("\r", "");
|
|
RedoAddr();
|
|
}
|
|
if (str.Contains("+PIN:"))
|
|
{
|
|
Read[3] = str.Replace("+PIN:", "");
|
|
Read[3] = Read[3].Replace("\"", "");
|
|
txt_Pass.Text = Read[3].Replace("\r", "");
|
|
}
|
|
if (str.Contains("+PSWD:"))
|
|
{
|
|
Read[3] = str.Replace("+PSWD:", "");
|
|
txt_Pass.Text = Read[3].Replace("\r", "");
|
|
}
|
|
if (str.Contains("+UART:"))
|
|
{
|
|
Read[4] = str.Replace("+UART:", "");
|
|
txt_Uart.Text = Read[4].Replace("\r", "");
|
|
}
|
|
if (str.Contains("+BIND:"))
|
|
{
|
|
Read[0] = str.Replace("+BIND:", "");
|
|
txt_Bind.Text = Read[0].Replace("\r", "");
|
|
}
|
|
|
|
|
|
if (str.Contains("ERROR:"))
|
|
{
|
|
//Failed++;
|
|
LogsBT(CMDS + " " + str);
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
LogsBT("unable to read for command: " + CMDS);
|
|
//Failed++;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
LogsBT("unable to read for command: " + CMDS);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
LogsBT("unable to read for command: " + CMDS);
|
|
}
|
|
}
|
|
|
|
private void RedoAddr()
|
|
{
|
|
string addrbuf = txt_ID.Text;
|
|
if (addrbuf.Contains(":"))
|
|
{
|
|
addrbuf = addrbuf.Replace(":", ",");
|
|
string[] splite = addrbuf.Split(',');
|
|
if (splite[0].Length != 4)
|
|
{
|
|
int Adddd = 4 - splite[0].Length;
|
|
|
|
while (Adddd > 0)
|
|
{
|
|
splite[0] = "0" + splite[0];
|
|
Adddd--;
|
|
}
|
|
}
|
|
if (splite[1].Length != 2)
|
|
{
|
|
int Adddd = 2 - splite[1].Length;
|
|
|
|
while (Adddd > 0)
|
|
{
|
|
splite[1] = "0" + splite[1];
|
|
Adddd--;
|
|
}
|
|
}
|
|
|
|
if (splite[2].Length != 6)
|
|
{
|
|
int Adddd = 6 - splite[2].Length;
|
|
|
|
while (Adddd > 0)
|
|
{
|
|
splite[2] = "0" + splite[2];
|
|
Adddd--;
|
|
}
|
|
}
|
|
|
|
string reammdf = "";
|
|
for (int i = 0; i < splite[0].Length; i++) reammdf += splite[0][i];
|
|
reammdf += ",";
|
|
for (int i = 0; i < splite[1].Length; i++) reammdf += splite[1][i];
|
|
reammdf += ",";
|
|
for (int i = 0; i < splite[2].Length; i++) reammdf += splite[2][i];
|
|
|
|
txt_ID.Text = reammdf;
|
|
}
|
|
}
|
|
|
|
private void Button5_Click(object sender, EventArgs e)
|
|
{
|
|
if (!CopiedInfos || (CopiedInfos && txt_BuffRole.Text.Contains("Master")) || !HasBTInfos) MessageBox.Show(Form.ActiveForm, "You need to connect a slave adapter first that you want the master\nto pair to and set the slave adapter info in 'Last Adapter Infos'", "BMTune");
|
|
|
|
if (!SerialConnected) MessageBox.Show(Form.ActiveForm, "You need to connect a device first!", "BMTune");
|
|
else
|
|
{
|
|
if (CopiedInfos)
|
|
{
|
|
if (txt_BuffID.Text == "") MessageBox.Show(Form.ActiveForm, "The Slave ID in 'Last Adapter Infos' aren't recogniable", "BMTune");
|
|
|
|
if (HasBTInfos && txt_BuffID.Text != "")
|
|
{
|
|
MessageBox.Show(Form.ActiveForm, "This will Bind/Pair the Master with the the ID of the 'Last Adapter Infos'", "BMTune");
|
|
ClearInfos();
|
|
SetSettings(false);
|
|
}
|
|
}
|
|
}
|
|
MessageBox.Show(Form.ActiveForm, "Bluetooth Adapter Set as Master!", "BMTune");
|
|
}
|
|
|
|
private void Button6_Click(object sender, EventArgs e)
|
|
{
|
|
ClearInfos();
|
|
InfosState = 0;
|
|
InfosReading = true;
|
|
//ReadInfos();
|
|
}
|
|
|
|
/*private void ReadInfos()
|
|
{
|
|
if (comboBox4.SelectedIndex == 1)
|
|
{
|
|
serial.WriteLine("AT+NAME?\r");
|
|
serial_ReadBack("Get Name");
|
|
serial_ReadBack("Get Name #2");
|
|
|
|
serial.WriteLine("AT+VERSION?\r");
|
|
serial_ReadBack("Get Version");
|
|
serial_ReadBack("Get Version #2");
|
|
|
|
serial.WriteLine("AT+ROLE?\r");
|
|
serial_ReadBack("Get Role");
|
|
serial_ReadBack("Get Role #2");
|
|
|
|
serial.WriteLine("AT+ADDR?\r");
|
|
serial_ReadBack("Get Addr");
|
|
serial_ReadBack("Get Addr #2");
|
|
|
|
serial.WriteLine("AT+PSWD?\r");
|
|
serial_ReadBack("Get Pswd");
|
|
serial_ReadBack("Get Pswd #2");
|
|
|
|
serial.WriteLine("AT+UART?\r");
|
|
serial_ReadBack("Get Uart");
|
|
serial_ReadBack("Get Uart #2");
|
|
|
|
serial.WriteLine("AT+BIND?\r");
|
|
serial_ReadBack("Get Bind");
|
|
serial_ReadBack("Get Bind #2");
|
|
}
|
|
else
|
|
{
|
|
serial.WriteLine("AT+NAME\n\r");
|
|
//serial.WriteLine("AT+NAME\r");
|
|
//Thread.Sleep(500);
|
|
serial_ReadBack("Get Name");
|
|
serial_ReadBack("Get Name #2");
|
|
|
|
serial.WriteLine("AT+VERSION\n\r");
|
|
//serial.WriteLine("AT+VERSION\r");
|
|
serial_ReadBack("Get Version");
|
|
serial_ReadBack("Get Version #2");
|
|
|
|
serial.WriteLine("AT+PSWD\n\r");
|
|
//serial.WriteLine("AT+PSWD\r");
|
|
serial_ReadBack("Get Pswd");
|
|
serial_ReadBack("Get Pswd #2");
|
|
|
|
serial.WriteLine("AT+UART\n\r");
|
|
//serial.WriteLine("AT+UART\r");
|
|
serial_ReadBack("Get Uart");
|
|
serial_ReadBack("Get Uart #2");
|
|
|
|
serial.WriteLine("AT+ADDR\n\r");
|
|
//serial.WriteLine("AT+ADDR\r");
|
|
serial_ReadBack("Get Addr");
|
|
serial_ReadBack("Get Addr #2");
|
|
|
|
serial.WriteLine("AT+BIND\n\r");
|
|
//serial.WriteLine("AT+BIND\r");
|
|
serial_ReadBack("Get Bind");
|
|
serial_ReadBack("Get Bind #2");
|
|
|
|
serial.WriteLine("AT+ROLE\n\r");
|
|
//serial.WriteLine("AT+ROLE\r");
|
|
serial_ReadBack("Get Role");
|
|
serial_ReadBack("Get Role #2");
|
|
}
|
|
|
|
HasBTInfos = true;
|
|
}*/
|
|
|
|
private void ComboBox1_DropDown(object sender, EventArgs e)
|
|
{
|
|
GetPortName();
|
|
}
|
|
|
|
private void Button7_Click(object sender, EventArgs e)
|
|
{
|
|
CopyBuffer();
|
|
}
|
|
|
|
private void CopyBuffer()
|
|
{
|
|
if (HasBTInfos)
|
|
{
|
|
txt_BuffName.Text = txt_Name.Text;
|
|
txt_BuffUart.Text = txt_Uart.Text;
|
|
txt_BuffVersion.Text = txt_Version.Text;
|
|
txt_BuffBind.Text = txt_Bind.Text;
|
|
txt_BuffID.Text = txt_ID.Text;
|
|
txt_BuffPass.Text = txt_Pass.Text;
|
|
txt_BuffRole.Text = cmb_Role.Text;
|
|
CopiedInfos = true;
|
|
}
|
|
}
|
|
|
|
private void Button3_Click(object sender, EventArgs e)
|
|
{
|
|
if (comboBox4.SelectedIndex == 1) //JDY31
|
|
{
|
|
serial.WriteLine("AT+ORGL\r");
|
|
serial_ReadBack("Set ORGL");
|
|
MessageBox.Show(Form.ActiveForm, "Restored unit to default settings.", "BMTune");
|
|
}
|
|
else if (comboBox4.SelectedIndex == 2 && comboBox4.SelectedIndex == 3) //HC06 ZS-040
|
|
{
|
|
serial.WriteLine("AT+DEFAULT\n\r");
|
|
serial_ReadBack("Set ORGL");
|
|
MessageBox.Show(Form.ActiveForm, "Restored unit to default settings.", "BMTune");
|
|
}
|
|
else
|
|
{
|
|
//serial.WriteLine("AT+DEFAULT\n\r");
|
|
//serial.WriteLine("AT+RESET\n\r");
|
|
serial.WriteLine("AT+ORGL\n\r");
|
|
serial_ReadBack("Set ORGL");
|
|
MessageBox.Show(Form.ActiveForm, "Restored unit to default settings.", "BMTune");
|
|
}
|
|
}
|
|
|
|
private void button8_Click(object sender, EventArgs e)
|
|
{
|
|
string CommandEqual = "=";
|
|
string CommandEnd = "\n\r";
|
|
if (comboBox4.SelectedIndex == 1) CommandEnd = "\r";
|
|
if (comboBox4.SelectedIndex == 2) CommandEqual = "";
|
|
|
|
serial.WriteLine("AT+NAME" + CommandEqual + txt_Name.Text + CommandEnd);
|
|
serial_ReadBack("Set Name");
|
|
|
|
MessageBox.Show(Form.ActiveForm, "Bluetooth adapter name changed", "BMTune");
|
|
}
|
|
|
|
private void button10_Click(object sender, EventArgs e)
|
|
{
|
|
string CommandEqual = "=";
|
|
string CommandEnd = "\n\r";
|
|
if (comboBox4.SelectedIndex == 1) CommandEnd = "\r";
|
|
if (comboBox4.SelectedIndex == 2) CommandEqual = "";
|
|
|
|
if (comboBox4.SelectedIndex == 2 || comboBox4.SelectedIndex == 3) serial.WriteLine("AT+BAUD" + CommandEqual + "6" + CommandEnd);
|
|
else serial.WriteLine("AT+UART" + CommandEqual + txt_Uart.Text + CommandEnd);
|
|
serial_ReadBack("Set Uart");
|
|
|
|
MessageBox.Show(Form.ActiveForm, "Bluetooth adapter uart changed", "BMTune");
|
|
}
|
|
|
|
private void button11_Click(object sender, EventArgs e)
|
|
{
|
|
string CommandEqual = "=";
|
|
string CommandEnd = "\n\r";
|
|
if (comboBox4.SelectedIndex == 1) CommandEnd = "\r";
|
|
if (comboBox4.SelectedIndex == 2) CommandEqual = "";
|
|
|
|
serial.WriteLine("AT+ROLE" + CommandEqual + cmb_Role.SelectedIndex + CommandEnd);
|
|
serial_ReadBack("Set Role");
|
|
|
|
MessageBox.Show(Form.ActiveForm, "Bluetooth adapter role changed", "BMTune");
|
|
}
|
|
|
|
private void button13_Click(object sender, EventArgs e)
|
|
{
|
|
string CommandEqual = "=";
|
|
string CommandEnd = "\n\r";
|
|
if (comboBox4.SelectedIndex == 1) CommandEnd = "\r";
|
|
if (comboBox4.SelectedIndex == 2) CommandEqual = "";
|
|
|
|
serial.WriteLine("AT+BIND" + CommandEqual + txt_BuffID.Text + CommandEnd);
|
|
serial_ReadBack("Set Bind");
|
|
|
|
MessageBox.Show(Form.ActiveForm, "Bluetooth adapter bind changed", "BMTune");
|
|
}
|
|
|
|
private void button14_Click(object sender, EventArgs e)
|
|
{
|
|
string CommandEqual = "=";
|
|
string CommandEnd = "\n\r";
|
|
if (comboBox4.SelectedIndex == 1) CommandEnd = "\r";
|
|
if (comboBox4.SelectedIndex == 2) CommandEqual = "";
|
|
|
|
if (comboBox4.SelectedIndex == 2 || comboBox4.SelectedIndex == 3) serial.WriteLine("AT+PIN" + CommandEqual + txt_Pass.Text + CommandEnd);
|
|
else serial.WriteLine("AT+PSWD" + CommandEqual + txt_Pass.Text + CommandEnd);
|
|
serial_ReadBack("Set Pswd");
|
|
|
|
MessageBox.Show(Form.ActiveForm, "Bluetooth adapter pswd changed", "BMTune");
|
|
}
|
|
|
|
private void button9_Click(object sender, EventArgs e)
|
|
{
|
|
textBox2.Text = "";
|
|
}
|
|
|
|
void ClearInfos()
|
|
{
|
|
txt_Name.Text = "";
|
|
txt_Bind.Text = "";
|
|
txt_ID.Text = "";
|
|
txt_Pass.Text = "";
|
|
txt_Uart.Text = "";
|
|
txt_Version.Text = "";
|
|
cmb_Role.Text = "";
|
|
}
|
|
}
|