Click here to Skip to main content
15,917,610 members
Home / Discussions / C#
   

C#

 
AnswerRe: Otions to store settings of application Pin
PIEBALDconsult7-Jun-10 2:40
mvePIEBALDconsult7-Jun-10 2:40 
Questionflickers with draw plots from serial port ? Pin
Honeyboy_206-Jun-10 16:40
Honeyboy_206-Jun-10 16:40 
AnswerRe: flickers with draw plots from serial port ? Pin
Luc Pattyn6-Jun-10 16:57
sitebuilderLuc Pattyn6-Jun-10 16:57 
GeneralRe: flickers with draw plots from serial port ? Pin
Honeyboy_206-Jun-10 17:09
Honeyboy_206-Jun-10 17:09 
GeneralRe: flickers with draw plots from serial port ? Pin
Luc Pattyn6-Jun-10 17:19
sitebuilderLuc Pattyn6-Jun-10 17:19 
GeneralRe: flickers with draw plots from serial port ? Pin
Honeyboy_208-Jun-10 5:24
Honeyboy_208-Jun-10 5:24 
GeneralRe: flickers with draw plots from serial port ? Pin
Ravi Bhavnani6-Jun-10 17:30
professionalRavi Bhavnani6-Jun-10 17:30 
GeneralRe: flickers with draw plots from serial port ? Pin
Honeyboy_207-Jun-10 5:19
Honeyboy_207-Jun-10 5:19 
Here's the code
<br />
using System;<br />
using System.Collections.Generic;<br />
using System.Linq;<br />
using System.Text;<br />
using System.IO.Ports;<br />
using System.Windows.Forms;<br />
using System.Collections;<br />
using Microsoft.VisualBasic;<br />
<br />
<br />
namespace SerialPort16_5_2010<br />
{<br />
    class ReviceDataFromSeriaLPort<br />
    {<br />
        #region Identifiers<br />
        public SerialPort serialPort1 = new SerialPort();<br />
        public TextBox txtDataRecived = new TextBox();<br />
<br />
        // To Store Message Plot as an Object from Serial and set it to MessageContents Class<br />
        private double range;<br />
        private double azmouth;<br />
        public ArrayList msgSequence = new ArrayList();<br />
        #endregion<br />
<br />
        #region Responsible for connect to serial port<br />
        public void ConnectToSerialPort(string portname, Label lblMessage)<br />
        {<br />
            if (serialPort1.IsOpen)<br />
            {<br />
                serialPort1.Close();<br />
            }<br />
            try<br />
            {<br />
                // Configure the various paramter of Serial Port<br />
<br />
                serialPort1.PortName = portname;<br />
                serialPort1.BaudRate = 9600;<br />
                serialPort1.Parity = Parity.None;<br />
                serialPort1.DataBits = 8;<br />
                serialPort1.StopBits = StopBits.One;<br />
<br />
                // Open Serial<br />
                serialPort1.Open();<br />
<br />
                // Update Status of Serial Port<br />
                lblMessage.Text = portname + " Connected";<br />
<br />
<br />
            }<br />
            catch (Exception ex)<br />
            {<br />
                MessageBox.Show(ex.Message);<br />
            }<br />
        }<br />
        #endregion<br />
<br />
        #region Responsible for Disconnect to serial port<br />
        public void DisconnectToSerialPort(string portname, Label lblMessage)<br />
        {<br />
            try<br />
            {<br />
                serialPort1.Close();<br />
                lblMessage.Text = portname + " Disconnected";<br />
<br />
            }<br />
            catch (Exception ex)<br />
            {<br />
                MessageBox.Show(ex.Message);<br />
            }<br />
<br />
        }<br />
        #endregion<br />
<br />
        #region Delegate and subroutine to update the TextBox control<br />
        //---Delegate and subroutine to update the TextBox control---<br />
        public delegate void myDelegate();<br />
        #endregion<br />
<br />
        #region updateTextBox funtionality<br />
        /* Read bytes by bytes<br />
         * Check Message valid or invalid<br />
         * Store bytes in array List<br />
         */<br />
        int bytesLength=100;<br />
        public void updateTextBox()<br />
        {<br />
            try<br />
            {<br />
                //retrieve number of bytes in the buffer<br />
                 bytesLength = serialPort1.BytesToRead;<br />
         <br />
<br />
                //create a byte array to hold the awaiting data<br />
                byte[] comBuffer = new byte[bytesLength];<br />
<br />
<br />
                #region Read Byte by Byte and check it.<br />
<br />
                for (int BytesCounter = 0; BytesCounter < bytesLength; BytesCounter++)<br />
                {<br />
                    int inputByte = serialPort1.ReadByte();<br />
                    string ConvertByteToHex = Conversion.Hex(inputByte);<br />
                    comBuffer[BytesCounter] = (byte)inputByte;<br />
<br />
                    #region Check if First byte in stream of bytes == 99<br />
                    if (ConvertByteToHex == "99")<br />
                    {<br />
                        // if there only one byte in message we will not process on it.<br />
                        if (BytesCounter + 1 < bytesLength)<br />
                        {<br />
                            int messageLength = serialPort1.ReadByte();<br />
                                                    comBuffer[BytesCounter + 1] = (byte)messageLength;<br />
                            #region Check if messageLength > 4 .. Check 3 probarity of message.<br />
                            if (messageLength > 4)<br />
                            {<br />
                            #region Check if messageLength == 4<br />
                                if (messageLength == 4)<br />
                                {<br />
<br />
                                }<br />
                                #endregion<br />
<br />
                            #region Check if messageLength == 10<br />
                                else if (messageLength == 10)<br />
                                {<br />
                                    //to Check if message length which reads in second byte are like the exists in serial port.<br />
                                    if (BytesCounter + messageLength <= bytesLength)<br />
                                    {<br />
                                        for (int msgByteCounter = 2; msgByteCounter < messageLength; msgByteCounter++)<br />
                                        {<br />
                                            int tempRecivedByte = serialPort1.ReadByte();<br />
                                            comBuffer[msgByteCounter + BytesCounter] = (byte)tempRecivedByte;<br />
                                            if (msgByteCounter == messageLength - 1)<br />
                                            {<br />
                                                #region check if message end equal '0d'='13'<br />
                                                if (tempRecivedByte == 13)<br />
                                                {<br />
<br />
                                                    string range1 = Conversion.Hex(comBuffer[msgByteCounter + BytesCounter - 6]); //3<br />
                                                    string range2 = Conversion.Hex(comBuffer[msgByteCounter + BytesCounter - 5]); //4<br />
                                                    string contactRange = string.Concat(range2, range1);<br />
                                                    range = Convert.ToInt32(contactRange, 16);<br />
<br />
                                                    string azmouth1 = Conversion.Hex(comBuffer[msgByteCounter + BytesCounter - 4]); //5<br />
                                                    string azmouth2 = Conversion.Hex(comBuffer[msgByteCounter + BytesCounter - 3]); //6<br />
                                                    string contactazmouth = string.Concat(azmouth2, azmouth1);<br />
                                                    azmouth = Convert.ToInt32(contactazmouth, 16);<br />
<br />
                                                }<br />
                                                #endregion<br />
                                            }<br />
                                        }<br />
                                        //Add range and Azmouth to arrayList.<br />
                                        MessageContents msgcontents = new MessageContents(range, azmouth);<br />
                                       //   msgcontents.MsgRang = range;<br />
                                        msgSequence.Add(msgcontents);<br />
<br />
                                       // msgcontents.Azmouth = azmouth;<br />
                                        //msgSequence.Add(msgcontents.Azmouth);<br />
<br />
                                        // Set the value of MsgSequence to be acessed when i want to draw.<br />
                                      //  MsgSequence = msgSequence;<br />
<br />
                                    } // end of if satement Scope<br />
                                }<br />
                            }<br />
                            #endregion<br />
<br />
                            #region Check if messageLength == 12<br />
                            else if (messageLength == 12)<br />
                            {<br />
                                //to Check if message length which reads in second byte are like the exists in serial port.<br />
                                if (BytesCounter + messageLength <= bytesLength)<br />
                                {<br />
                                    for (int msgByteCounter = 2; msgByteCounter < messageLength; msgByteCounter++)<br />
                                    {<br />
                                        int tempRecivedByte = serialPort1.ReadByte();<br />
                                        comBuffer[msgByteCounter + BytesCounter] = (byte)tempRecivedByte;<br />
                                        if (msgByteCounter == messageLength - 1)<br />
                                        {<br />
                                            //check if message end equal '0d'='13'<br />
                                            if (tempRecivedByte == 13)<br />
                                            {<br />
                                            }<br />
                                        }<br />
                                    }<br />
                                }<br />
                            }<br />
                            #endregion<br />
<br />
                            if (messageLength + BytesCounter < comBuffer.Length)<br />
                                BytesCounter += messageLength - 1;<br />
                        }<br />
                        else<br />
                        {<br />
                            // ignore message<br />
                        }<br />
<br />
                            #endregion<br />
                    }<br />
                    #endregion<br />
                    // else<br />
                    #region do not read if first bytes not equal 99<br />
                    else<br />
                    {<br />
<br />
                    }<br />
                    #endregion<br />
                }<br />
                #endregion<br />
            }<br />
            catch (Exception ex)<br />
            {<br />
                MessageBox.Show(ex.Message);<br />
<br />
            }<br />
        }<br />
        #endregion<br />
<br />
        #region used to Recive Data In Run Time <br />
        public void DataRecivedInRunTime()<br />
        {<br />
<br />
            serialPort1.DataReceived += new SerialDataReceivedEventHandler(DataRecived);<br />
<br />
        }<br />
        #endregion<br />
<br />
        #region DataRecived Event<br />
        public void DataRecived(object sender, SerialDataReceivedEventArgs e)<br />
        {<br />
            //---invoke the delegate to retrieve the received data---<br />
            txtDataRecived.BeginInvoke(new myDelegate(updateTextBox));<br />
        }<br />
        #endregion<br />
    }<br />
}<br />
<br />



