Click here to Skip to main content
15,887,027 members
Home / Discussions / C#
   

C#

 
AnswerRe: write to app.config through c# Pin
Estys11-Mar-10 23:36
Estys11-Mar-10 23:36 
QuestionSerial Port Pin
Deepak.Prahlad11-Mar-10 22:14
Deepak.Prahlad11-Mar-10 22:14 
AnswerMessage Closed Pin
11-Mar-10 22:37
stancrm11-Mar-10 22:37 
GeneralRe: Serial Port Pin
Deepak.Prahlad11-Mar-10 22:50
Deepak.Prahlad11-Mar-10 22:50 
GeneralMessage Closed Pin
12-Mar-10 0:06
stancrm12-Mar-10 0:06 
GeneralRe: Serial Port Pin
Deepak.Prahlad12-Mar-10 0:25
Deepak.Prahlad12-Mar-10 0:25 
GeneralRe: Serial Port Pin
OriginalGriff12-Mar-10 1:46
mveOriginalGriff12-Mar-10 1:46 
AnswerRe: Serial Port Pin
DotNetCoderJunior12-Mar-10 2:08
DotNetCoderJunior12-Mar-10 2:08 
Here is a nice Com Class that you can use.

using System;
using System.IO.Ports; 
using System.Runtime.Remoting.Messaging; 
using System.Drawing;
using System.Windows.Forms;
using System.Threading;
namespace ModemAPP
{    
    /// <summary>
    /// Routines for finding and accessing COM ports.
    /// </summary>

    public class ComPorts  
    {  
        private const string ModuleName = "ComPorts"; 
        
        //  Shared members - do not belong to a specific instance of the class.
        
        internal static bool comPortExists; 
        internal static string[] myPortNames; 
        internal static string noComPortsMessage = "No COM ports found. Please attach a COM-port device."; 
        
        internal delegate void UserInterfaceDataEventHandler( string action, string formText, Color textColor ); 
        internal static event UserInterfaceDataEventHandler UserInterfaceData;

        internal delegate void UserInterfaceResultEventHandler(string strResult);
        internal static event UserInterfaceResultEventHandler NumberCrunchInterface; 
        
        //  Non-shared members - belong to a specific instance of the class.
        
        internal delegate void SerialDataReceivedEventHandlerDelegate( object sender, SerialDataReceivedEventArgs e );
        internal delegate void SerialErrorReceivedEventHandlerDelegate( object sender, SerialErrorReceivedEventArgs e );
        internal delegate bool WriteToComPortDelegate( string textToWrite );
        internal delegate bool ReadComPortDelegate();
        delegate void SetTextDeleg(string text);      
        internal WriteToComPortDelegate WriteToComPortDelegate1;
        internal ReadComPortDelegate ReadComPortDelegate1;
        
        //  Local variables available as Properties.

        private bool m_ParameterChanged;
        private bool m_PortChanged;
        private bool m_PortOpen;
        private SerialPort m_PreviousPort = new SerialPort();
        private int m_ReceivedDataLength;
        private int m_SavedBitRate = 9600;
        private Handshake m_SavedHandshake = Handshake.None ;
        private string m_SavedPortName = "";
        private SerialPort m_SelectedPort = new SerialPort();
        
               
        internal bool ParameterChanged 
        { 
            get 
            { 
                return m_ParameterChanged; 
            } 
            set 
            { 
                m_ParameterChanged = value; 
            } 
        }
        
        
        internal bool PortChanged 
        { 
            get 
            { 
                return m_PortChanged; 
            } 
            set 
            { 
                m_PortChanged = value; 
            } 
        }         
      
        internal bool PortOpen 
        { 
            get 
            { 
                return m_PortOpen; 
            } 
            set 
            { 
                m_PortOpen = value; 
            } 
        }         
       
        internal SerialPort PreviousPort 
        { 
            get 
            { 
                return m_PreviousPort; 
            } 
            set 
            { 
                m_PreviousPort = value; 
            } 
        }         
       
