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

📄 test812.c

📁 用于工业控制方面.常见的板卡操作.板卡型号为812板.
💻 C
字号:
#undef _TEST812_H
#define _TEST812_C

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include <graphics.h>
#include "\hxn\lib\812\test812.h"

void test812(unsigned int *douti)
{
	int  j, Quit = 0, cl=0, ch=16, kh, dnum=0;
	int sped, len, ll;
	int jj=0;
	float fls,fls1;
	float aaout=0.0,aa;
	unsigned char i;
	int ad_num[16];
	float v_num[16];
	float speed;
	unsigned int io_in, ucls1, ucls2;

	Tsavb=*douti;

	cleardevice();
	analog_output( &aaout);
	gotoxy(25, 2);
	printf("AD TEST PROGRAME     ver1.0");
	gotoxy(3,4);
	printf("F9:real V   F10:reset sys.  PageUp:d/a up. PageDown: d/a down.  ESC:exit");
	gotoxy(3, 6);
	printf("\n   AD Value   DiGet  MeasureGet                 DI  DIGITAL   OUTPUT \n");
	for(i=0; i<9; i++){
		printf("\n  Chl%i\t\t\t\t                S%i            K%i", i+1, i+1, i+1);
	}
	for(i=9; i<16; i++){
		printf("\n  Chl%i\t\t\t\t                S%i           K%i", i+1, i+1, i+1);
	}
	for(i=0; i<16; i++){
		gotoxy(73, 9+i);
		if( (Tsavb & dout[i])==0)
			printf("0");
		else printf("1");
	}
	gotoxy(70, 8);
	printf("* K%i *", 1);

	do{
		for(i=cl; i<ch; i++){
			ad_num[i] = point(i);
			v_num[i]=5.0*ad_num[i]/2048;
			gotoxy(9, 9+i);
			printf("%5.2f ", v_num[i]);
			gotoxy(16,9+i);
			printf("%i    ", ad_num[i]);

			switch(i){
			}
		}

		if(kbhit()){
			kh = bioskey(0);
			switch(kh){
				case KEY_ESC:  Quit = 1;
					break;
				case KEY_UP:
					dnum --;
					if(dnum<0) dnum=0;
					gotoxy(70, 8);
					printf("* K%i *", dnum+1);
					break;
				case KEY_DOWN:
					dnum ++;
					if(dnum>15) dnum=15;
					gotoxy(70, 8);
					printf("* K%i *", dnum+1);
					break;
				case KEY_RIGHT:
					//dout |= (0x01<<dnum);
					gotoxy(73, 9+dnum);
					if(DigitOutNotOk(dnum, 1))
						break;
					printf("1");
					Tsavb |= dout[dnum];
					digital_output(Tsavb);
					break;
				case KEY_LEFT:
					//dout &= (0xff ^ ( 0x01 <<dnum) );
					gotoxy(73, 9+dnum);
					if(DigitOutNotOk(dnum, 0))
						break;
					printf("0");
					if(Tsavb&dout[dnum]) Tsavb^=dout[dnum];
					digital_output(Tsavb);
					break;
				case KEY_1:
					cl=0;
					ch=1;
					break;
				case KEY_2:
					cl=1;
					ch=2;
					break;
				case KEY_3:
					cl=2;
					ch=3;
					break;
				case KEY_4:
					cl=3;
					ch=4;
					break;
				case KEY_5:
					cl=4;
					ch=5;
					break;
				case KEY_6:
					cl=5;
					ch=6;
					break;
				case KEY_7:
					cl=6;
					ch=7;
					break;
				case KEY_8:
					cl=7;
					ch=8;
					break;
				case KEY_F1:
					cl=8;
					ch=9;
					break;
				case KEY_F2:
					cl=9;
					ch=10;
					break;
				case KEY_F3:
					cl=10;
					ch=11;
					break;
				case KEY_F4:
					cl=11;
					ch=12;
					break;
				case KEY_F5:
					cl=12;
					ch=13;
					break;
				case KEY_F6:
					cl=13;
					ch=14;
					break;
				case KEY_F7:
					cl=14;
					ch=15;
					break;
				case KEY_F8:
					cl=15;
					ch=16;
					break;
				case KEY_0:
					cl=0;
					ch=16;
					break;
				case KEY_Q:
				case KEY_q:
					jj=1;
					break;
				case KEY_w:
				case KEY_W:
					jj=2;
					break;
				case KEY_e:
				case KEY_E:
					jj=3;
					break;
				case KEY_r:
				case KEY_R:
					jj=4;
					break;
				case KEY_F9:
					for(j=0;j<16;j++){
						Tzero[j]=0;
					}
					break;
				case KEY_S:
				case KEY_s:
					//speed=sample_speed_value(20);
					//gotoxy(20,24);
					//printf("speed=%4.1f  ",speed);
				case KEY_F10:
					//InitSys1();
					break;
				case PG_UP:
					aaout +=0.1;
					if(aaout>9.99)aaout=9.99;
					analog_output( &aaout);
					gotoxy(45,25);
					printf("[AnalogOut:%3.2f]  ",aaout);
					break;
				case PG_DOWN:
					aaout -=0.1;
					if(aaout<0.0)aaout=0.0;
					analog_output( &aaout);
					gotoxy(45,25);
					printf("[AnalogOut:%3.2f]  ",aaout);
					break;
				case KEY_HOME:
					break;
			}
		}
		io_in = digital_input();
		for(i=0; i<16; i++){
			gotoxy(55, 9+i);
			ucls1 = io_in;
			io_in >>= 1;
			ucls1 &= 0x0001;
			printf("%i", ucls1 );
		}

	}while(Quit != 1);
	*douti=Tsavb;
}