and MessageContents class to set range and azimuth on it
<br />
class MessageContents<br />
    {<br />
       <br />
        public double msgRang;<br />
        public double azmouth;<br />
<br />
      public  MessageContents(double _msgRang,double _azmouth)<br />
        {<br />
            this.msgRang=_msgRang;<br />
            this.azmouth = _azmouth;<br />
        }<br />
    }<br />



in the form
----------------------------
<br />
using System;<br />
using System.Collections.Generic;<br />
using System.ComponentModel;<br />
using System.Data;<br />
using System.Drawing;<br />
using System.Linq;<br />
using System.Text;<br />
using System.Windows.Forms;<br />
using System.Collections;<br />
using System.Drawing.Drawing2D;<br />
using System.Threading;<br />
<br />
namespace SerialPort16_5_2010<br />
{<br />
    public partial class Form1 : Form<br />
    {<br />
<br />
        ReviceDataFromSeriaLPort rcvfrmSerial;<br />
        ArrayList sequenceSore10 = new ArrayList();<br />
        int x, y;<br />
        public Form1()<br />
        {<br />
            InitializeComponent();<br />
        }<br />
        private void Form1_Load(object sender, EventArgs e)<br />
        {<br />
<br />
            rcvfrmSerial = new ReviceDataFromSeriaLPort();<br />
            //Connect to my Serial Port<br />
            rcvfrmSerial.ConnectToSerialPort("COM1", lblMessage);<br />
            // Recive Data From Other Com<br />
            rcvfrmSerial.txtDataRecived = textBox1;<br />
            rcvfrmSerial.DataRecivedInRunTime();<br />
        }<br />
<br />
    <br />
<br />
        private void myCustomPanel1_Paint_1(object sender, PaintEventArgs e)<br />
        {<br />
            Graphics g = Graphics.FromHwnd(myCustomPanel1.Handle);<br />
            Pen p = new Pen(new SolidBrush(Color.Red), 2.0f);<br />
<br />
                     g.TranslateTransform(400, 300);<br />
            foreach (MessageContents item in rcvfrmSerial.msgSequence)<br />
            {<br />
                double range = item.msgRang / 100;<br />
                double azimouth = item.azmouth;<br />
                double range2 = item.msgRang + 1;<br />
                x = (int)(range * Math.Cos(azimouth * Math.PI / 180));<br />
                y = (int)(range * Math.Sin(azimouth * Math.PI / 180));<br />
                g.DrawEllipse(p, (int)x, (int)y, 4, 4);<br />
                //g.DrawLine(p, 0, 0, x, y);<br />
                this.Invalidate();<br />
                this.Refresh();<br />
<br />
            }<br />
        }<br />
    }<br />
}<br />
<br />

