触发方式 软件触发、前触发、后触发、中触发与延时触发
数据传输方式 DMA方式
时钟源 内部时钟、外部数字时钟、外部正弦波。
内部时钟频率 可编程选择40MHz / n (n=2、4、6、8.. .256)
图 3.3
3.3.2 数据采集卡驱动程序设计
在编写数据采集卡程序时,先要引用数据采集卡的头文件和库文件,其截图如下:
图3.4头文件和库文件截图
数据采集卡的程序主要是对数据采集卡的初始化,设定数据采集模式,读取采集文件和将文件存在指定文件和释放。部分程序设计如下:
#include <conio.h>
#include "dask.h"
U16 channel=3; //4 channels
U16 range=AD_B_1_V;
char *file_name="9812d";
U32 read_count=400000;
F64 sample_rate=10000000;
main()
{
I16 card, err, card_num;
printf("This program inputs %d data from CH-0 to CH-%d of PCI-9812 in %d Hz, and\nstore data to file '%s.dat'.\nPlease press any key to start the operation.\n", read_count, channel, (int)sample_rate, file_name);
printf("Please input a card number: ");
scanf(" %d", &card_num);
//getch();
if ((card=Register_Card (PCI_9812, card_num)) <0 ) {
printf("Register_Card error=%d\n", card);
exit(1);
}
err = AI_9812_Config(card, P9812_TRGMOD_SOFT, P9812_TRGSRC_CH0, P9812_TRGSLP_POS, P9812_AD2_GT_PCI|P9812_CLKSRC_INT, 0x80, 0);
if (err!=0) {
printf("AI_9812_Config error=%d", err);
exit(1);
}
err = AI_AsyncDblBufferMode(card, 0);
if (err!=0) {
printf("AI_DblBufferMode error=%d", err);
exit(1);
}
err = AI_ContScanChannelsToFile(card, channel, range, file_name, read_count, sample_rate, SYNCH_OP);
if (err!=0) {
printf("AI_ContReadChannel error=%d", err);
exit(1);
}
Release_Card(card);
printf("\n\nThe input data is already stored in file '%s.dat'.\n", file_name);
printf("\nPress ENTER to exit the program. "); getch();
}
在程序设计中,以上步骤被不断调用使用使用过后释放在初始化使用。
3.4 网络通信模块程序设计
3.4.1 网口通信模块
在网口通信模块,程序的编写主要基于UDP的网络应用程序的编写。在本设计中网络通信使用线程通信,主要编辑服务器端程序和客户端程序。在终端软件发送指令到电路板上时,操控端作为客户端,执行端作为服务器端,当操作端回馈指令时,执行端又作为客户端,操控端作为服务器端。所以在终端软件上要同时包含服务器端程序和客户端程序。
(1) 服务器端程序
先要关闭先前工作区,建立新的工程选择Win32 Console Application类型,工程名为UdpSrv。并在应用程序创建向导的第一步选择:An empty project选项,创建一个新的工程。接着利用【文件/新建】菜单命令添加一个C++源文件:UdpSrv.cpp,然后在此文件中添加实现基于UDP的服务器端程序的代码。 电路板故障检测仪软件设计仿真+流程图(12):http://www.youerw.com/tongxin/lunwen_2634.html