文档库 最新最全的文档下载
当前位置:文档库 › C#串口编程例子

C#串口编程例子

C#串口编程例子
C#串口编程例子

C#串口编程

背景就不说了,我没有过串口编程的经验,七拼八凑了一些资料,自己弄了个小例子。由于我的本本上没有串口,所有下载了一个虚拟的串口软件VSPM,下载地址:https://www.wendangku.net/doc/aa13032529.html,/source/1232967,使用帮助下载:https://www.wendangku.net/doc/aa13032529.html,/source/1233011

安装完成,启动时需要进行设置:从第一个窗口开始依次设置为:

1.简体中文

2.VSPM运行在Server模式,支持运行在Client模式

3.使用设备探测器建立虚拟端口

4.设置虚拟串口信息,如下图(192.168.20.136是我本地IP,端口也是自己设置的)

确定后便设置完成。

进入主界面后,选择刚刚建立的虚拟串口,然后选择菜单“虚拟串口设置管理”->“检查此设置连接”,弹出Telnet管理窗口,地址及端口输入刚才所填写的,点击“重新连接”,此时再查看软件主界面会发现COM2这条记录的最后一列“最后一次操作”显示的是:串口,COM2没有打开,我们需要在程序中打开并进行操作。

新建C#WinForm项目,引用Microsoft.VisualBasic,界面如下:

代码也很简单,不加说明了,直接放出来:

view plaincopy to clipboardprint?

using System;

using System.Collections.Generic;

using https://www.wendangku.net/doc/aa13032529.html,ponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace SerialPort

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private System.IO.Ports.SerialPort com;

private void Form1_Load(object sender, EventArgs e)

{

com = new System.IO.Ports.SerialPort();

//获取所有的串口

https://www.wendangku.net/doc/aa13032529.html,puter pc = new https://www.wendangku.net/doc/aa13032529.html,puter();

foreach (string s in pc.Ports.SerialPortNames)

{

this.cbxPortName.Items.Add(s);

}

}

private void btnOpenPort_Click(object sender, EventArgs e)

{

if (cbxPortName.SelectedItem != null)

{

com.Close();

com.PortName = cbxPortName.SelectedItem.ToString();

com.Open();

if (com.IsOpen)

{

btnClose.Enabled = true;

lbStatus.Text = "串口" + cbxPortName.SelectedItem.ToString() + "已经连接";

}

}

else

{

MessageBox.Show("请选择串口!");

}

}

private void btnSend_Click(object sender, EventArgs e)

{

if (com.IsOpen)

{

com.WriteLine(txtSendMsg.Text);

}

else

{

MessageBox.Show("请先连接串口!");

}

}

private void btnReceive_Click(object sender, EventArgs e)

{

txtReceive.Text = "";

if (com.IsOpen)

{

txtReceive.Text = com.ReadLine();

}

else

MessageBox.Show("请先连接串口!");

}

}

private void btnClose_Click(object sender, EventArgs e)

{

com.Close();

if (!com.IsOpen)

{

btnClose.Enabled = false;

}

}

}

}

using System;

using System.Collections.Generic;

using https://www.wendangku.net/doc/aa13032529.html,ponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace SerialPort

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private System.IO.Ports.SerialPort com;

private void Form1_Load(object sender, EventArgs e)

{

com = new System.IO.Ports.SerialPort();

//获取所有的串口

https://www.wendangku.net/doc/aa13032529.html,puter pc = new https://www.wendangku.net/doc/aa13032529.html,puter();

foreach (string s in pc.Ports.SerialPortNames)

{

this.cbxPortName.Items.Add(s);

}

}

private void btnOpenPort_Click(object sender, EventArgs e)

{

if (cbxPortName.SelectedItem != null)

com.Close();

com.PortName = cbxPortName.SelectedItem.ToString();

com.Open();

if (com.IsOpen)

{

btnClose.Enabled = true;

lbStatus.Text = "串口" + cbxPortName.SelectedItem.ToString() + "已经连接";

}

}

else

{

MessageBox.Show("请选择串口!");

}

}

private void btnSend_Click(object sender, EventArgs e)

{

if (com.IsOpen)

{

com.WriteLine(txtSendMsg.Text);

}

else

{

MessageBox.Show("请先连接串口!");

}

}

private void btnReceive_Click(object sender, EventArgs e)

{

txtReceive.Text = "";

if (com.IsOpen)

{

txtReceive.Text = com.ReadLine();

}

else

{

MessageBox.Show("请先连接串口!");

}

}

private void btnClose_Click(object sender, EventArgs e)

{

com.Close();

if (!com.IsOpen)

{

btnClose.Enabled = false;

}

}

}

运行后选择COM2,点击“连接”,提示连接成功后,回到虚拟串口的“Telnet管理”窗口,点击“重新连接”则主窗口中“最后一次操作”列变成了“客户端已经建立TCP/IP连接”,此时表明已经和串口连接成功。

发送测试

在测试程序的文本框中输入字符然后发送,会在管理窗口中看到接收的数据:

接收测试

在VSPM的“Telnet管理”窗口中直接输入数据即可,界面上是看不到的。执行“虚拟串口设置管理”-->“跟踪串口数据”,在弹出的窗口中可以看到数据,输入完数据后回车,然后在测试程序中点击“接收”便可显示出收到的数据。

这个虚拟串口的软件很有用,我把它上传至CSDN的资源里了,地址:

个人认为COM编程没这么简单,虽然.Net把它封装的很好,让人很容易写出代码,但似乎这只是冰山一角!

相关文档