第十一节:C#工业控制编程基础–声音采集实验
文章目录
- 第十一节:C#工业控制编程基础--声音采集实验
- 一、实验目的:
- 二、实验内容:
- 三、实验步骤:
- 1.打开Visual Studio 2013,新建窗体应用程序项目,配置好板卡dll文件。
- 2.在窗体中放入控件,对控件进行布局排版,并修改他们的Name属性和Text属性。
- 3.选中Chart控件,在其属性栏中找到Series属性,点击右侧的扩展按钮,如图3。
- 4.继续在属性栏中找到Titles属性,点击右侧扩展按钮,如图5。
- 5.双击“关闭板卡”按钮进入编程界面,在public partial class Form1 : Form内引入本次要用的函数:OpenUsbV12()、CloseUsbV12()、ADContinuConfigV12()、ADContinuStopV12()、ReadAdBuffV12()、GetAdBuffSizeV12()。并在最上方using列写入using System.Runtime.InteropServices;代码如图8。
- 6.在“关闭板卡”按钮事件内顺序写入停止AD采集函数、关闭板卡函数,退出当前窗体函数。代码如图9。
- 7.双击“启动板卡”按钮,在该按钮点击事件前定义一个整形变量w,在点击事件内写入一个定义一个整形变量x并写入一个if判断:
- 8.在“开始声音采集”按钮事件内设定波形图的各项参数,并将NumericaUpDown控件的值转换后赋给AD连续采集函数,用于设定采集端口。本次实验我们使用单端采集,量程代码为1,连续采样频率为20000。最后启动timer1。代码如图11。
- 9.在“停止声音采集”按钮中写入停止AD采集函数和timer1停止函数,代码如图12。
- 10.在timer1事件内定义一个int型变量y,并将GetAdBuffSizeV12()函数采集得到的值赋给变量y。接着可以用TextBox控件显示y值。
- 11.写入一个unsafe关键字,在其中定义一个int型变量i,一个float型数组z,内含4096份数据。
- 12.将数组z内的元素托管给一个指针d。在进行这项操作时,要加上fixed函数。
- 13.写入一个if判断,当y值大于等于4096时执行该判断内容。
- 14.If判断内容:调用ReadAdBuffV12()函数,将读出的数据存入d中,一次性存入4096份。并写入一个for循环,令i从0开始计数4096次。最后将4096份数据逐一显示在Chart控件上。
- 15.步骤10~14代码如图13。
- 16.连接采集板5V、AD1、GND和功能板上的声音采集区①②③,连接采集板上JP1(量程范围选择±10v),此时量程代码为1。
- 17.接通板卡电源,启动程序,开始声音采集(可以尝试在声音采集区域周围发出一些声响),效果如图14。
- 四、实验结果:
- 五、注意事项:
一、实验目的:
学习Chart控件以及功能板上声音采集模块的使用。
二、实验内容:
利用单通道连续采集将声音转换成数字信号生成波形图
三、实验步骤:
1.打开Visual Studio 2013,新建窗体应用程序项目,配置好板卡dll文件。
2.在窗体中放入控件,对控件进行布局排版,并修改他们的Name属性和Text属性。
如图1:
其中,Chart控件可以在工具箱搜索栏进行搜索得到。如图2:
3.选中Chart控件,在其属性栏中找到Series属性,点击右侧的扩展按钮,如图3。
在弹出的“集合编辑器”中找到图表→ChartType→Line,如图4。
4.继续在属性栏中找到Titles属性,点击右侧扩展按钮,如图5。
在弹出的“Title集合编辑器”中选择外观→(Text),在属性框内设定好图表名字。
然后就可以看到设定好的名字显示在Chart控件上了。如图7。
5.双击“关闭板卡”按钮进入编程界面,在public partial class Form1 : Form内引入本次要用的函数:OpenUsbV12()、CloseUsbV12()、ADContinuConfigV12()、ADContinuStopV12()、ReadAdBuffV12()、GetAdBuffSizeV12()。并在最上方using列写入using System.Runtime.InteropServices;代码如图8。
6.在“关闭板卡”按钮事件内顺序写入停止AD采集函数、关闭板卡函数,退出当前窗体函数。代码如图9。
实验所用开发板套件包含数据采集卡HK_USB_DAQ V1.5、功能板模块和开关型红外避障模块,适合教学、学习。
7.双击“启动板卡”按钮,在该按钮点击事件前定义一个整形变量w,在点击事件内写入一个定义一个整形变量x并写入一个if判断:
当w值为0:用函数OpenUsbV12()打开开发板并将其函数值赋值给变量x,并再写入一个if判断:当x值等于0,用MessageBox显示“启动成功”,将按钮的Text属性设置为“暂停”,将w赋值为1。反之,用MessageBox显示“启动失败”。
当w值不为0时:将w重新赋值为0,关闭开发板,将按钮的Text属性设置为“继续”。代码如图10。
8.在“开始声音采集”按钮事件内设定波形图的各项参数,并将NumericaUpDown控件的值转换后赋给AD连续采集函数,用于设定采集端口。本次实验我们使用单端采集,量程代码为1,连续采样频率为20000。最后启动timer1。代码如图11。
9.在“停止声音采集”按钮中写入停止AD采集函数和timer1停止函数,代码如图12。
10.在timer1事件内定义一个int型变量y,并将GetAdBuffSizeV12()函数采集得到的值赋给变量y。接着可以用TextBox控件显示y值。
11.写入一个unsafe关键字,在其中定义一个int型变量i,一个float型数组z,内含4096份数据。
12.将数组z内的元素托管给一个指针d。在进行这项操作时,要加上fixed函数。
13.写入一个if判断,当y值大于等于4096时执行该判断内容。
14.If判断内容:调用ReadAdBuffV12()函数,将读出的数据存入d中,一次性存入4096份。并写入一个for循环,令i从0开始计数4096次。最后将4096份数据逐一显示在Chart控件上。
15.步骤10~14代码如图13。
16.连接采集板5V、AD1、GND和功能板上的声音采集区①②③,连接采集板上JP1(量程范围选择±10v),此时量程代码为1。
17.接通板卡电源,启动程序,开始声音采集(可以尝试在声音采集区域周围发出一些声响),效果如图14。
注:由于篇幅有限,Chart控件展示区域较小,可根据实际需求自行调整控件大小。