Click here to Skip to main content
15,867,330 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi guys i have problem i make code that take data from serial com port for weighting machine
it is ok working but it recieve data in more lines.I try to make it receive data in one line
In code below i need to take weight fro weight bridge machine automatically by timer in visual studio 2005.it works but receive weight values in more lines.
I need to receive weight in one line and automatically updated then convert t to integer
C#
  void Application_Idle(object sender, EventArgs e)
        {
            label3.Text = serialPort1.IsOpen ? "[Open]" : "[Closed]";
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (pollingCheckbox.Checked)
            {
                timer1.Enabled = true;
            }
            else
            {
                timer1.Enabled = false;
                TransmitCommand();
            }
        }
        private void TransmitCommand()
        {
            if (textBox1.Text.Length > 0)
            {
                if (serialPort1.IsOpen)
                {
                    serialPort1.Write(textBox1.Text + "\r");
                    
                }
            }
        }
        private void ClosePort()
        {
            if (serialPort1.IsOpen)
            {
                serialPort1.DataReceived -= new SerialDataReceivedEventHandler(serialPort1_DataReceived);
                serialPort1.Close();
            }
        }
        private void closePortToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ClosePort();
        }
        private void exitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            serialPort1.PortName = Properties.Settings.Default.Port;
            serialPort1.BaudRate = Properties.Settings.Default.Baud;
            serialPort1.DataBits = Properties.Settings.Default.DataBits;
            serialPort1.Parity = (Parity)Enum.Parse(typeof(Parity), Properties.Settings.Default.Parity);
            serialPort1.StopBits = (StopBits)Enum.Parse(typeof(StopBits), Properties.Settings.Default.StopBits);

            Application.Idle += new EventHandler(Application_Idle);
        }
        private void OpenPort()
        {
            serialPort1.Open();
            serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
        }
        private void openPortToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenPort();
        }
        private void optionsToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ClosePort();

            using (Form2 form = new Form2())
            {
                if (form.ShowDialog(this) == DialogResult.OK)
                {
                    serialPort1.PortName = Properties.Settings.Default.Port;
                    serialPort1.BaudRate = Properties.Settings.Default.Baud;
                    serialPort1.DataBits = Properties.Settings.Default.DataBits;
                    serialPort1.Parity = (Parity)Enum.Parse(typeof(Parity), Properties.Settings.Default.Parity);
                    serialPort1.StopBits = (StopBits)Enum.Parse(typeof(StopBits), Properties.Settings.Default.StopBits);
                }
            }
        }
        void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            if (!InvokeRequired)
            {
                if (e.EventType == SerialData.Chars)
                {
                    string portData = serialPort1.ReadExisting();
                    textBox2.AppendText(portData);
                }
            }
            else
            {
                SerialDataReceivedEventHandler invoker = new SerialDataReceivedEventHandler(serialPort1_DataReceived);
                BeginInvoke(invoker, new object[] { sender, e });
            }
        }    
        private void pollingCheckbox_CheckedChanged(object sender, EventArgs e)
        {
            if (timer1.Enabled && !pollingCheckbox.Checked)
            {
                timer1.Enabled = false;
            }
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (pollingCheckbox.Checked)
            {
                TransmitCommand();
            }
        }

    }
}
Posted
Updated 8-Mar-14 0:14am
v2
Comments
Richard MacCutchan 8-Mar-14 6:25am    
You need to use the documentation for the device, to learn how to identify when all the data has been received.
Sergey Alexandrovich Kryukov 8-Mar-14 16:34pm    
Why, why in one line? What's the problem with several lines?
Why using a timer? You are inviting troubles. Better use a separate thread.
—SA
ahmed_sa 9-Mar-14 12:21pm    
one line because i need to take this data then updated in database(how i take last value from weight bridge)
and using timer because i need to automatically receive value

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900