使ç¨System.IO.Port.SerialPortç±»å®ç°ä¸²å£éä¿¡
System.IO.Port.SerialPortç±»ä»ç»
System.IO.Port.SerialPortæ¯.NET Frameworkæä¾çæä½ä¸²è¡ç«¯å£çç±»ï¼éé¢æä¾äºä¸äºæ¹æ³ãå±æ§ååäºä»¶ä¾å¼åè è°ç¨æä½ä¸²å£ã
è°ç¨æµç¨
1. ç´æ¥è°ç¨SerialPortçéææ¹æ³GetPortNames()è·åå½å计ç®æºç串è¡ç«¯å£å称æ°ç»
2.æ ¹æ®ä¸²å£å称ï¼åå§åSerialPort对象ï¼è®¾ç½®åæ°ï¼è°ç¨Open()æ¹æ³æå¼ä¸²å£
3.è°ç¨Write()æ¹æ³åéæ°æ®
4.注åæ¥æ¶æ°æ®ççå¬ï¼è·åæ°æ®ï¼æè å¦èµ·çº¿ç¨å¾ªç¯è¯»åæ¥æ¶æ°æ®ï¼æ¬æ使ç¨æ³¨åçå¬æ¹å¼æ¥æ¶æ°æ®ï¼
å ·ä½ä»£ç å®ç°
using System;
using System.IO.Ports;
using System.Text;
namespace PortControlDemo
{
public class PortControlHelper
{
#region å段/å±æ§/å§æ
/// <summary>
/// 串è¡ç«¯å£å¯¹è±¡
/// </summary>
private SerialPort sp;
/// <summary>
/// 串å£æ¥æ¶æ°æ®å§æ
/// </summary>
public delegate void ComReceiveDataHandler(string data);
public ComReceiveDataHandler OnComReceiveDataHandler = null;
/// <summary>
/// 端å£å称æ°ç»
/// </summary>
public string[] PortNameArr { get; set; }
/// <summary>
/// 串å£éä¿¡å¼å¯ç¶æ
/// </summary>
public bool PortState { get; set; } = false;
/// <summary>
/// ç¼ç ç±»å
/// </summary>
public Encoding EncodingType { get; set; } = Encoding.ASCII;
#endregion
#region æ¹æ³
public PortControlHelper()
{
PortNameArr = SerialPort.GetPortNames();
sp = new SerialPort();
sp.DataReceived += new SerialDataReceivedEventHandler(DataReceived);
}
/// <summary>
/// æå¼ç«¯å£
/// </summary>
/// <param name="portName">端å£å称</param>
/// <param name="boudRate">æ³¢ç¹ç</param>
/// <param name="dataBit">æ°æ®ä½</param>
/// <param name="stopBit">åæ¢ä½</param>
/// <param name="timeout">è¶
æ¶æ¶é´</param>
public void OpenPort(string portName , int boudRate = 115200, int dataBit = 8, int stopBit = 1, int timeout = 5000)
{
try
{
sp.PortName = portName;
sp.BaudRate = boudRate;
sp.DataBits = dataBit;
sp.StopBits = (StopBits)stopBit;
sp.ReadTimeout = timeout;
sp.Open();
PortState = true;
}
catch (Exception e)
{
throw e;
}
}
/// <summary>
/// å
³é端å£
/// </summary>
public void ClosePort()
{
try
{
sp.Close();
PortState = false;
}
catch (Exception e)
{
throw e;
}
}
/// <summary>
/// åéæ°æ®
/// </summary>
/// <param name="sendData"></param>
public void SendData(string sendData)
{
try
{
sp.Encoding = EncodingType;
sp.Write(sendData);
}
catch (Exception e)
{
throw e;
}
}
/// <summary>
/// æ¥æ¶æ°æ®åè°ç¨
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] buffer = new byte[sp.BytesToRead];
sp.Read(buffer, 0, buffer.Length);
string str = EncodingType.GetString(buffer);
if (OnComReceiveDataHandler != null)
{
OnComReceiveDataHandler(str);
}
}
#endregion
}
}
View Code
ä¸ãç¼åWinform串å£éä¿¡å·¥å ·çé¢
çé¢é¢è§