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

📄 powermc.c

📁 cvi编程举例
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <utility.h>
#include <gpib.h>
#include <ansi_c.h>
#include <cvirte.h>		
#include <userint.h>
#include "powermc.h"


static int panelHandle;
static int sign=1;
static int mark=0;
static int autoread=0;
static int device=0;
static int threadFunctionID=0;
static char DataBuffer_VOLT[20];
static char DataBuffer_CURR[20];




//MAIN FUNCTION:
int __stdcall WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                       LPSTR lpszCmdLine, int nCmdShow)
{
	if (InitCVIRTE (hInstance, 0, 0) == 0)
		return -1;	/* out of memory */
	if ((panelHandle = LoadPanel (0, "powermc.uir", PANEL)) < 0)
		return -1;
	DisplayPanel (panelHandle);
	device = ibdev (0, 5, NO_SAD, T10s, 1, 0);	    //打开设备并设置参数
	ibwrt(device,"*RST",4);
	SetCtrlVal (panelHandle, PANEL_LED_RMT, 1);
	RunUserInterface ();
	DiscardPanel (panelHandle);
	return 0;
}


  
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*									          ENTYR AREA														   */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */



//ENTER VOLTAGE:
int CVICALLBACK ENTRY_VOLTAGE (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	switch (event)
	{
		case EVENT_COMMIT:

			sign=1;
			mark=1;
			
			break;
	}
	return 0;
}


//ENTER CURRENT:
int CVICALLBACK ENTRY_CURRENT (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	switch (event)
	{
		case EVENT_COMMIT:

			sign=0;
			mark=1;
			
			break;
	}
	return 0;
}


//ENTER TO THE POWER SUPPLY:
int CVICALLBACK ENTRY_ENTER (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	char string[10]={'0','0','0','0','0','0'};
	char string_VOLT[20]="VOLT ";
	char string_CURR[20]="CURR ";
	unsigned int i=0,length=0;
	double temp=0;
	
	switch (event)
	{
		case EVENT_COMMIT:
			
			if (sign==1)
			 {  
		     	GetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, string); 
			    length=strlen(string);
				for (;string[i]!='.'&&i<=5;i++);
				if (i==1)
				{
					temp=(length-0>0)*(string[0]-48) + (length-2>0)*(string[2]-48)*0.1 + (length-3>0)*(string[3]-48)*0.01 + (length-4>0)*(string[4]-48)*0.001;
					if (temp<0||temp>35){SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, "Error");SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, "Error"); mark=1; break;} 
				}
				else
				{
					if (i>1&&i==2)
					{
						temp=(length-0>0)*(string[0]-48)*10 + (length-1>0)*(string[1]-48) + (length-3>0)*(string[3]-48)*0.1 + (length-4>0)*(string[4]-48)*0.01 + (length-5>0)*(string[5]-48)*0.001;
						if (temp<0||temp>35){SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, "Error");SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, "Error"); mark=1; break;}
					}
					else
					{						
						 temp=(length-2>0)*(string[abs(length-3)]-48)*100 + (length-1>0)*(string[abs(length-2)]-48)*10 + (length-0>0)*(string[length-1]-48);
						 if (temp<0||temp>35){SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, "Error");SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, "Error"); mark=1; break;}
					}
				}
			 	strcat (string_VOLT,string);
				ibwrt (device, "OUTP OFF", 8);
				ibwrt (device, string_VOLT, strlen(string_VOLT));
				ibwrt (device, "OUTP ON", 7);
			    
				Delay (0.5); 
				FUNCTION_READ (1, 45, 1, 0, 0, 0);
				
			 }
			 
			else
			 {  
				GetCtrlVal (panelHandle, PANEL_STRING_CURRENT, string); 
				length=strlen(string);
				for (;string[i]!='.'&&i<=5;i++);
				if (i==1)
				{
					temp=(length-0>0)*(string[0]-48) + (length-2>0)*(string[2]-48)*0.1 + (length-3>0)*(string[3]-48)*0.01 + (length-4>0)*(string[4]-48)*0.001;
					if (temp<0||temp>60){SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, "FUCKYOU!");SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, "Error"); mark=1; break;}
				}
				else
				{
					if (i>1&&i==2)
					{
						temp=(length-0>0)*(string[0]-48)*10 + (length-1>0)*(string[1]-48) + (length-3>0)*(string[3]-48)*0.1 + (length-4>0)*(string[4]-48)*0.01 + (length-5>0)*(string[5]-48)*0.001;
						if (temp<0||temp>60){SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, "Error");SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, "Error");mark=1;break;}
					}
					else
					{
						temp=(length-2>0)*(string[abs(length-3)]-48)*100 + (length-1>0)*(string[abs(length-2)]-48)*10 + (length-0>0)*(string[length-1]-48);
						if (temp<0||temp>60){SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, "Error");SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, "Error"); mark=1; break;}
					}
				}
			 	strcat (string_CURR,string);
				ibwrt (device, "OUTP OFF", 8);
				ibwrt (device, string_CURR, strlen(string_CURR));
				ibwrt (device, "OUTP ON", 7);
				
				Delay (0.5); 
			    FUNCTION_READ (1, 45, 1, 0, 0, 0);
				
			 }
			
			 mark=1;
			 
			break;
	}
	return 0;
}