        internal int ReceivedDataLength 
        { 
            get 
            { 
                return m_ReceivedDataLength; 
            } 
            set 
            { 
                m_ReceivedDataLength = value; 
            } 
        }         
       
        internal int SavedBitRate 
        { 
            get 
            { 
                return m_SavedBitRate; 
            } 
            set 
            { 
                m_SavedBitRate = value; 
            } 
        }         
        
        internal Handshake SavedHandshake 
        { 
            get 
            { 
                return m_SavedHandshake; 
            } 
            set 
            { 
                m_SavedHandshake = value; 
            } 
        }         
       
        internal string SavedPortName 
        { 
            get 
            { 
                return m_SavedPortName; 
            } 
            set 
            { 
                m_SavedPortName = value; 
            } 
        }         
       
        internal SerialPort SelectedPort 
        { 
            get 
            { 
                return m_SelectedPort; 
            } 
            set 
            { 
                m_SelectedPort = value; 
            } 
        } 
        
        private SerialDataReceivedEventHandler SerialDataReceivedEventHandler1;        
        private SerialErrorReceivedEventHandler SerialErrorReceivedEventHandler1; 
        
        /// <summary>
        /// If the COM port is open, close it.
        /// </summary>
        /// 
        /// <param name="portToClose"> the SerialPort object to close </param>  

        internal void CloseComPort( SerialPort portToClose ) 
        { 
            try 
            { 
                if ( null != UserInterfaceData ) UserInterfaceData( "DisplayStatus", "", Color.Black ); 
                
                object transTemp0 = portToClose; 
                if (  !(  transTemp0 == null ) ) 
                {                     
                    if ( portToClose.IsOpen ) 
                    {                         
                        portToClose.Close(); 
                        if ( null != UserInterfaceData ) UserInterfaceData( "DisplayCurrentSettings", "", Color.Black );                         
                    } 
                }                
           }
                                      
            catch ( InvalidOperationException ex ) 
            {                 
                ParameterChanged = true; 
                PortChanged = true; 
                DisplayException( ModuleName, ex );                 
            } 
            catch ( UnauthorizedAccessException ex ) 
            {                 
                ParameterChanged = true; 
                PortChanged = true; 
                DisplayException( ModuleName, ex );                 
            } 
            catch ( System.IO.IOException ex ) 
            {                 
                ParameterChanged = true; 
                PortChanged = true; 
                DisplayException( ModuleName, ex ); 
            }             
        } 

        /// <summary>
        /// Called when data is received on the COM port.
        /// Reads and displays the data.
        /// See FindPorts for the AddHandler statement for this routine.
        /// </summary>
                
        internal void DataReceived( object sender, SerialDataReceivedEventArgs e ) 
        {
            
            string newReceivedData = null;
            try
            {
                //  Get data from the COM port.
                Thread.Sleep(200);
                newReceivedData = SelectedPort.ReadExisting();
                Thread.Sleep(100);

                if (null != UserInterfaceData) UserInterfaceData("Dialing","",Color.Black);


                if (newReceivedData.Length > 6)
                {
                    if (null != UserInterfaceData) UserInterfaceData("RetrievingResults", "", Color.Black);
                    NumberCrunchInterface(newReceivedData);
                }
                    

            }
            catch (Exception ex)
            {
                DisplayException(ModuleName, ex);
            }  
        }
        

        /// <summary>
        /// Provide a central mechanism for displaying exception information.
        /// Display a message that describes the exception.
        /// </summary>
        /// 
        /// <param name="ex"> The exception </param> 
        /// <param name="moduleName" > the module where the exception was raised. </param>
        
        private void DisplayException( string moduleName, Exception ex ) 
        {
            string errorMessage = null; 
            
            errorMessage = "Exception: " + ex.Message + " Module: " + moduleName + ". Method: " + ex.TargetSite.Name; 
            
            if ( null != UserInterfaceData ) UserInterfaceData( "DisplayStatus", errorMessage, Color.Red ); 
            
            //  To display errors in a message box, uncomment this line:
            //  MessageBox.Show(errorMessage)
        }        

