📄 test812.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 + -