C#2010 编程基础及在运动控制卡上的应用
左 力
2014.5.9.修改
目
录
录.......................................................................................................................................................................1
目
第一讲: C#2010 概述及基础 .....................................................................................................................................2
第二讲: C#2010 编程语言 .......................................................................................................................................20
第三讲: C#2010 在运动控制卡上的应用 .............................................................................................................. 27
第四讲: C#2010 绘图、多线程编程方法 .............................................................................................................. 37
第五讲: C#2010 高速采样的方法 ...........................................................................................................................50
第六讲: C#2010 程序生成安装软件 .......................................................................................................................56
1
第一讲: C#2010 概述及基础
一. 为什么要用C#?
1. Windows XP将会在 2014年4月8日正式“退休”,届时微软将不会再为该系统提供每周的安
全补丁更新和其他的技术支持。即继续用 XP系统有安全隐患。
2. 微软建议大家使用 Win8、Win7。(2013年10月 17日,微软正式推出 Windows 8.1。Win8 太新,对硬
件要求也高,只有 64位系统。现在用 Win8 为时尚早。 )
在Win7下,使用什么编程软件好?
继续用 VB6.0 。但VB6.0 在Win7下兼容性不好、慢,且太老( 1998年上市)、功能差;
改用 VB2010。但 VB2010和VB6.0差别很大,要学新东西。
用C#、VC。会不会太难?
VB2010、C#、VC,选用哪一个为好?先调查一下,大家都在用什么软件。
2012年底的 Tiobe编程语言排行榜图 1所示:
2
图 1 2012年底的 Tiobe编程语言排行榜
2013 年 8 月编程语言排行榜如图 2 所示。
图 2
2013年 8月 Tiobe编程语言排行榜
Java,1995年由 SUN公司正式推出,免费!具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于
个人 PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网。
(2010年Oracle公司收购了 SUN)
Objective-C ,是扩充 C的面向对象编程语言。 它主要使用于 Mac OS X 和 GNUstep 这两个使用 OpenStep标准的系
统。
PHP(Hypertext Preprocessor的缩写,中文名: “超文本预处理器 ”)是一种通用开源脚本语言。语法吸收了
C
语言、 Java和 Perl的特点,入门门槛较低,易于学习,使用广泛,主要适用于
Web开发领域。
Python/?pa? θ ?n/是一种解释型、 面向对象、 动态数据类型的高级程序设计语言。 自从 1991Python 语言诞生至今,
它逐渐被广泛应用于处理系统管理任务和
Web编程。免费、开源。
数据表明: 用C#的人比用VB的人多近一倍。
二. C#的历史:
C#读作 C Sharp。符号 #有2种解释:
#在五线谱中读作 Sharp,是“升半个音”的意思。这里用 #有对 C提升之意。
3
C
C + +
C + + + + ,为了方便写成了C #。
1996年原Broland公司的首席研发设计师安德斯 ·海尔斯伯格(Anders Hejlsberg)加入微软,
开始开发 Visual J++。Visual J++很快由 1.1版本升级到 6.0版。VJ++编译出来的虚拟机械码的执
行效率不但比任何 Java开发工具快, 在某些方面甚至比原生的 Windows开发工具, 如:Delphi、
VB、甚至是 VC++ 效率还高。
SUN公司认为 Visual J++ 违反了 Java开发平台的中立性,对微软提出了诉讼。 2000年6月
26日微软在奥兰多举行的“职业开发人员技术大会( PDC 2000)”上,推出新的语言 C#,它
是在Visual J++基础上开发的软件,同时停止 Visual J++的销售。所以, C#语言深受 Java、C和
C++的影响。
2000年6月微软公司发布一种新的编程语言 C# 1.0。
2003年5月,微软推出了 Visual Studio .NET 2003,同时也发布了 C#的改进版本 C# 1.1
微软在 2004年的6月份发布了 Visual Studio 2005的第一个 Beta版,同时展示了 C#2.0。
2005年9月份的 PDC大会上微软推出 C#3.0的技术预览版。
2010年4月推出的 Visual Studio 2010及C#4.0,支持开发面向 Windows7的应用程序。
2012年9月微软发布了 Visual Studio 2012及C#5.0,可支持 Windows8。
C#的巨大成功是安德斯 ·海尔斯伯格在编译器领域的领袖地位的又一次体现。可是说: 安
德斯·海尔斯伯格是 C #之父。(Turbo Pascal、Delphi也是出自他手)
三. C#的优点:
C#是一种强大的、面向对象的程序开发语言,是专门用于 .Net的编程语言,用 C#编程的
代码总是在 .Net Framework中运行。
C#综合了 VB 简单的可视化操作和 C++的高运行效率,以其强大的操作能力、优雅的语法
风格、创新的语言特性和便捷的面向组件编程的支持成为 .NET平台的首选语言。
C#在继承 C和C++强大功能的同时去掉了一些它们的复杂特性 (例如没有指针、 宏以及不
允许多重继承等)。
C#语言和 Java很相似。学会 C#后,学习 Java很容易。
结论: 去熟悉VB2010,还不如直接学习、使用C#。
4
什么是 .NET ?
.NET平台是于 2000年6月由 Microsoft 推出的全新的应用程序开发平台, 用于构建和运行新
一代的 Microsoft Windows和Web应用程序。
.NET平台包括 4种核心技术: .NET Framework, .NET企业服务器、 构建模块服务、 Visual
Studio.NET。
.NET Framework是.NET平台核心中的核心。 它为 .NET平台下应用程序的运行提供基本框
架。它有 2个主要组件: CLR (公共语言运行时, Common Language Runtime )、.NET Framework类
库。
本人感受:
C#的功能强:类库庞大、多线程、速度快;
界面设计简单、美观,和 VB 类似;
稳定性比 VB6.0强(调试运动控制卡时没有自动退出现象) ;
智能化水平高(写代码时格式自动对齐,有智能提示;调试程序时方便,能给出
有用的信息等);
学C#比学 VC容易(难点是要适应一些新概念,如:类) 。
四. 安装C#
可以在网上下载免费的 C#2010Express版(也称为学习版)软件包使用。
使用 C#2010Express版可以正常运行运动控制卡。但缺少一些高级功能。
建议购买 C#专业版软件使用。
5
五. 第一个C#程序
输入 3个数字(字母也行),点击“开始”键, 3个数按从小到大顺序重新排列,并输出结
果。界面和运行结果如图 3所示。
输入数字
输出结果
图3 第一个 C#程序的界面和运行结果
C#的编辑界面和 VB6.0相似,如图 4、图 5所示。和 VB6.0不同的是:除了窗体及代码外,
C#还有一个主程序 Program.cs、一个系统自动生成的窗体设计程序 Form1.Designer.cs。
图4 C#的窗体编辑界面
6
类
方法
图5 C#的代码编辑界面
C#的程序结构如例程 1代码所示。
例程 1:
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;
// 引入 System等命名空间
// 相当于 VC的头文件
namespace FirstOne
{
// 创建名为 FirstOne 的命名空间
// 命名空间中有多个“类”文件
// Program.cs 为主程序文件
class Program
// 创建名为 Program的静态类
static
{
///
7
/// 应用程序的主入口点。
///
[ STAThread]
static
{
void Main()
// 指示应用程序的 COM线程模式是单线程单元( STA)。
// 创建名为 Main ()的静态方法
Application
Application
Application
.EnableVisualStyles();
.SetCompatibleTextRenderingDefault(
.Run( new Form1());
// 启用可视化样式
// 设置呈现格式
false );
// 运行 Form1窗体
}
}
// Form1.cs 为窗体事件的代码
partial
class Form1 : Form
// 创建名为 Form1的公共类
public
{
Form1()
public
{
InitializeComponent();
}
private
{
void button1_Click(
object
sender, EventArgs e)
// 开始按键被点击
string[]
MyData = new string
[3];
// 红色所示代码为编程者写的,其他均为自动生
成
MyData[0] = textBox1.Text;
MyData[1] = textBox2.Text;
MyData[2] = textBox3.Text;
Array.Sort(MyData);
textBox1.Text
textBox2.Text
textBox3.Text
= MyData[0];
= MyData[1];
= MyData[2];
}
// 输入数据
// 排序
// 输出结果
// Form1.Designer.cs 为窗体设计代码,由 Visual Studio 自动生成
///
/// 必需的设计器变量。
///
private
///
/// 清理所有正在使用的资源。
///
///
protected
8
System.ComponentModel.
IContainer
components = null
;
如果应释放托管资源,为 true ;否则为 false 。
override
void Dispose( bool disposing)