- 工具
VSPD虚拟串口工具——https://blog.csdn.net/qq_34202873/article/details/88391265
Serial Port Utility——https://blog.csdn.net/m0_37697335/article/details/81633597?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159644012219725250140529%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=159644012219725250140529&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v3~pc_rank_v3-1-81633597.pc_ecpm_v3_pc_rank_v3&utm_term=Serial+Port+Utility&spm=1018.2118.3001.4187 - 使用vscode创建C# Windows窗体应用程序
使用控件包括button、textbox、comboBox、serialport,修改控件name。 - 代码块
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
foreach (string s in System.IO.Ports.SerialPort.GetPortNames())//获取当前计算机的串行端口名的数组
{
cbSerial.Items.Add(s);//添加到对应的下拉列表中
}
}
private void btnOpen_Click(object sender, EventArgs e)
{
try
{
if (serialPort1.IsOpen)
{
serialPort1.Close(); //关闭串口
btnOpen.Text = "打开串口";
}
else
{
serialPort1.Open(); //打开串口
btnOpen.Text = "关闭串口";
}
}
catch (Exception ex)
{
serialPort1 = new System.IO.Ports.SerialPort();//捕获到异常,创建一个新的对象,之前的不可以再用
MessageBox.Show(ex.Message);
}
}
private void btnSend_Click(object sender, EventArgs e)
{
try
{
if (serialPort1.IsOpen)
{
serialPort1.WriteLine(txtSend.Text);
}
}
catch (Exception ex)
{
serialPort1 = new System.IO.Ports.SerialPort();
MessageBox.Show(ex.Message);
}
}
private void SerialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
try
{
//使用invoke方式同步ui
this.Invoke((EventHandler)(delegate
{
txtReceive.AppendText(serialPort1.ReadExisting() + "\r\n");//换行
}
)
);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
- 操作
第一步创建一对虚拟串口
第二步,运行程序,打开COM1。使用串口助手选择COM2,并打开。此时可互相通信。