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

第一节: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 语言类型托管类名说明
HANDLEvoid*System.IntPtr32 位
BYTEunsignedcharSystem.Byte8 位
SHORTshortSystem.Int1616 位
WORDunsigned shortSystem.UInt1616 位
INTintSystem.Int3232 位
UINTunsigned intSystem.UInt3232 位
LONGlongSystem.Int3232 位
BOOLlongSystem.Int3232 位
DWORDunsigned longSystem.UInt3232 位
ULONGunsigned longSystem.UInt3232 位
CHARcharSystem.Char用 ANSI 修饰
LPSTRchar*System.String 或 System.StringBuilder用 ANSI 修饰
LPCSTRConst char*System.String 或 System.StringBuilder用 ANSI修饰
LPWSTRwchar_t*System.String 或 System.StringBuilder用 Unicode 修饰
LPCWSTRConst wchar_t*System.String 或 System.StringBuilder用 Unicode 修饰
FLOATFloatSystem.Single32 位
DOUBLEDoubleSystem.Double64 位

 表格2:

类别类名说明Visual Basic 数据类型C# 数据类型C++ 托管扩展数据类型JScript 数据类型
整 数Byte8 位的无符号整数BytebytecharByte
SByte8 位的有符号整数不符合 CLSSByte无内置类型sbytesigned charSByte
Int1616 位的有符号整数Shortshortshortshort
Int3232 位的有符号整数Integerintint- 或 -longint
Int6464 位的有符号整数Longlong__int64long
UInt1616 位的无符号整数不符合 CLSUInt16无内置类型ushortunsigned shortUInt16
UInt3232 位的无符号整数不符合 CLSUInt32无内置类型uintunsigned int- 或 -unsigned longUInt32
UInt6464 位的无符号整数不符合 CLSUInt64无内置类型ulongunsigned __int64
浮点Single单精度(32 位)浮点数字Singlefloatfloatfloat
Double双精度(64 位)浮点数字Doubledoubledoubledouble
逻辑Boolean布尔值(真或假)Booleanboolboolbool
其他CharUnicode(16 位)字符Charcharwchar_tchar
Decimal96 位十进制值DecimaldecimalDecimalDecimal
IntPtr大小取决于基础平台(32 位平台上为 32 位值,64 位平台上为 64 位值)的有符号整数。IntPtr无内置类型IntPtr无内置类型IntPtr无内置类型IntPtr
UIntPtr大小取决于基础平台的无符号整数(32 位平台上为 32 位值,64 位平台上为 64 位值)。
不符合 CLS
UIntPtr无内置类型。UIntPtr无内置类型。UIntPtr无内置类型。UIntPtr
类对象Object对象层次结构的根。ObjectobjectObject*Object
StringUnicode 字符的不变的定长串。

代码如图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灯实验配套资料

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值