win7系统下用vspd软件进行串口编程实例
http://blog.csdn.net/qiusuo800/article/details/8299777
目前,我在学习C#串口编程类的基础知识,在网上也找了一些资料,但都存在一些问题,现在他们基础上再进行一定的修改,且更详细的表达如何实现串口编程,实现串口的发送与接收。本文通过一个完整的实例,目的在于说明在win7系统中进行串口编程时:
1. 用C# 编程串口的属性定义、成员变量以及方法等问题;
2. 掌握串口的发送与接收,利用虚拟串口来进行通讯,体验串口通讯;
至于具体的串口通信原理,下一篇会具体介绍。
本文使用开发技术
1.C#中的System.IO.Ports; (不过在vc下亦可以使用MSCOM)
环境准备
1. 生成虚拟串口通信的工具:
xp系统下vspm下载地址:
http://download.csdn.net/source/1232967
win7系统下vspd下载地址:
http://www.qiujicai.com/content/uploadfile/201104/17ebdf6a475acba44e4fdd4c8e5d58ce20110421020034.rar
2. 辅助串口调试的工具---串口调试助手(即用于和自己写的窗口通信程序交互的软件)
自己的客户端程序
界面如下:

表1 程序中使用的控件命名
|
控件名称 |
定义的id |
含义 |
|
下拉列表框 |
comboBox1 |
显示操作系统中可用的串口 |
|
“打开端口”按钮 |
Button3 |
打开选择的串口 |
|
“关闭端口”按钮 |
Button4 |
关闭选择的串口 |
|
细长的那个文本框 |
textBox1 |
提交发送的文本信息 |
|
“发送信息”按钮 |
button1 |
给串口发送文本 |
|
“接受信息”按钮 |
Button2 |
读取串口缓存的文本 |
|
巨大的显示框 |
listBox1 |
显示从串口读取的文本 |
程序代码(简单,不解释):
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using System.IO.Ports;
- using Microsoft.VisualBasic;
- namespace 串口
- {
- public partial class Form1 : Form
- {
- System.IO.Ports.SerialPort com = null;
- public Form1()
- {
- InitializeComponent();
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- Microsoft.VisualBasic.Devices.Computer pc = new Microsoft.VisualBasic.Devices.Computer();
- foreach (string s in pc.Ports.SerialPortNames)
- { this.comboBox1.Items.Add(s); }
- }
- private void button3_Click(object sender, EventArgs e)
- {
- if (com == null)
- {
- com = new SerialPort(comboBox1.Text);
- }
- if (!com.IsOpen)
- {
- com.Open();
- button3.Enabled = false;
- button4.Enabled = true;
- }
- }
- private void button4_Click(object sender, EventArgs e)
- {
- if (com != null && com.IsOpen)
- {
- com.Close();
- button3.Enabled = true;
- button4.Enabled = false;
- }
- }
- private void button1_Click(object sender, EventArgs e)
- {
- Byte[] bytes = MyEncode(textBox1.Text.Trim());
- com.Write(bytes, 0, bytes.Length);
- }
- private void button2_Click(object sender, EventArgs e)
- {
- Byte[] bytes = new Byte[com.ReadBufferSize];
- com.Read(bytes, 0, bytes.Length);
- listBox1.Items.Add(MyDecode(bytes));
- listBox1.SelectedIndex = listBox1.Items.Count - 1;
- MessageBox.Show(MyDecode(bytes));
- }
- /// <summary>
- /// 编码
- /// </summary>
- private Byte[] MyEncode(string text)
- {
- Encoder ed = Encoding.Default.GetEncoder();
- char[] chars = text.ToCharArray();
- Byte[] bytes = new Byte[ed.GetByteCount(chars, 0, chars.Length, true)];
- ed.GetBytes(chars, 0, chars.Length, bytes, 0, true);
- //return Convert.ToBase64String(bytes);
- return bytes;
- }
- /// <summary>
- /// 解码
- /// </summary>
- /// <param name="bytes"></param>
- /// <returns></returns>
- private string MyDecode(Byte[] bytes)
- {
- Decoder dd = Encoding.Default.GetDecoder();
- char[] chars = new char[dd.GetCharCount(bytes, 0, bytes.Length, true)];
- dd.GetChars(bytes, 0, bytes.Length, chars, 0, true);
- StringBuilder result = new StringBuilder(1000);
- foreach (char c in chars)
- {
- result.Append(c);
- }
- return result.ToString();
- }
- private void Form1_FormClosing(object sender, FormClosingEventArgs e)
- {
- button4.PerformClick();
- }
- }
- }
通信实现部分
1. 打开vspd软件,创建虚拟串口com2、com3,不要关闭软件(关闭时,虚拟串口就不存在了);

2. 运行自己的客户端软件,在comboBox1中选择新创建的串口com2,然后单击”打开端口”按钮;

3. 打开串口调试助手软件,选择与com2端口一同创建的com3端口,然后连接;

4. 在自定义客户端中输入文本,然后发送,即可在串口通信助手软件中看到收到的字符串信息;如果想看十六进制信息,就把左边的十六进制复选框中的对号勾上,以后就会显示十六进制的信息;