//CLEAR:
int CVICALLBACK ENTRY_CLEAR (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	switch (event)
	{
		case EVENT_COMMIT:
			 {
			    SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, "0");
			 	SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, "0");
				mark=0;
			 }
			break;
	}
	return 0;
}


//DELETE A CHAR:
int CVICALLBACK ENTRY_DELETE (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	char string[10];
	
	switch (event)
	{
		case EVENT_COMMIT:

			if (sign==1)
			{
				GetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, string);
				if (string[0]=='\0') {SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, "0");break;} 
				string[strlen(string)-1]='\0';
				SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, string);
				if (string[0]=='\0') {SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, "0");}
			}
			else
			{
				GetCtrlVal (panelHandle, PANEL_STRING_CURRENT, string);
				if (string[0]=='\0') {SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, "0");break;} 
				string[strlen(string)-1]='\0';
				SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, string);
				if (string[0]=='\0') {SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, "0");}
			}
			
			break;
	}
	return 0;
}


//DECIMAL PIONT:
int CVICALLBACK ENTRY_POINT (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	char string[10];
	unsigned int i=0;
	
	switch (event)
	{
		case EVENT_COMMIT:

			 if (sign==1)
			 {
		     	GetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, string);
				for (;string[i]!='.'&&i<=5;i++);
				if (string[i]=='.') break;
			 	if (strlen(string)==6&&mark!=1) break; 
				
				if (mark==1) {SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, "0.");}
				else {strcat(string,"."); SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, string);}
			 }
			 else
			 {
				GetCtrlVal (panelHandle, PANEL_STRING_CURRENT, string);
				for (;string[i]!='.'&&i<=5;i++);
				if (string[i]=='.') break;
				if (strlen(string)==6&&mark!=1) break;
				
				if (mark==1) {SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, "0.");}
				else {strcat(string,"."); SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, string);}	 
			 } 

			 mark=0; 
			
			break;
	}
	return 0;
}


//NUMBER 0:
int CVICALLBACK ENTRY_0 (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	char string[10];
	
	switch (event)
	{
		case EVENT_COMMIT:

			 if (sign==1)
			 {
		     	GetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, string);
				if (strlen(string)==6&&mark!=1) break;
			 	if (string[0]=='0'&&string[1]!='.'||mark==1)
			 		SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, "0");
				else	
				{
					strcat(string,"0");
			 		SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, string);
				}	
			 }   
			 else
			 {
				GetCtrlVal (panelHandle, PANEL_STRING_CURRENT, string);
				if (strlen(string)==6&&mark!=1) break;
			 	if (string[0]=='0'&&string[1]!='.'||mark==1)
			 		SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, "0");
				else	
				{
					strcat(string,"0");
			 		SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, string);
				}				
			 } 
			
			 mark=0;
			 
			break;
	}
	return 0;
}


//NUMBER 9:
int CVICALLBACK ENTRY_9 (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	char string[10];
	
	switch (event)
	{
		case EVENT_COMMIT:

			 if (sign==1)
			 {
		     	GetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, string);
				if (strlen(string)==6&&mark!=1) break;
			 	if (string[0]=='0'&&string[1]!='.'||mark==1)
			 		SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, "9");
				else	
				{
					strcat(string,"9");
			 		SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, string);
				}	

			 }
			 else
			 {
				GetCtrlVal (panelHandle, PANEL_STRING_CURRENT, string);
				if (strlen(string)==6&&mark!=1) break;
			 	if (string[0]=='0'&&string[1]!='.'||mark==1)
			 		SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, "9");
				else	
				{
					strcat(string,"9");
			 		SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, string);
				}
			 } 
			
			 mark=0;
			 
			break;
	}
	return 0;
}