        /// <summary>
        /// Respond to error events.
        /// </summary>
        
        private void ErrorReceived( object sender, SerialErrorReceivedEventArgs e ) 
        { 
            SerialError SerialErrorReceived1 = 0; 
            
            SerialErrorReceived1 = e.EventType; 
            
            switch ( SerialErrorReceived1 ) 
            {
                case SerialError.Frame:
                    Console.WriteLine( "Framing error." ); 
                    
                    break;
                case SerialError.Overrun:
                    Console.WriteLine( "Character buffer overrun." ); 
                    
                    break;
                case SerialError.RXOver:
                    Console.WriteLine( "Input buffer overflow." ); 
                    
                    break;
                case SerialError.RXParity:
                    Console.WriteLine( "Parity error." ); 
                    
                    break;
                case SerialError.TXFull:
                    Console.WriteLine( "Output buffer full." ); 
                    break;
            }            
        }         

        /// <summary>
        /// Find the PC's COM ports and store parameters for each port.
        /// Use saved parameters if possible, otherwise use default values.  
        /// </summary>
        /// 
        /// <remarks> 
        /// The ports can change if a USB/COM-port converter is attached or removed,
        /// so this routine may need to run multiple times.
        /// </remarks>
        
       internal static void FindComPorts() 
        { 
            myPortNames = SerialPort.GetPortNames(); 
            
            //  Is there at least one COM port?
            
            if ( myPortNames.Length > 0 ) 
            {                 
                comPortExists = true; 
                Array.Sort( myPortNames );                 
            } 
            else 
            { 
                //  No COM ports found.
                
                comPortExists = false; 
            }             
        } 

        /// <summary>
        /// Open the SerialPort object selectedPort.
        /// If open, close the SerialPort object previousPort.
        /// </summary>
                
        internal bool OpenComPort() 
        { 
            bool success = false;
            SerialDataReceivedEventHandler1 = new SerialDataReceivedEventHandler(DataReceived);
            SerialErrorReceivedEventHandler1 = new SerialErrorReceivedEventHandler(ErrorReceived); 

            try 
            { 
                if ( comPortExists ) 
                {                     
                    //  The system has at least one COM port.
                    //  If the previously selected port is still open, close it.
                    
                    if ( PreviousPort.IsOpen ) 
                    { 
                        CloseComPort( PreviousPort ); 
                    } 
                    
                    if ( ( !( ( SelectedPort.IsOpen ) ) | PortChanged ) ) 
                    {                         
                        SelectedPort.Open(); 
                        
                        if ( SelectedPort.IsOpen ) 
                        {                             
                            //  The port is open. Set additional parameters.
                            //  Timeouts are in milliseconds.
                            
                            SelectedPort.ReadTimeout = 20000; 
                            SelectedPort.WriteTimeout = 20000; 
                            
                            //  Specify the routines that run when a DataReceived or ErrorReceived event occurs.
                           
                            SelectedPort.DataReceived += SerialDataReceivedEventHandler1; 
                            SelectedPort.ErrorReceived += SerialErrorReceivedEventHandler1; 
                           
                            //  Send data to other modules.
                            
                            if ( null != UserInterfaceData ) UserInterfaceData( "DisplayCurrentSettings", "", Color.Black ); 
                            if ( null != UserInterfaceData ) UserInterfaceData( "DisplayStatus", "", Color.Black ); 
                            
                            success = true; 
                            
                            //  The port is open with the current parameters.
                            
                            PortChanged = false;                             
                        } 
                    }                    
                }                 
            }
            
            catch ( InvalidOperationException ex ) 
            {                 
                ParameterChanged = true; 
                PortChanged = true; 
                DisplayException( ModuleName, ex );                 
            } 
            catch ( UnauthorizedAccessException ex ) 
            {                 
                ParameterChanged = true; 
                PortChanged = true; 
                DisplayException( ModuleName, ex );                 
            } 
            catch ( System.IO.IOException ex ) 
            {                 
                ParameterChanged = true; 
                PortChanged = true; 
                DisplayException( ModuleName, ex ); 
            } 
            
            return success;             
        } 

        /// <summary>
        ///  Executes when WriteToComPortDelegate1 completes.
        /// </summary>
        /// <param name="ar"> the value returned by the delegate's BeginInvoke method </param> 
                
        internal void WriteCompleted( IAsyncResult ar ) 
        {   
            WriteToComPortDelegate deleg = null; 
            string msg = null; 
            bool success = false; 
            
            //  Extract the value returned by BeginInvoke (optional).
            
            msg = System.Convert.ToString( ar.AsyncState ); 
            
            //  Get the value returned by the delegate.
            
            deleg = ( ( WriteToComPortDelegate )( ( ( AsyncResult )( ar ) ).AsyncDelegate ) ); 
            
            success = deleg.EndInvoke( ar );
            if ( success ) 
            { 
                if ( null != UserInterfaceData ) UserInterfaceData( "UpdateStatusLabel", "", Color.Black ); 
            } 
           
        }
        internal void ReadComplete(IAsyncResult ar)
        {
            ReadComPortDelegate deleg = null;
            string msg = null;
            bool success = false;

            //  Extract the value returned by BeginInvoke (optional).

            msg = System.Convert.ToString(ar.AsyncState);

            //  Get the value returned by the delegate.

            deleg = ((ReadComPortDelegate)(((AsyncResult)(ar)).AsyncDelegate));

            success = deleg.EndInvoke(ar);

            if (success)
            {
                if (null != UserInterfaceData) UserInterfaceData("UpdateStatusLabel", "", Color.Black);
            }

            //  Add any actions that need to be performed after a write to the COM port completes.
            //  This example displays the value passed to the BeginInvoke method
            //  and the value returned by EndInvoke.

            Console.WriteLine("Write operation began: " + msg);
            Console.WriteLine("Write operation succeeded: " + success);
        }

        /// <summary>
        /// Write a string to the SerialPort object selectedPort.
        /// </summary>
        /// 
        /// <param name="textToWrite"> A string to write </param>
                
        internal bool WriteToComPort( string textToWrite ) 
        { 
            bool success = false;
           
            try 
            { 
                //  Open the COM port if necessary.
                
                if ( ( !( ( SelectedPort == null ) ) ) ) 
                { 
                    if ( ( ( !( SelectedPort.IsOpen ) ) | PortChanged ) ) 
                    {                         
                        //  Close the port if needed and open the selected port.
                        
                        PortOpen = OpenComPort();                         
                    } 
                } 
                
                if ( SelectedPort.IsOpen ) 
                { 
                    SelectedPort.Write( textToWrite ); 
                    success = true;

                }                 
            }           
            catch ( TimeoutException ex ) 
            { 
                DisplayException( ModuleName, ex ); 
                
            } 
            catch ( InvalidOperationException ex ) 
            { 
                DisplayException( ModuleName, ex ); 
                ParameterChanged = true; 
                if ( null != UserInterfaceData ) UserInterfaceData( "DisplayCurrentSettings", "", Color.Black );                 
            } 
            catch ( UnauthorizedAccessException ex ) 
            { 
                DisplayException( ModuleName, ex ); 
                
                //  This exception can occur if the port was removed. 
                //  If the port was open, close it.
                
                CloseComPort( SelectedPort ); 
                ParameterChanged = true; 
                if ( null != UserInterfaceData ) UserInterfaceData( "DisplayCurrentSettings", "", Color.Black );                 
            }             
            return success;             
        }
        internal string ReadComPort()
        {
            bool success = false;
            string dataReadToDisplay = null;
            try
            {
                //  Open the COM port if necessary.

                if ((!((SelectedPort == null))))
                {
                    if (((!(SelectedPort.IsOpen)) | PortChanged))
                    {
                        //  Close the port if needed and open the selected port.

                        PortOpen = OpenComPort();
                    }
                }

                if (SelectedPort.IsOpen)
                {
                    //int iRead = SelectedPort.BytesToRead;
                    //byte[] a_byteArray = new byte[iRead];
                    //int iNread = 0;
                    //iNread = SelectedPort.Read(a_byteArray, 0, iRead);
                    //dataReadToDisplay = "";
                    //foreach (byte b in a_byteArray)
                    //{

                    //    dataReadToDisplay += b.ToString() + " ";

                    //}
                    dataReadToDisplay = SelectedPort.ReadLine();
                    success = true;
                }
            }
            catch (TimeoutException ex)
            {
                DisplayException(ModuleName, ex);

            }
            catch (InvalidOperationException ex)
            {
                DisplayException(ModuleName, ex);
                ParameterChanged = true;
                if (null != UserInterfaceData) UserInterfaceData("DisplayCurrentSettings", "", Color.Black);
            }
            catch (UnauthorizedAccessException ex)
            {
                DisplayException(ModuleName, ex);

                //  This exception can occur if the port was removed. 
                //  If the port was open, close it.

                CloseComPort(SelectedPort);
                ParameterChanged = true;
                if (null != UserInterfaceData) UserInterfaceData("DisplayCurrentSettings", "", Color.Black);
            }
            return dataReadToDisplay;
        }           
    }     
} 