int DigitOutNotOk(int dinum, int outnum)
{
	return(0);
}
int analog_input( int channel )
{
	int     ad_data,err;

	_812_AD_Set_Channel(channel);      /* Setup A/D Ch.#0  */
	_812_AD_Set_Gain(AD_GAIN_1);      /* Setup A/D Ch.#0  */
	if( (err=_812_AD_Aquire( &ad_data)) != NoError ){
		//printf("ACL-812PG Error Number : #%d.\n", err );
		//exit(0);
	}
	return ad_data;
}
/*--------------------------------------*/
//new
void analog_output( float *aa)
{
	unsigned int val;
	float bb;

	bb=((*aa)/10)*4096;
	val=bb;
	_812_DA(0, val );
	_812_DA(1, val );
}
/*----------------------------------------*/
int point( int channel )
{
	register int i,j=0,k;
/*    static unsigned v, sum, max, min; */
	int v[20],intr,sum2[30],sum;
	long sum1=0,maxl,minl;

	//for(j=0;j<40;j++){
		for( i = 0; i < 8; i++ ) {
			v[i] = analog_input( channel )-2047- Tzero[channel];
		}
		sortint1(8,3,v);
		intr=0;
		sum1=0;
		for(k=3;k<5;k++)
			sum1 +=v[k];
		sum2[j]=sum1/2;
	//}
	/*
	sortint1(40,10,sum2);
	sum1=0;
	for(i=10;i<30;i++)
		sum1 +=sum2[i];
	*/
	intr=sum2[j];
	return( intr );
}
/*-----------------------------------------*/
//new !! change byte to 2 bytes
int digital_input( void )
{
	int di;
	unsigned char cls[2];
	_812_DI( DI_LO_BYTE , cls );
	_812_DI( DI_HI_BYTE , cls+1 );
	di = cls[1]*256+cls[0];
	return di;
}
/*------------------------------------------*/
//new
void digital_output( int wenling )
{
	unsigned char dolow,dohigh;

	dohigh=wenling/256;
	dolow=wenling%256;
	//printf("\n%x %x %x",wenling,dolow,dohigh);
	_812_DO( DO_LO_BYTE , dolow );
	_812_DO( DO_HI_BYTE , dohigh );
}
void sortint1(int count,int sort_no,int *buff1)
{
int tt,i,j;

	for(i=0;i<sort_no;i++)			 // sort BIG 10 points
	  for(j=i+1;j<count;j++)
		if(buff1[i]<buff1[j])
		  {
			tt=buff1[i];
			buff1[i]=buff1[j];
			buff1[j]=tt;
		  }
	for(i=count-1;i>count-sort_no-1;i--) // sort SMALL 10 points
	  for(j=i-1;j>0;j--)
		if(buff1[i]>buff1[j])
		  {
			tt=buff1[i];
			buff1[i]=buff1[j];
			buff1[j]=tt;
		  }
}

⌨️ 快捷键说明

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