如何在c#中连接和发送数据到串口? [英] how can connect and send data to serial port in c#

查看:108
本文介绍了如何在c#中连接和发送数据到串口?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在串口中访问

什么代码

任何人都知道如何???

in c#



和win 7 32bit





plz help

解决方案

一些有用的链接 [ ^ ]。


您好,



看看这里:

使用C#和Whidbey进行串行通信 [ ^ ]

串行端口通信 [ ^ ]

http://www.c-sharpcorner.com/uploadfile/eclipsed4utoo/communicating-with-serial-port-in-C -Sharp / [ ^ ]

http://www.dreamincode.net/forums/topic/35775-serial-port-communication-in-c%23/ [ ^ ]

使用C#改善串行端口的性能 [ ^ ]


Hi


试试这个:

  //  作者:Jegan Thiyagesan  
// 日期:12/02/2013

使用系统;
使用 System.IO.Ports;

命名空间 PortHandler
{
/// < 摘要 >
/// 处理接收和发送数据的端口处理程序通过串口。
/// < / summary >
public class PortHandler
{
private const string Delimiter = \r;
private const string Rx = Rx<<;
private const string Tx = Tx>>;

private string m_data;
private SerialPort m_serialPort;

/// < 摘要 >
/// 数据接收事件处理程序
/// < / summary >
public event EventHandler< EventArgs< string>> DataReceived;
/// < 摘要 >
/// 数据发送事件处理程序
/// < / summary >
public event EventHandler< EventArgs< string>> DataSend;

/// < 摘要 >
/// 错误消息事件处理程序
/// < / summary >
public event EventHandler< EventArgs< string>>错误信息;

/// < 摘要 >
/// 启动收到的数据事件
/// < / summary >
/// < ; param name =dataReceived > < / param >
public void OnDataReceived( string dataReceived)
{
var handler = DataReceived;
if (handler!= null
{
handler( new EventArgs< string>(dataReceived));
}
}
/// < 摘要 >
/// 启动数据发送事件
/// < / summary >
/// < param name =dataSend > < / param >
public void OnDataSend( string dataSend)
{
var handler = DataSend;
if (handler!= null
{
handler( new EventArgs< string>(dataSend));
}
}

/// < 摘要 >
/// 启动错误消息事件。
/// < / summary >
/// < param < span class =code-summarycomment> name =errorMessage > < / param >
public void OnErrorMessage( string errorMessage)
{
var handler = ErrorMessage;
if (handler!= null
{
handler( new EventArgs< string>(errorMessage));
}
}

/// < 摘要 >
/// 返回可用端口的集合
/// < / summary < span class =code-summarycomment>>
public string [] Ports
{
get
{
return SerialPort.GetPortNames();
}
}

/// < 摘要 >
/// check is port open
/ // < / summary >
public bool IsPortOpen
{
get
{
return (m_serialPort!= null && m_serialPort.IsOpen);
}
}

/// < 摘要 >
/// 基本构造函数
/// < / summary >
public PortHandler()
{
}

/// < < span class =code-summarycomment>摘要 >
// / 断开端口
/// < span class =code-summarycomment>< / summary >
public void DisconnectPort()
{
if (m_serialPort!= null
{
CloseSerialPort();
}
}

/// < 摘要 >
/// 连接端口
/// < / summary >
/// < param name =portName > < / param >
/// < param name =baudRate > < / param >
public bool ConnectPort( string portName, int baudRate)
{
if (m_serialPort == null
{
m_serialPort = new SerialPort
{
PortName = portName,
BaudRate = baudRate,
Parity = Parity.None,
StopBits = StopBits.One,
DataBits = 8
Handshake = Handshake.None,
ReadTimeout = 500 // 500 ms
};

}
else
{
CloseSerialPort();
m_serialPort.PortName = portName;
m_serialPort.BaudRate = baudRate;
}
OpenSerialPort();
return IsPortOpen;
}

/// < 摘要 >
/// 通过端口发送数据
/// < / summary >
/// < param name =data > < / PARAM >
public void SendData( string data)
{
if ( (m_serialPort!= null )&& m_serialPort.IsOpen)
{
m_serialPort.DiscardOutBuffer();
m_serialPort.Write(data + Delimiter);
OnDataSend(Tx + data + Delimiter);
}
}

私有 void OpenSerialPort( )
{
try
{
m_serialPort.DataReceived + = SerialPortDataReceived;
m_serialPort.Open();
}
catch (例外情况)
{
System.Diagnostics.Debug.WriteLine(ex.Message + ex) 。堆栈跟踪);
}
}

私有 void CloseSerialPort( )
{
if (m_serialPort.IsOpen)
{
m_serialPort.DataReceived - = SerialPortDataReceived;
m_serialPort.Close();
}
}

私有 void SerialPortDataReceived( object sender,SerialDataReceivedEventArgs e)
{
var serialPort =(SerialPort)sender ;
var data = serialPort.ReadExisting();
ProcessData(数据);
}

private void ProcessData( string data)
{
Console.Out.WriteLine(data + \r);
}
}
}





问候

jegan


i need to access in serial port
what the code
any one know about how ???
in c#

and win 7 32bit


plz help

解决方案

Some useful links[^].


Hi,

Have a look here:
Serial Communication using C# and Whidbey[^]
Serial Port Communication[^]
http://www.c-sharpcorner.com/uploadfile/eclipsed4utoo/communicating-with-serial-port-in-C-Sharp/[^]
http://www.dreamincode.net/forums/topic/35775-serial-port-communication-in-c%23/[^]
Improving the Performance of Serial Ports Using C#[^]


Hi
try this:

// Author: Jegan Thiyagesan
// Date: 12/02/2013

using System;
using System.IO.Ports;

namespace PortHandler
{
        /// <summary>
    /// Port handler that handles receiving and sending data over serial port.
        /// </summary>
    public class PortHandler
    {
        private const string Delimiter = "\r";
        private const string Rx = "Rx << ";
        private const string Tx = "Tx >> ";

        private string m_data;
        private SerialPort m_serialPort;

        /// <summary>
        /// Data received event handler
        /// </summary>
        public event EventHandler<EventArgs<string>> DataReceived;
        /// <summary>
        /// Data send event handler
        /// </summary>
        public event EventHandler<EventArgs<string>> DataSend;

        /// <summary>
        /// Error message event handler
        /// </summary>
        public event EventHandler<EventArgs<string>> ErrorMessage;

        /// <summary>
        /// Initiate data received event
        /// </summary>
        /// <param name="dataReceived"></param>
        public void OnDataReceived(string dataReceived)
        {
            var handler = DataReceived;
            if (handler != null)
            {
                handler(this, new EventArgs<string>(dataReceived));
            }
        }
        /// <summary>
        /// Initiate data send event
        /// </summary>
        /// <param name="dataSend"></param>
        public void OnDataSend(string dataSend)
        {
            var handler = DataSend;
            if (handler != null)
            {
                handler(this, new EventArgs<string>(dataSend));
            }
        }

        /// <summary>
        /// Initiate error message event.
        /// </summary>
        /// <param name="errorMessage"></param>
        public void OnErrorMessage(string errorMessage)
        {
            var handler = ErrorMessage;
            if (handler != null)
            {
                handler(this, new EventArgs<string>(errorMessage));
            }
        }

        /// <summary>
        /// return collections of available ports
        /// </summary>
        public string[] Ports
        {
            get
            {
                return SerialPort.GetPortNames();
            }
        }

        /// <summary>
        /// check is port open
        /// </summary>
        public bool IsPortOpen
        {
            get
            {
                return (m_serialPort != null && m_serialPort.IsOpen);
            }
        }

        /// <summary>
        /// basic constructor
        /// </summary>
        public PortHandler()
        {
        }

        /// <summary>
        /// Disconnect port
        /// </summary>
        public void DisconnectPort()
        {
            if (m_serialPort != null)
            {
                CloseSerialPort();
            }
        }

        /// <summary>
        /// Connect port
        /// </summary>
        /// <param name="portName"></param>
        /// <param name="baudRate"></param>
        public bool ConnectPort(string portName, int baudRate)
        {
            if (m_serialPort == null)
            {
                m_serialPort = new SerialPort
                                   {
                                       PortName = portName,
                                       BaudRate = baudRate,
                                       Parity = Parity.None,
                                       StopBits = StopBits.One,
                                       DataBits = 8,
                                       Handshake = Handshake.None,
                                       ReadTimeout = 500 //500 ms
                                   };

            }
            else
            {
                CloseSerialPort();
                m_serialPort.PortName = portName;
                m_serialPort.BaudRate = baudRate;
            }
            OpenSerialPort();
            return IsPortOpen;
        }

        /// <summary>
        /// Send data over port
        /// </summary>
        /// <param name="data"></param>
        public void SendData(string data)
        {
            if ((m_serialPort != null) && m_serialPort.IsOpen)
            {
                m_serialPort.DiscardOutBuffer();
                m_serialPort.Write(data + Delimiter);
                OnDataSend(Tx + data + Delimiter);
            }
        }

        private void OpenSerialPort()
        {
            try
            {
                m_serialPort.DataReceived += SerialPortDataReceived;
                m_serialPort.Open();
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message + ex.StackTrace);
            }
        }

        private void CloseSerialPort()
        {
            if (m_serialPort.IsOpen)
            {
                m_serialPort.DataReceived -= SerialPortDataReceived;
                m_serialPort.Close();
            }
        }

        private void SerialPortDataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            var serialPort = (SerialPort)sender;
            var data = serialPort.ReadExisting();
            ProcessData(data);
        }

        private void ProcessData(string data)
        {
            Console.Out.WriteLine(data + "\r");
        }
    }
}



Regards
jegan


这篇关于如何在c#中连接和发送数据到串口?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