Skip to content

Latest commit

 

History

History
101 lines (90 loc) · 2.48 KB

README.md

File metadata and controls

101 lines (90 loc) · 2.48 KB

checkBatteryState

Using Win32 API to control UART for reading battery state. It can show battery capacity, current, votage.

UI

Capture

Open com port

My_SerialPort = new SerialPort();

if (My_SerialPort.IsOpen)
{
    CloseComport();
}

//config Serial Port
My_SerialPort.PortName = comboBox_comPortSelecter.Text;
My_SerialPort.BaudRate = 9600;
My_SerialPort.DataBits = 8;
My_SerialPort.StopBits = StopBits.One;

if (!My_SerialPort.IsOpen)
{
    int error = 0;

    //open Serial Port
    try
    {
        My_SerialPort.Open();
    }
    catch (Exception ex)
    {
        error = 1;
        MessageBox.Show(ex.Message);
    }           
    if (error == 0)
    {
      Console_receiving = true;

        sendData = new Thread(DoSend);
        sendData.IsBackground = true;
        sendData.Start();

        receiveData = new Thread(DoReceive);
        receiveData.IsBackground = true;
        receiveData.Start();
	}
}
else
{
    MessageBox.Show("Serial port has been opened.", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

Receive data

private void DoReceive()
        {
            Byte[] buffer = new Byte[32];
            try
            {
                while (Console_receiving)
                {
                    if (My_SerialPort.BytesToRead > 0)
                    {
                        Int32 length = My_SerialPort.Read(buffer, 0, buffer.Length);
                        Array.Resize(ref buffer, length);

.......

Write data

public void serialWrite(byte a, byte b, byte c, byte d)
        {
            try
            {
                Byte[] buffer = new Byte[4] { a, b, c, d };     //BIOS name
                My_SerialPort.Write(buffer, 0, buffer.Length);
            }
            catch (Exception ex)
            {
                CloseComport();
                MessageBox.Show(ex.Message);
            }
        }
void DoSend()
        {
            while (true)
            {
                switch (getDataType)
                {
                    case 100:     //get BIOS BOM and BIOS name
                        lable_biosBom.Text = "";
                        getDataType = 0;                            //parse method
                        serialWrite(0x04, 0xA0, 0x00, 0x5c);        //BIOS BOM
                        Thread.Sleep(750);                          //wait for receive data
..............