5. 可以在串口调试助手软件中,输入文本,单击“发送“按钮,然后在自定义客户端软件中单击”接受信息”,即可显示收到信息;
本文主要讲解win7系统中使用C#进行串口编程的步骤,对于在xp中使用C#进行串口开发的文章网上比较多,具体可以参考:
1.http://chowtrong.blog.163.com/blog/static/193026085201171932139652/
2.http://www.cnblogs.com/youchun/archive/2009/11/28/1612724.html
关于vspd的使用方可以参考:
1.http://www.qiujicai.com/?post=42
2.http://blog.sina.com.cn/s/blog_6163bdeb0102e8iy.html
关于vspm的使用可以参考:
1.http://wenku.baidu.com/view/b8f3b72d915f804d2b16c132.html
2.http://wenku.baidu.com/view/ed929b8202d276a200292ea1.html
win7系统下用vspd软件进行串口编程实例的更多相关文章
- win7系统下如何配置php-Apache-mysql环境
如何在win7系统下配置php环境呢,php+Apache+mysql都是在配置过程中必不可少的元素,php负责解析php代码,apache负责服务器端而mysql是数据交互的中转站. 那么如何将ph ...
- Win7系统下彻底删除无用服务的方法
win7系统下中有非常多的服务项,用户来满足不同行业用户间的所有需求,系统服务也是执行指定系统功能的程序,许多情况下我们想要运行软件或执行外接设备都无法离开系统服务,但并非所有系统服务都是我们用到的, ...
- win7系统下python安装numpy,matplotlib,scipy和scikit-learn
1.安装numpy,matplotlib,scipy和scikit-learn win7系统下直接采用pip或者下载源文件进行安装numpy,matplotlib,scipy时会遇到各种问题,这是因为 ...
- Svn win7系统下状态图标不显示-转载
Svn win7系统下状态图标不显示 Svn版本 tortoisesvn-1.8.8.25755-x64-svn-1.8.10.msi 2.不显示图标状态如图1,期望结果显示图标状态如图2 图1 图2 ...
- Win7系统下完全删除Mysql
今天不知为什么Mysql服务器突然连接不上,于是胡乱折腾了一番,导致最后不得不重新安装Mysql.安装不成功,服务器起不来,就是最后那步的时候服务器启动不了,这是因为Mysql在卸载的时候没有彻底卸载 ...
- MyEclipse第一个Servlet程序 --解决Win7系统下MyEclipse与Tomcat连接问题
前言 本文旨在帮助学习java web开发的人员,熟悉环境,在Win7系统下运行自己的第一个Servlet程序,因为有时候配置不当或系统原因可能会运行不成功,这给初学者带来了一定烦恼,我也是为此烦恼过 ...
- 利用PowerDesigner15在win7系统下对MySQL 进行反向project(二)
利用PowerDesigner15在win7系统下对MySQL 进行反向project 1.打开PowerDesigner,建立新模型.选择Physical Data Model中的Physical ...
- 利用PowerDesigner15在win7系统下对MySQL 进行反向工程(三)
利用PowerDesigner15在win7系统下对MySQL 进行反向工程 1.选择"数据库-->Generate Database...",查看数据库表的SQL语句 2. ...
- 利用PowerDesigner15在win7系统下对MySQL 进行反向工程(二)
利用PowerDesigner15在win7系统下对MySQL 进行反向工程 1.打开PowerDesigner,建立新模型,选择Physical Data Model中的Physical Da.. ...
随机推荐
- (转,学习记录)MD5加密算法中的加盐值(SALT)
我们知道,如果直接对密码进行散列,那么黑客可以对通过获得这个密码散列值,然后通过查散列值字典(例如MD5密码破解网站),得到某用户的密码. 加Salt可以一定程度上解决这一问题.所谓加Salt方法,就 ...
- 【Deep Learning】一、AutoEncoder
Deep Learning 第一战: 完成:UFLDL教程 稀疏自编码器-Exercise:Sparse Autoencoder Code: 学习到的稀疏参数W1: 参考资料: UFLDL教程 稀疏自 ...
- SCSI Pass-Through Interface Tool
http://code.msdn.microsoft.com/SCSI-Pass-Through-a906ceef/sourcecode?fileId=59048&pathId=1919073 ...
- 基于curl的异步http实现
简述用于windowsclient的一个异步http模块的实现 1.须要实现的feature 1.1 非常easy地发起异步http请求,然后回调. 1.2 可以管理http并发数. 1.3 可以支持 ...
- tomcat完整配置
规划: 网站网页目录:/web/www 域名:www.test1.com 论坛网页目录:/web/bbs URL:bbs.test1.com/bbs 网站管理程序:$CATALINA_HOME/wab ...
- C语言编程规范
C语言编程规范 6 函数与过程 6.1 函数的功能与规模设计 函数应当短而精美,而且只做一件事.不要设计多用途面面俱到的函数,多功能集于一身的函数,很可能使函数的理解.测试.维护等变得困难. 6.2 ...
- 解决 Ubuntu Software (Software Center) Crash 问题
问题描述: no application data found 解决方式: sudo apt purge gnome-software ubuntu-software sudo apt autorem ...
- 21.重入锁ReentrantLock
ReentrantLock 重入锁,在需要进行代码同步部分上加锁,但是一定要记得解锁. 类型:公平锁(队列方式进行排队).非公平锁(按照cpu的分配),非公平锁性能要比公平锁性能高,默 ...
- Objective-C:NSDectionary字典的常见操作
NSDectionary字典:它是一个存储键值的容器,每一个键key都对应着一个值value,可以通过键key一次性找到目标值value,这是一个比较好的存储器,相比于数组而言,它明显提高了查询效率. ...
- 混沌数学之CircuitChaotic(二维离散电路混沌系统)
相关软件参见:混沌数学之离散点集图形DEMO 相关代码: // http://wenku.baidu.com/link?url=yg_gE7LUXCg2mXRp-ZZdfRXXIkcNj8YOhvN7 ...