📄 cpubbs_test_dll.c
字号:
/************************************************************************************************
本软件版权归CPUBBS论坛(www.cpubbs.com)所有!
软件编写:赖卫国(cpubbs):QQ:56720725 email:cpubbs@163.com tel:0755-2105-1981
硬件:陈智灵 :QQ:54016877 email:zlche89@163.com tel:0755-2105-1980
有任何问题欢迎到我们网站交流:www.cpubbs.com---------------cpu+bbs=cpubbs
************************************************************************************************/
/************************************************************************************************
编写者 :赖卫国(cpubbs)
硬件 :陈智灵
时间 : 2006-6-6-15-13
版本号 :版本1.0
函数作用: CPUBBS论坛USB2.0版本采集卡第一版本示例程序头文件列表
网站 : http://www.cpubbs.com
调用函数:无
函数参数:无
参数返回:无
************************************************************************************************/
#include "windows.h" //操作系统相关头文件
#include <analysis.h>
#include <cvirte.h>
#include <userint.h>
#include "cpubbs_test_dll.h"
#include "cpubbs_usb20_ver1_dll.h" //cpubbs论坛采集卡库函数头文件
static int panelHandle;
static int cpubbs_sended_points;
/************************************************************************************************
编写者 :赖卫国(cpubbs)
硬件 :陈智灵
时间 : 2006-6-6-15-13
版本号 :版本1.0
函数作用: 主函数,系统自动产生的代码
网站 : http://www.cpubbs.com
调用函数:无
函数参数:无
参数返回:无
************************************************************************************************/
int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return -1; /* out of memory */
if ((panelHandle = LoadPanel (0, "cpubbs_test_dll.uir", PANEL)) < 0)
return -1;
DisplayPanel (panelHandle);
RunUserInterface ();
DiscardPanel (panelHandle);
return 0;
}
/************************************************************************************************
编写者 :赖卫国(cpubbs)
硬件 :陈智灵
时间 : 2006-6-6-15-13
版本号 :版本1.0
函数作用: 单点AD值采集;
网站 : http://www.cpubbs.com
调用函数:unsigned char cpubbs_ad_sample_1_point(double cpubbs_ad_result[4],int *cpubbs_write_statue,
int *cpubbs_read_statue)
函数参数:cpubbs_ad_result[]---采集回来的值存于此数组之中,为double型的,单位是毫伏
---cpubbs_ad_result[0]为第一通道AD值
---cpubbs_ad_result[1]为第二通道AD值
---cpubbs_ad_result[2]为第三通道AD值
---cpubbs_ad_result[3]为第四通道AD值
cpubbs_write_statue--为写指令,卡返回状态,如果为1,则发送指令成功,如果为-1则失败;
cpubbs_read_statue---为读数据指令,卡返回状态,如果为1,则读取数据成功,如果为-1则为失败;
参数返回:unsigned char型式的数据类型,如果返回为1则成功,为-1则失败;
************************************************************************************************/
int CVICALLBACK cpubbs_send_read_ad (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int cpubbs_ad_ch;
double cpubbs_ad_result[4]={0};
int cpubbs_write_statue=0,cpubbs_read_statue=0;
switch (event)
{
case EVENT_COMMIT:
SetCtrlAttribute (panelHandle, PANEL_TIMER_FAST_AD, ATTR_ENABLED, 0); //单点采集要先停掉高速采集定时程序,否则会冲突导致板卡死机
cpubbs_stop_fast_ad_sample(&cpubbs_write_statue); //发停止高速采集指令给板卡
cpubbs_ad_sample_1_point(cpubbs_ad_result,&cpubbs_write_statue,&cpubbs_read_statue); //单点AD读取函数,是我们的DLL里面提供的函数
GetCtrlVal (panelHandle, PANEL_CH_RING, &cpubbs_ad_ch);
switch(cpubbs_ad_ch)
{
case 1:
PlotStripChartPoint (panelHandle, PANEL_STRIPCHART, cpubbs_ad_result[0]/1000); //因为采回来的是毫伏,要变成伏需除以1000
break;
case 2:
PlotStripChartPoint (panelHandle, PANEL_STRIPCHART, cpubbs_ad_result[1]/1000); //因为采回来的是毫伏,要变成伏需除以1000
break;
case 3:
PlotStripChartPoint (panelHandle, PANEL_STRIPCHART, cpubbs_ad_result[2]/1000); //因为采回来的是毫伏,要变成伏需除以1000
break;
case 4:
PlotStripChartPoint (panelHandle, PANEL_STRIPCHART, cpubbs_ad_result[3]/1000); //因为采回来的是毫伏,要变成伏需除以1000
break;
default:
break;
}
if(cpubbs_read_statue==-1) //读数出错处理
{
SetCtrlAttribute (panelHandle, PANEL_TIMER_AD1_POINT, ATTR_ENABLED, 0); //采集出错则停止单点采集定时器
SetCtrlAttribute (panelHandle, PANEL_TIMER_FAST_AD, ATTR_ENABLED, 0); //采集出错则也同时停止高速采集定时器
SetCtrlAttribute (panelHandle, PANEL_TIMER_DA, ATTR_ENABLED, 0); //写DA值出错则停止DA输出定时器
}
break;
}
return 0;
}
/************************************************************************************************
编写者 :赖卫国(cpubbs)
硬件 :陈智灵
时间 : 2006-6-6-15-13
版本号 :版本1.0
函数作用: 开启定时器TIMER_AD1_POINT,进行连续单点采集,具体采集程序在定时器事件函数里面进行,
一定也要在这里关闭高速采集定时器,否则系统冲突,下面有注解(如果不用高速采集就不用关);
网站 : http://www.cpubbs.com
调用函数:无
函数参数:无
参数返回:无
************************************************************************************************/
int CVICALLBACK cpubbs_start_TIMER_AD1_POINT_callback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int cpubbs_write_statue=0;
switch (event)
{
case EVENT_COMMIT:
SetCtrlAttribute (panelHandle, PANEL_TIMER_FAST_AD, ATTR_ENABLED, 0); //停止高速采集
cpubbs_stop_fast_ad_sample(&cpubbs_write_statue); //为了避免高速采集和单点采集冲突导致系统出问题,所以必须在这里把高速采集定时器关闭
SetCtrlAttribute (panelHandle, PANEL_TIMER_AD1_POINT, ATTR_ENABLED, 1); //启动单点采集定时器
break;
}
return 0;
}
/************************************************************************************************
编写者 :赖卫国(cpubbs)
硬件 :陈智灵
时间 : 2006-6-6-15-13
版本号 :版本1.0
函数作用: 定时器TIMER_AD1_POINT事件回调函数,采集就在这里进行,它是通过调用单点采集的函数来采的,
这样程序简单,也为了能让学习CVI的朋友们多学一个知识点,其实可以直接把单点采集的程序拷
贝到这里就可以的
网站 : http://www.cpubbs.com
调用函数:int CVICALLBACK cpubbs_send_read_ad (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
函数参数:系统自动生成的回调函数
参数返回:int
************************************************************************************************/
int CVICALLBACK cpubbs_sample_1_point_timer_callback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_TIMER_TICK:
cpubbs_send_read_ad (panelHandle, PANEL_SEND_READ_BUTTON, EVENT_COMMIT,0, 0, 0);
break;
}
return 0;
}
/************************************************************************************************
编写者 :赖卫国(cpubbs)
硬件 :陈智灵
时间 : 2006-6-6-15-13
版本号 :版本1.0
函数作用: 单点DA值输出函数,使卡输出一个值为cpubbs_da_value伏的电压;
网站 : http://www.cpubbs.com
调用函数:unsigned char cpubbs_da_output_1_point(double cpubbs_da_value,int *cpubbs_write_statue)
函数参数:cpubbs_da_value: DA值,单位为伏,数据类型为DOUBLE
cpubbs_write_statue: 为写指令,卡返回状态,如果为1,则发送指令成功,如果为-1则失败;
参数返回:unsigned char型式的数据类型,如果返回为1则成功,为-1则失败;
************************************************************************************************/
int CVICALLBACK cpubbs_da_1_point_output_callback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
double cpubbs_user_input_da_value;
double cpubbs_da_input_data;
int cpubbs_write_statue=0;
switch (event)
{
case EVENT_COMMIT:
GetCtrlVal (panelHandle, PANEL_NUMERIC_DA_1_POINT, &cpubbs_user_input_da_value);
cpubbs_da_output_1_point(cpubbs_user_input_da_value,&cpubbs_write_statue); //DA输出发送函数,是我们提供的DLL里面的库函数
break;
}
return 0;
}
/************************************************************************************************
编写者 :赖卫国(cpubbs)
硬件 :陈智灵
时间 : 2006-6-6-15-13
版本号 :版本1.0
函数作用: 连续输出波形的定时器启动函数,是前面板的波形发生按钮的事件,通过它启动定时器发送数据出去
具体操作在定时器回调函数里面进行;
网站 : http://www.cpubbs.com
调用函数:无
函数参数:无
参数返回:无
************************************************************************************************/
int CVICALLBACK cpubbs_start_da_timer_callback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
SetCtrlAttribute (panelHandle, PANEL_TIMER_DA, ATTR_ENABLED, 1); //启动定时器TIMER_DA
cpubbs_sended_points=0;
break;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -