Crni Tigar

Crni Tigar

  • NA
  • 1
  • 1.5k

How to parse string in C#

Jul 30 2014 5:25 AM
Hello,

I am new in C# and I am trying to develop C# application for my relative humidity and temperature monitoring with SHT-11.

I found tutorials on net and I managed to make serial connection and to receive string. Now I would like to parse received string and to extract humidity and temperature values. I made following protocol
START byte ('*') + 5 bytes rel. hum + SEPARATOR (':') + 5 bytes temperature + STOP byte (';')

I know how to parse string in C for microcontrollers but I am not sure how to do that in C# (Microsoft Visual 2013).

Here is my code
using System;
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;

namespace RH_and_Temperaure_Monitoring
{
    public partial class Form1 : Form
    {
        string RxString;
        public Form1()
        {
            InitializeComponent();
        }

        private void buttonstart_Click(object sender, EventArgs e)
        {
            serialPort1.PortName = "COM12";
            serialPort1.BaudRate = 9600;

            serialPort1.Open();
            if (serialPort1.IsOpen)
            {
                buttonstart.Enabled = false;
                buttonstop.Enabled = true;
                textBox1.ReadOnly = false;
            }
        }

        private void buttonstop_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen)
            {
                serialPort1.Close();
                buttonstart.Enabled = true;
                buttonstop.Enabled = false;
                textBox1.ReadOnly = true;
            }
        }

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            // If the port is closed, don't try to send a character.

              if(!serialPort1.IsOpen) return;
 
              // If the port is Open, declare a char[] array with one element.
              char[] buff = new char[1];
             
              // Load element 0 with the key character.

              buff[0] = e.KeyChar;
 
              // Send the one character buffer.
              serialPort1.Write(buff, 0, 1);
 
              // Set the KeyPress event as handled so the character won't
              // display locally. If you want it to display, omit the next line.
              e.Handled = true;
        }

        private void DisplayText(object sender, EventArgs e)
        {
            textBox1.AppendText(RxString);
        }

        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            RxString = serialPort1.ReadExisting();
            this.Invoke(new EventHandler(DisplayText));
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (serialPort1.IsOpen) serialPort1.Close();
        }
    }
}

And screenshot of Windows Form..
http://obrazki.elekt..._1406711404.jpg

Later I would like to add plots and presentation of measured values in separated text boxes for temperature and humidity.

Thanks.

Answers (1)