第一节:C#工业控制编程基础–点亮LED灯实验

文章目录

一、实验目的:

C#入门基础学习。

二、实验内容:

用C#控制LED的亮灭。

三、实验步骤:

1.打开Visual Studio 2013,点击新建项目,如图1。

图1

2.点击新建项目后,选择模板中的Visual C#→Windows 窗体应用程序,然后可以根据喜欢修改名称以及存放位置,最后确定,等待项目创建,如图2。

图2

3.项目建立成功界面如图3。

图3
右键右侧资源管理器一栏中的解决方案,选择“在文件资源管理器中打开文件夹”。如图4。
图4
找到.exe文件所在文件夹,将二次开发库内后缀名为dll的文件复制到与.exe同一文件夹内。如图5,这样即可在编程时调用开发板库函数。
图5

4.点击左侧边栏的工具箱,选择Button控件,如图6。

图6
放入两个Button控件,并调整为合适大小,如图7。
图7

5.单击Button控件,来到界面右下角属性设置,可根据喜好修改控件的Name属性以及Text属性,如图8、9。

图8

图9
修改完成后Button控件效果如图10。
图10

6.分别双击我们设定好的开始和退出按钮,即可进入编程界面。界面如图11。

图11

7.在最上方的一排using引用中添加一行:

using System.Runtime.InteropServices;
这样程序才能引用我们在步骤3中放入的dll库。如图12。
图12

8.在主函数的 public partial class Form1 : Form内写入三行:[DllImport(“USBDAQ_DLL_V12.dll”)]并在每一行后面用“static extern + 函数名称”的形式分别写入这次实验要用到的三个数据采集卡函数:

打开设备OpenUsbV12();
关闭设备CloseUsbV12();
单向开关量输出DoSetV12(unsigned char chan,unsigned char state);
注:此处DoSetV12()中的函数值写法要将其中的unsigned char更改为此处要填入的数据类型,此处两个皆为整形int。
注:由于该板卡函数提供的库为C库,所以要进行转换,C#数据类型与C语言数据类型对应关系如表1和表2。

C#调用DLL文件时参数对应表
 表格1:

Wtypes.h 中的
非托管类型
非托管 C 语言类型 托管类名 说明
HANDLE void* System.IntPtr 32 位
BYTE unsignedchar System.Byte 8 位
SHORT short System.Int16 16 位
WORD unsigned short System.UInt16 16 位
INT int System.Int32 32 位
UINT unsigned int System.UInt32 32 位
LONG long System.Int32 32 位
BOOL long System.Int32 32 位
DWORD unsigned long System.UInt32 32 位
ULONG unsigned long System.UInt32 32 位
CHAR char System.Char 用 ANSI 修饰
LPSTR char* System.String 或 System.StringBuilder 用 ANSI 修饰
LPCSTR Const char* System.String 或 System.StringBuilder 用 ANSI修饰
LPWSTR wchar_t* System.String 或 System.StringBuilder 用 Unicode 修饰
LPCWSTR Const wchar_t* System.String 或 System.StringBuilder 用 Unicode 修饰
FLOAT Float System.Single 32 位
DOUBLE Double System.Double 64 位

 表格2:

类别 类名 说明 Visual Basic 数据类型 C# 数据类型 C++ 托管扩展数据类型 JScript 数据类型
整 数 Byte 8 位的无符号整数 Byte byte char Byte
SByte 8 位的有符号整数不符合 CLS SByte无内置类型 sbyte signed char SByte
Int16 16 位的有符号整数 Short short short short
Int32 32 位的有符号整数 Integer int int- 或 -long int
Int64 64 位的有符号整数 Long long __int64 long
UInt16 16 位的无符号整数不符合 CLS UInt16无内置类型 ushort unsigned short UInt16
UInt32 32 位的无符号整数不符合 CLS UInt32无内置类型 uint unsigned int- 或 -unsigned long UInt32
UInt64 64 位的无符号整数不符合 CLS UInt64 无内置类型 ulong unsigned __int64
浮点 Single 单精度(32 位)浮点数字 Single float float float
Double 双精度(64 位)浮点数字 Double double double double
逻辑 Boolean 布尔值(真或假) Boolean bool bool bool
其他 Char Unicode(16 位)字符 Char char wchar_t char
Decimal 96 位十进制值 Decimal decimal Decimal Decimal
IntPtr 大小取决于基础平台(32 位平台上为 32 位值,64 位平台上为 64 位值)的有符号整数。 IntPtr无内置类型 IntPtr无内置类型 IntPtr无内置类型 IntPtr
UIntPtr 大小取决于基础平台的无符号整数(32 位平台上为 32 位值,64 位平台上为 64 位值)。
不符合 CLS
UIntPtr无内置类型。 UIntPtr无内置类型。 UIntPtr无内置类型。 UIntPtr
类对象 Object 对象层次结构的根。 Object object Object* Object
String Unicode 字符的不变的定长串。

代码如图13
图13

9.在开始按钮控件的函数前定义一个整形变量w,赋值为0。在函数内写入一个if判断。

当w值等于0时,将w重新赋值为1,用OpenUsbV12()启动数据采集卡,然后用DoSetV12()将端口OUT1设置输出5V电压并将控件的Text属性设置为“暂停”。
当w值不等于0时,将w重新赋值为0,将端口OUT1设置为输出0V,用CloseUsbV12()关闭数据采集卡,并将控件的Text属性设置为“继续”。代码如图14。

图14

10.在退出按钮控件的函数内写入关闭采集卡函数和退出程序指令this.Close();如图15。

图15

11.连接电路,将数据采集卡的端口OUT1与功能板上的LED模块的②相连,GND与③相连,如图16。

图16

12.运行程序,点击上方启动按钮。如图17。

图17
开始按钮可以正常运行并变为继续和暂停,且LED可以正常点亮。如图18、19。
图18
图19

13.最后关闭板卡,断开电源。

四、实验结果及思考:

成功完成LED灯的点亮。
思考:如何实现每个按键控制每盏灯?

五、注意事项:

初次C#编程,注意检查程序避免死机。

点击此处下载:第一节:基于C#使用开发板点亮LED灯实验配套资料

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