⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpubbs_test_dll.c

📁 labview for USB usb2.0采集卡学习资料
💻 C
📖 第 1 页 / 共 3 页
字号:
		  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 + -