GeneralRe: flickers with draw plots from serial port ? Pin
Luc Pattyn8-Jun-10 6:28
sitebuilderLuc Pattyn8-Jun-10 6:28 
GeneralRe: flickers with draw plots from serial port ? Pin
Honeyboy_2010-Jun-10 2:15
Honeyboy_2010-Jun-10 2:15 
GeneralRe: flickers with draw plots from serial port ? Pin
Luc Pattyn10-Jun-10 2:31
sitebuilderLuc Pattyn10-Jun-10 2:31 
GeneralRe: flickers with draw plots from serial port ? Pin
Ahmed R El Bohoty14-Jun-10 17:43
Ahmed R El Bohoty14-Jun-10 17:43 
QuestionC# programm merging pdf files Pin
nstk6-Jun-10 6:39
nstk6-Jun-10 6:39 
AnswerRe: C# programm merging pdf files Pin
Richard MacCutchan6-Jun-10 6:51
mveRichard MacCutchan6-Jun-10 6:51 
AnswerRe: C# programm merging pdf files Pin
dan!sh 6-Jun-10 7:18
professional dan!sh 6-Jun-10 7:18 
AnswerRe: C# programm merging pdf files Pin
Johnny J.6-Jun-10 23:37
professionalJohnny J.6-Jun-10 23:37 
QuestionGetting cookies from IE process. [modified] Pin
Evgeni575-Jun-10 20:19
Evgeni575-Jun-10 20:19 
QuestionGet object count Pin
ruknil5-Jun-10 9:39
ruknil5-Jun-10 9:39 
QuestionRendering a page break in WinForms RichTextBox Pin
The Man from U.N.C.L.E.5-Jun-10 9:06
The Man from U.N.C.L.E.5-Jun-10 9:06 
AnswerRe: Rendering a page break in WinForms RichTextBox Pin
Luc Pattyn5-Jun-10 10:24
sitebuilderLuc Pattyn5-Jun-10 10:24 
GeneralRe: Rendering a page break in WinForms RichTextBox Pin
The Man from U.N.C.L.E.5-Jun-10 11:10
The Man from U.N.C.L.E.5-Jun-10 11:10 
GeneralRe: Rendering a page break in WinForms RichTextBox Pin
Luc Pattyn5-Jun-10 11:36
sitebuilderLuc Pattyn5-Jun-10 11:36 
QuestionProblem with Listview,help! Pin
imbiz5-Jun-10 7:31
imbiz5-Jun-10 7:31 
AnswerRe: Problem with Listview,help! Pin
Henry Minute5-Jun-10 8:05
Henry Minute5-Jun-10 8:05 
AnswerRe: Problem with Listview,help! Pin
Luc Pattyn5-Jun-10 8:07
sitebuilderLuc Pattyn5-Jun-10 8:07 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.