第一节:C#工业控制编程基础–点亮LED灯实验
文章目录
- 第一节:C#工业控制编程基础--点亮LED灯实验
- 一、实验目的:
- 二、实验内容:
- 三、实验步骤:
- 1.打开Visual Studio 2013,点击新建项目,如图1。
- 2.点击新建项目后,选择模板中的Visual C#→Windows 窗体应用程序,然后可以根据喜欢修改名称以及存放位置,最后确定,等待项目创建,如图2。
- 3.项目建立成功界面如图3。
- 4.点击左侧边栏的工具箱,选择Button控件,如图6。
- 5.单击Button控件,来到界面右下角属性设置,可根据喜好修改控件的Name属性以及Text属性,如图8、9。
- 6.分别双击我们设定好的开始和退出按钮,即可进入编程界面。界面如图11。
- 7.在最上方的一排using引用中添加一行:
- 8.在主函数的 public partial class Form1 : Form内写入三行:[DllImport("USBDAQ_DLL_V12.dll")]并在每一行后面用“static extern + 函数名称”的形式分别写入这次实验要用到的三个数据采集卡函数:
- 9.在开始按钮控件的函数前定义一个整形变量w,赋值为0。在函数内写入一个if判断。
- 10.在退出按钮控件的函数内写入关闭采集卡函数和退出程序指令this.Close();如图15。
- 11.连接电路,将数据采集卡的端口OUT1与功能板上的LED模块的②相连,GND与③相连,如图16。
- 12.运行程序,点击上方启动按钮。如图17。
- 13.最后关闭板卡,断开电源。
- 四、实验结果及思考:
- 五、注意事项:
一、实验目的:
C#入门基础学习。
二、实验内容:
用C#控制LED的亮灭。
三、实验步骤:
1.打开Visual Studio 2013,点击新建项目,如图1。
2.点击新建项目后,选择模板中的Visual C#→Windows 窗体应用程序,然后可以根据喜欢修改名称以及存放位置,最后确定,等待项目创建,如图2。
3.项目建立成功界面如图3。
右键右侧资源管理器一栏中的解决方案,选择“在文件资源管理器中打开文件夹”。如图4。
找到.exe文件所在文件夹,将二次开发库内后缀名为dll的文件复制到与.exe同一文件夹内。如图5,这样即可在编程时调用开发板库函数。
4.点击左侧边栏的工具箱,选择Button控件,如图6。
放入两个Button控件,并调整为合适大小,如图7。
5.单击Button控件,来到界面右下角属性设置,可根据喜好修改控件的Name属性以及Text属性,如图8、9。
修改完成后Button控件效果如图10。
6.分别双击我们设定好的开始和退出按钮,即可进入编程界面。界面如图11。
7.在最上方的一排using引用中添加一行:
using System.Runtime.InteropServices;
这样程序才能引用我们在步骤3中放入的dll库。如图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
9.在开始按钮控件的函数前定义一个整形变量w,赋值为0。在函数内写入一个if判断。
当w值等于0时,将w重新赋值为1,用OpenUsbV12()启动数据采集卡,然后用DoSetV12()将端口OUT1设置输出5V电压并将控件的Text属性设置为“暂停”。
当w值不等于0时,将w重新赋值为0,将端口OUT1设置为输出0V,用CloseUsbV12()关闭数据采集卡,并将控件的Text属性设置为“继续”。代码如图14。
10.在退出按钮控件的函数内写入关闭采集卡函数和退出程序指令this.Close();如图15。
11.连接电路,将数据采集卡的端口OUT1与功能板上的LED模块的②相连,GND与③相连,如图16。
12.运行程序,点击上方启动按钮。如图17。
开始按钮可以正常运行并变为继续和暂停,且LED可以正常点亮。如图18、19。