📄 cpubbs_test_dll.c
字号:
cpubbs_pwm_3_start : 双边沿模式下,PWM5的清零起始位置,并置位PWM6,数据类型为double,数据输入范围为0-1之间的数
cpubbs_pwm_3_end : 双边沿模式下,PWM6的清零起始位置, 数据类型为double,数据输入范围为0-1之间的数
cpubbs_write_statue: 为写指令,卡返回状态,如果为1,则发送指令成功,如果为-1则失败;
参数返回:unsigned char型式的数据类型,如果返回为1则成功,为-1则失败;
=================================================================================================
调用子函数3:
调用函数:unsigned char cpubbs_pwm_open_or_shutdown(int cpubbs_pwm_open_or_shutdown_statue,
int *cpubbs_write_statue);
函数参数:cpubbs_pwm_open_or_shutdown_statue:PWM输出允许还是禁止设定,数据类型为int型,当设定为1
允许输出,设定为0时禁止输出PWM,即为高阻状态;
cpubbs_write_statue: 为写指令,卡返回状态,如果为1,则发送指令成功,如果为-1则失败;
参数返回:unsigned char型式的数据类型,如果返回为1则成功,为-1则失败;
************************************************************************************************/
int CVICALLBACK cpubbs_set_pwm_callback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
//int cpubbs_pwm_open_or_shutdown_statue;
double cpubbs_pwm_6_value;
double cpubbs_pwm_5_value;
double cpubbs_pwm_4_value;
double cpubbs_pwm_3_value;
double cpubbs_pwm_2_value;
double cpubbs_pwm_1_value;
int cpubbs_write_statue;
int cpubbs_pwm_single_double_selection;
unsigned int cpubbs_pwm_frequency_value;
cpubbs_write_statue=0;
switch (event)
{
case EVENT_COMMIT:
GetCtrlVal (panelHandle, PANEL_CHECKBOX, &cpubbs_pwm_single_double_selection);
GetCtrlVal (panelHandle, PANEL_PWM_1, &cpubbs_pwm_1_value);
GetCtrlVal (panelHandle, PANEL_PWM_2, &cpubbs_pwm_2_value);
GetCtrlVal (panelHandle, PANEL_PWM_3, &cpubbs_pwm_3_value);
GetCtrlVal (panelHandle, PANEL_PWM_3, &cpubbs_pwm_3_value);
GetCtrlVal (panelHandle, PANEL_PWM_4, &cpubbs_pwm_4_value);
GetCtrlVal (panelHandle, PANEL_PWM_5, &cpubbs_pwm_5_value);
GetCtrlVal (panelHandle, PANEL_PWM_6, &cpubbs_pwm_6_value);
GetCtrlVal (panelHandle, PANEL_PWM_FREQUENCY, &cpubbs_pwm_frequency_value);
if(cpubbs_pwm_single_double_selection==1)
{
cpubbs_set_pwm_double_edge(cpubbs_pwm_frequency_value,cpubbs_pwm_1_value,cpubbs_pwm_2_value,cpubbs_pwm_3_value,cpubbs_pwm_4_value,cpubbs_pwm_5_value,cpubbs_pwm_6_value,&cpubbs_write_statue);
}
else
{
cpubbs_set_pwm_single_edge(cpubbs_pwm_frequency_value,cpubbs_pwm_1_value,cpubbs_pwm_2_value,cpubbs_pwm_3_value,cpubbs_pwm_4_value,cpubbs_pwm_5_value,cpubbs_pwm_6_value,&cpubbs_write_statue);
}
/*
//下面程序为设定是否允许PWM输出,还是禁止输出,此版本暂时关闭此功能
GetCtrlVal (panelHandle, PANEL_CHECKBOX_PWM, &cpubbs_pwm_open_or_shutdown_statue);
if(cpubbs_pwm_open_or_shutdown_statue==1)
{
cpubbs_pwm_open_or_shutdown(1,&cpubbs_write_statue);
}
else
{
cpubbs_pwm_open_or_shutdown(0,&cpubbs_write_statue);
}
*/
break;
}
return 0;
}
/************************************************************************************************
编写者 :赖卫国(cpubbs)
硬件 :陈智灵
时间 : 2006-6-6-15-13
版本号 :版本1.0
函数作用: 停止所有定时器
网站 : http://www.cpubbs.com
调用函数:无
函数参数:无
参数返回:无
************************************************************************************************/
//因为这里也可以停止高速采集,所以停止高速采集的指令也同时放在这里
int CVICALLBACK cpubbs_stop_all_timer_callback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
SetCtrlAttribute (panelHandle, PANEL_TIMER_AD1_POINT, ATTR_ENABLED, 0);
SetCtrlAttribute (panelHandle, PANEL_TIMER_DA, ATTR_ENABLED, 0);
SetCtrlAttribute (panelHandle, PANEL_TIMER_FAST_AD, ATTR_ENABLED, 0);
break;
}
return 0;
}
/************************************************************************************************
编写者 :赖卫国(cpubbs)
硬件 :陈智灵
时间 : 2006-6-6-15-13
版本号 :版本1.0
函数作用: 启动高速采集AD,并初始化板卡进行高速采集,采集程序放在定时器的回调函数里面,
一定也要在这里关闭单点采集定时器,否则系统冲突,下面有注解(如果没有使用单点采集就不用关);
网站 : http://www.cpubbs.com
调用函数:unsigned char cpubbs_ad_sample_fast_init(int *cpubbs_write_statue)
函数参数:cpubbs_write_statue: 为写指令,卡返回状态,如果为1,则发送指令成功,如果为-1则失败;
参数返回:unsigned char型式的数据类型,如果返回为1则成功,为-1则失败;
************************************************************************************************/
int CVICALLBACK cpubbs_fast_sample_ad (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
char cpubbs_ad_sample_f;
int cpubbs_write_statue=0;
switch (event)
{
case EVENT_COMMIT:
GetCtrlVal (panelHandle, PANEL_NUMERIC_AD_F, &cpubbs_ad_sample_f);
//cpubbs_ad_sample_fast_init(&cpubbs_write_statue);
cpubbs_ad_sample_fast_init(cpubbs_ad_sample_f,&cpubbs_write_statue);
SetCtrlAttribute (panelHandle, PANEL_TIMER_AD1_POINT, ATTR_ENABLED, 0); //为了避免高速采集和单点采集冲突导致系统出问题,所以必须在这里把单点采集定时器关闭
SetCtrlAttribute (panelHandle, PANEL_TIMER_FAST_AD, ATTR_ENABLED, 1); //启动高速采集定时器
break;
}
return 0;
}
/************************************************************************************************
编写者 :赖卫国(cpubbs)
硬件 :陈智灵
时间 : 2006-6-6-15-13
版本号 :版本1.0
函数作用: 高速采集AD转换定时器回调函数;
网站 : http://www.cpubbs.com
调用函数:unsigned char cpubbs_ad_sample_fast(double cpubbs_ad_result_ch1[512],
double cpubbs_ad_result_ch2[512],
double cpubbs_ad_result_ch3[512],
double cpubbs_ad_result_ch4[512],
int *cpubbs_read_statue)
函数参数:cpubbs_ad_result_ch1[512]:为高速AD转换后通道1采回来的数据存放数组,数组类型为double,每次512点;
cpubbs_ad_result_ch2[512]:为高速AD转换后通道2采回来的数据存放数组,数组类型为double,每次512点;
cpubbs_ad_result_ch3[512]:为高速AD转换后通道3采回来的数据存放数组,数组类型为double,每次512点;
cpubbs_ad_result_ch4[512]:为高速AD转换后通道4采回来的数据存放数组,数组类型为double,每次512点;
cpubbs_read_statue : 为读数据指令,卡返回状态,如果为1,则读取数据成功,如果为-1则为失败;
参数返回:unsigned char型式的数据类型,如果返回为1则成功,为-1则失败;
************************************************************************************************/
int CVICALLBACK cpubbs_fast_ad_timer_callback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int cpubbs_ch_no;
double cpubbs_ad_result_ch1[512]={0};
double cpubbs_ad_result_ch2[512]={0};
double cpubbs_ad_result_ch3[512]={0};
double cpubbs_ad_result_ch4[512]={0};
int cpubbs_read_statue=0;
switch (event)
{
case EVENT_TIMER_TICK:
cpubbs_ad_sample_fast(cpubbs_ad_result_ch1,cpubbs_ad_result_ch2,cpubbs_ad_result_ch3,cpubbs_ad_result_ch4,&cpubbs_read_statue);
GetCtrlVal (panelHandle, PANEL_CH_RING, &cpubbs_ch_no);
switch(cpubbs_ch_no)
{
case 1:
{
PlotStripChart (panelHandle, PANEL_STRIPCHART, cpubbs_ad_result_ch1, 512, 0, 0, VAL_DOUBLE);
break;
}
case 2:
{
PlotStripChart (panelHandle, PANEL_STRIPCHART, cpubbs_ad_result_ch2, 512, 0, 0, VAL_DOUBLE);
break;
}
case 3:
{
PlotStripChart (panelHandle, PANEL_STRIPCHART, cpubbs_ad_result_ch3, 512, 0, 0, VAL_DOUBLE);
break;
}
case 4:
{
PlotStripChart (panelHandle, PANEL_STRIPCHART, cpubbs_ad_result_ch4, 512, 0, 0, VAL_DOUBLE);
break;
}
default:
break;
}
if(cpubbs_read_statue==-1) //读取AD值出错处理程序
{
SetCtrlAttribute (panelHandle, PANEL_TIMER_FAST_AD, ATTR_ENABLED, 0); //读取AD出错则停止高速采集定时器
SetCtrlAttribute (panelHandle, PANEL_TIMER_AD1_POINT, ATTR_ENABLED, 0); //启动单点采集定时器
SetCtrlAttribute (panelHandle, PANEL_TIMER_DA, ATTR_ENABLED, 0); //写DA值出错则停止DA输出定时器
}
break;
}
return 0;
}
/************************************************************************************************
编写者 :赖卫国(cpubbs)
硬件 :陈智灵
时间 : 2006-6-6-15-13
版本号 :版本1.0
函数作用: 停止高速采集AD转换定时器,并发指令给卡停止高速AD转换;
网站 : http://www.cpubbs.com
调用函数:unsigned char cpubbs_stop_fast_ad_sample(int *cpubbs_write_statue);
函数参数:cpubbs_write_statue: 为写指令,卡返回状态,如果为1,则发送指令成功,如果为-1则失败;
参数返回:unsigned char型式的数据类型,如果返回为1则成功,为-1则失败;
************************************************************************************************/
int CVICALLBACK cpubbs_stop_fast_ad_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);
break;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -