手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

c#利用SerialPort 控件实现PC与PC串口通信

时间:2024-10-17 03:03:23

1、新建一个项目添加 5 个Label控件、 3个button控件、2个 SerialPort、2个textbox、1个timer

c#利用SerialPort 控件实现PC与PC串口通信

2、根据下表设定好控件属性

c#利用SerialPort 控件实现PC与PC串口通信

3、//程序所有代码//复制下列代码到visual studio中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.Collections;using System.Diagnostics;namespace 利用SerialPort_控件实现PC与PC串口通信{ //需要两台计算机同时运行该软件 //若没有两台计算机,可以通过安装虚拟串口工具 Virtual Serial Port Driver //本例就是通过 Virtual Serial Port Driver 工具模拟 public partial class COMForm : Form { public COMForm() { InitializeComponent(); } //定义变量 public string strPortName1; public string strPortName2; public int strBaudRate; public string data; //初始化串口 private void COMForm_Load(object sender, EventArgs e) { //获取电脑串口号,加载到选择框中 CmbPortName1.DataSource = System.IO.Ports.SerialPort.GetPortNames(); CmbPortName2.DataSource = System.IO.Ports.SerialPort.GetPortNames(); //获取波特率 CmbBaudRate.SelectedIndex = 1; CmdCloseSerialPort.Enabled = false ; } //打开串口 private void CmdOpenSerialPort_Click(object sender, EventArgs e) { CmdOpenSerialPort.Enabled = false; CmdCloseSerialPort.Enabled = true; //获取串口名 strPortName1 = CmbPortName1.SelectedItem.ToString(); strPortName2 = CmbPortName2.SelectedItem.ToString(); //获取波特率 strBaudRate = Convert.ToInt32(CmbBaudRate.SelectedItem.ToString()); //打开串口 serialPort1.PortName = strPortName1; serialPort1.BaudRate = strBaudRate; //若串口1已打开,则返回 serialPort1.Open(); //打开串口 serialPort2.PortName = strPortName2; serialPort2.BaudRate = strBaudRate; serialPort2.Open(); //如果打开成功,则提示 if (serialPort1.IsOpen) { MessageBox.Show(strPortName1 +"打开成功","提示"); } if (serialPort2.IsOpen) { MessageBox.Show(strPortName2 + "打开成功", "提示"); } } private void Cmdsend_Click(object sender, EventArgs e) { string outdata = Textsend.Text; if (outdata == "") { MessageBox.Show("发送的数据不能为空!","提醒!",MessageBoxButtons.OK,MessageBoxIcon.Warning ); } serialPort1.Write(outdata ); } //触发事件,接收数据 //private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) //{ // data = serialPort1.ReadExisting(); // this.Invoke(new EventHandler(DisplayText)); //} //显示数据 private void DisplayText(object sender, EventArgs e) { TextReceive.Text = TextReceive.Text + data; } //关闭串口,退出程序 private void CmdCloseSerialPort_Click(object sender, EventArgs e) { serialPort1.Close(); serialPort2.Close(); CmdOpenSerialPort.Enabled = true; } private void COMForm_FormClosing(object sender, FormClosingEventArgs e) { if (serialPort1.IsOpen) serialPort1.Close(); if (serialPort2.IsOpen) serialPort2.Close(); Process.GetCurrentProcess().Kill(); } private void serialPort2_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { data = serialPort2.ReadExisting(); this.Invoke(new EventHandler(DisplayText)); } }}

© 手抄报圈