AnswerRe: Serial Port Pin
Luc Pattyn12-Mar-10 2:51
sitebuilderLuc Pattyn12-Mar-10 2:51 
AnswerRe: Serial Port Pin
PIEBALDconsult12-Mar-10 3:45
mvePIEBALDconsult12-Mar-10 3:45 
GeneralRe: Serial Port Pin
Deepak.Prahlad14-Mar-10 17:59
Deepak.Prahlad14-Mar-10 17:59 
QuestionMouseEnter and MouseLeave not working if Enabled=false Pin
stancrm11-Mar-10 22:01
stancrm11-Mar-10 22:01 
AnswerRe: MouseEnter and MouseLeave not working if Enabled=false Pin
#realJSOP12-Mar-10 1:48
mve#realJSOP12-Mar-10 1:48 
AnswerRe: MouseEnter and MouseLeave not working if Enabled=false Pin
Dave Kreskowiak12-Mar-10 3:42
mveDave Kreskowiak12-Mar-10 3:42 
GeneralRe: MouseEnter and MouseLeave not working if Enabled=false [modified] Pin
#realJSOP12-Mar-10 5:41
mve#realJSOP12-Mar-10 5:41 
GeneralRe: MouseEnter and MouseLeave not working if Enabled=false Pin
Dave Kreskowiak12-Mar-10 7:04
mveDave Kreskowiak12-Mar-10 7:04 
GeneralRe: MouseEnter and MouseLeave not working if Enabled=false Pin
#realJSOP12-Mar-10 12:03
mve#realJSOP12-Mar-10 12:03 
GeneralRe: MouseEnter and MouseLeave not working if Enabled=false Pin
Dave Kreskowiak12-Mar-10 12:15
mveDave Kreskowiak12-Mar-10 12:15 
AnswerRe: MouseEnter and MouseLeave not working if Enabled=false Pin
The Man from U.N.C.L.E.12-Mar-10 8:25
The Man from U.N.C.L.E.12-Mar-10 8:25 
Questionmultiple textbox text save in one field Pin
mjawadkhatri11-Mar-10 19:41
mjawadkhatri11-Mar-10 19:41 
QuestionRe: multiple textbox text save in one field Pin
Calla11-Mar-10 20:20
Calla11-Mar-10 20:20 
AnswerRe: multiple textbox text save in one field Pin
mjawadkhatri11-Mar-10 20:34
mjawadkhatri11-Mar-10 20:34 
GeneralRe: multiple textbox text save in one field Pin
Calla11-Mar-10 20:40
Calla11-Mar-10 20:40 
GeneralRe: multiple textbox text save in one field Pin
mjawadkhatri11-Mar-10 20:46
mjawadkhatri11-Mar-10 20:46 
GeneralRe: multiple textbox text save in one field Pin
Calla11-Mar-10 20:55
Calla11-Mar-10 20:55 

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.