如何在c#中连接和发送数据到串口? [英] how can connect and send data to serial port in c#
本文介绍了如何在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屋!
查看全文