110,533
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.IO.Ports;
using System.Text;
using System.Windows.Forms;
namespace COMTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private SerialPort sp = new SerialPort();
private void btnOpen_Click(object sender, EventArgs e)
{
sp.PortName = "COM2";
sp.BaudRate = 9600;
sp.DataBits = 8;
sp.StopBits = StopBits.One;
sp.Parity = Parity.None;
sp.ReadTimeout = 1000;
sp.ReceivedBytesThreshold = 1;
if (!sp.IsOpen)
sp.Open();
sp.DataReceived += Sp_DataReceived;
btnOpen.Enabled = false;
}
private void Sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] data = new byte[sp.BytesToRead];
sp.Read(data, 0, data.Length);
sp.DiscardInBuffer();
UpdateTextBox(texRev, Encoding.Default.GetString(data));
}
private void btnSend_Click(object sender, EventArgs e)
{
byte[] data = Encoding.Default.GetBytes(texData.Text);
sp.Write(data, 0, data.Length);
}
private void UpdateTextBox(TextBox sender, string content)
{
this.Invoke((EventHandler) delegate
{
sender.AppendText(content + Environment.NewLine);
});
}
}
}
private void Sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] data = new byte[sp.BytesToRead];
sp.Read(data, 0, data.Length);
sp.DiscardInBuffer();
UpdateTextBox(texRev, Encoding.Default.GetString(data));
}
private void UpdateTextBox(TextBox sender, string content)
{
this.Invoke((EventHandler) delegate
{
sender.AppendText(content + ++num + Environment.NewLine);
});
}