//NUMBER 8:
int CVICALLBACK ENTRY_8 (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	char string[10];
	
	switch (event)
	{
		case EVENT_COMMIT:

			 if (sign==1)
			 {
		     	GetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, string);
				if (strlen(string)==6&&mark!=1) break;
			 	if (string[0]=='0'&&string[1]!='.'||mark==1)
			 		SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, "8");
				else	
				{
					strcat(string,"8");
			 		SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, string);
				}	

			 }
			 else
			 {
				GetCtrlVal (panelHandle, PANEL_STRING_CURRENT, string);
				if (strlen(string)==6&&mark!=1) break;
			 	if (string[0]=='0'&&string[1]!='.'||mark==1)
			 		SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, "8");
				else	
				{
					strcat(string,"8");
			 		SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, string);
				}
			 }
			
			 mark=0;
			 
			break;
	}
	return 0;
}


//NUMBER 7:
int CVICALLBACK ENTRY_7 (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	char string[10];
	
	switch (event)
	{
		case EVENT_COMMIT:

			 if (sign==1)
			 {
		     	GetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, string);
				if (strlen(string)==6&&mark!=1) break;
			 	if (string[0]=='0'&&string[1]!='.'||mark==1)
			 		SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, "7");
				else	
				{
					strcat(string,"7");
			 		SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, string);
				}	

			 }
			 else
			 {
				GetCtrlVal (panelHandle, PANEL_STRING_CURRENT, string);
				if (strlen(string)==6&&mark!=1) break;
			 	if (string[0]=='0'&&string[1]!='.'||mark==1)
			 		SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, "7");
				else	
				{
					strcat(string,"7");
			 		SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, string);
				}
			 } 
			
			 mark=0;
			 
			break;
	}
	return 0;
}


//NUMBER 6:
int CVICALLBACK ENTRY_6 (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	char string[10];
	
	switch (event)
	{
		case EVENT_COMMIT:

			 if (sign==1)
			 {
		     	GetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, string);
				if (strlen(string)==6&&mark!=1) break;
			 	if (string[0]=='0'&&string[1]!='.'||mark==1)
			 		SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, "6");
				else	
				{
					strcat(string,"6");
			 		SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, string);
				}	

			 }
			 else
			 {
				GetCtrlVal (panelHandle, PANEL_STRING_CURRENT, string);
				if (strlen(string)==6&&mark!=1) break;
			 	if (string[0]=='0'&&string[1]!='.'||mark==1)
			 		SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, "6");
				else	
				{
					strcat(string,"6");
			 		SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, string);
				}
			 } 
			
			 mark=0;
			 
			break;
	}
	return 0;
}


//NUMBER 5:
int CVICALLBACK ENTRY_5 (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	char string[10];
	
	switch (event)
	{
		case EVENT_COMMIT:
			
			 if (sign==1)
			 {
		     	GetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, string);
				if (strlen(string)==6&&mark!=1) break;
			 	if (string[0]=='0'&&string[1]!='.'||mark==1)
			 		SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, "5");
				else	
				{
					strcat(string,"5");
			 		SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, string);
				}	

			 }
			 else
			 {
				GetCtrlVal (panelHandle, PANEL_STRING_CURRENT, string);
				if (strlen(string)==6&&mark!=1) break;
			 	if (string[0]=='0'&&string[1]!='.'||mark==1)
			 		SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, "5");
				else	
				{
					strcat(string,"5");
			 		SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, string);
				}
			 }
			
			 mark=0;
			 
			break;
	}
	return 0;
}


//NUMBER 4:
int CVICALLBACK ENTRY_4 (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	char string[10];
	
	switch (event)
	{
		case EVENT_COMMIT:

			 if (sign==1)
			 {
		     	GetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, string);
				if (strlen(string)==6&&mark!=1) break;
			 	if (string[0]=='0'&&string[1]!='.'||mark==1)
			 		SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, "4");
				else	
				{
					strcat(string,"4");
			 		SetCtrlVal (panelHandle, PANEL_STRING_VOLTAGE, string);
				}	

			 }
			 else
			 {
				GetCtrlVal (panelHandle, PANEL_STRING_CURRENT, string);
				if (strlen(string)==6&&mark!=1) break;
			 	if (string[0]=='0'&&string[1]!='.'||mark==1)
			 		SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, "4");
				else	
				{
					strcat(string,"4");
			 		SetCtrlVal (panelHandle, PANEL_STRING_CURRENT, string);
				}
			 }
			 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -