📄 othertest_org.c
字号:
#include "wea_dos.h"
BOOL FpgaPCBTest(char* info)
{
unsigned short p=FPGA_TEST;
ERROR_CODE err;
BYTE d;
BYTE ram_data[8];
int n,i,m_error_num,m_send_value,m_return_value,m_i;
char info1[500];
char* m_send_table[]={"","","","SCLK_O","SDATA_O","LATCH_O","ENABLE_O","SCLK_O","SDATA_O","LATCH_O",
"ZONE_A","ZONE_B","JOB_END","COL1","COL2","COL3","COL4","X21_1","X21_2","X21_3","X21_4",
"DENSE","EMPTY","RPT_END","READY"};//,"X20_4","X20_4","X19_4","X19_4"};
char* m_return_table[]={"","","","SCLK_IN","SDATA_IN","PS_IN","TEST_IN","SENSOR1","SENSOR2","SENSOR3",
"LEVEL","WEFT_BRK","X14_4","X15_1","X15_2","X15_3","X15_4","24VJM","PO1_24V","24VWM","FAST",
"SLOW","FORWD","BACKWD","WARP_BRK"};//,"","","",""};
char m_send_signal[20],m_return_signal[20],s[100],s_err[100],m_error_info[100];
BOOL OK=1;
/* test FPGA*/
d=0xab;
outb(p,d);
DelayMs(100);
d=inb(p);
if(d!=0xab)
{
strcpy(info,"FPGA test failed !");
return FALSE;
}
/* test FRAM*/
p=PC_MEM_START_O;
for(i=0;i<8;i++)
ram_data[i]=inb(p+i);
for(i=0;i<8;i++)
{
d=((i+1)*30);
outb(p+i,d);
DelayMs(1000);
}
for(i=0;i<8;i++)
{
d=inb(p+i);
if(d!=((i+1)*30))
{
strcpy(info,"FRAM test failed !\n");
}
}
for(i=0;i<8;i++)
{
outb(p+i,ram_data[i]);
DelayMs(1000);
}
/* test IO of FPGA PCB*/
m_error_num=0;
// m_info.Empty();
m_send_signal[0]='\0';
m_return_signal[0]='\0';
m_error_info[0]='\0';
m_send_value=0;
m_return_value=0;
DelayMs(1000);
n=sizeof(m_send_table)/sizeof(char*);
m_i=3;
m_error_info[0]='\0';
while((m_i<n)&&(OK==1))
{
strcpy(m_send_signal,m_send_table[m_i]);
strcpy(m_return_signal,m_return_table[m_i]);
err=FpgaIOTest(m_i,0);
switch(err)
{
case 0:
break;
case E01:
m_send_value=0;
m_return_value=1;
m_error_num=m_i;
sprintf(s_err,"%d ",m_i);
strcat(m_error_info,s_err);
OK=0;
strcpy(s,"FPGA IO test failed !");
break;
case E10:
m_send_value=1;
m_return_value=0;
m_error_num=m_i;
sprintf(s_err,"%d ",m_i);
strcat(m_error_info,s_err);
OK=0;
strcpy(s,"FPGA IO test failure !");
break;
case EP:
sprintf(s_err,"Unknown test number %d ",m_i);
OK=0;
strcat(m_error_info,s_err);
break;
}
m_i++;
}
if((OK==1)&&(strlen(m_error_info)==0))
{
m_error_num=0;
strcpy(s,"FPGA IO test OK");
}
strcat(info,s);
if(strlen(m_error_info)>0)
{
strcat(info,"Error code:");
strcat(info,m_error_info);
}
return OK;
}
ERROR_CODE FpgaIOTest(int TestNumber,int type)
{
int di;
SELF_TEST_1__I d1;
SELF_TEST_2__I d2;
unsigned short p;
MAPI d;
switch(TestNumber)
{
case 3:
// SendSclk(0);
p=MAP_O;
g_map_o._bit.sclk=0;
outb(p,g_map_o._byte);
DelayMs(DELAY_TIME);
// if(GetSclkI()==1)
p=MAP_I;
d._byte=inb(p);
if(d._bit.sclk_i==1);
return E01;
// SendSclk(1);
g_map_o._bit.sclk=1;
outb(p,g_map_o._byte);
DelayMs(DELAY_TIME);
// if(GetSclkI()==0)
p=MAP_I;
d._byte=inb(p);
if(d._bit.sclk_i==1);
return E10;
return OK;
case 4:
// SendSdata(0);
p=MAP_O;
g_map_o._bit.sdata=0;
outb(p,g_map_o._byte);
DelayMs(DELAY_TIME);
// di=GetSdataI();
p=MAP_I;
d._byte=inb(p);
di=d._bit.sdata_i;
if((type==0)&&(di==1))
return E01;
if((type==2)&&(di==0))
return E01;
// SendSdata(1);
p=MAP_O;
g_map_o._bit.sdata=1;
outb(p,g_map_o._byte);
DelayMs(DELAY_TIME);
// di=GetSdataI();
p=MAP_I;
d._byte=inb(p);
di=d._bit.sdata_i;
if((type==0)&&(di==0))
return E10;
if((type==2)&&(di==1))
return E10;
return OK;
case 5:
// SendLatch(0);
p=MAP_O;
g_map_o._bit.latch=0;
outb(p,g_map_o._byte);
DelayMs(DELAY_TIME);
// if(GetPsI()==1)
p=MAP_I;
d._byte=inb(p);
di=d._bit.ps;
if(di==1)
return E01;
// SendLatch(1);
p=MAP_O;
g_map_o._bit.latch=1;
outb(p,g_map_o._byte);
DelayMs(DELAY_TIME);
// if(GetPsI()==0)
p=MAP_I;
d._byte=inb(p);
di=d._bit.ps;
if(di==0)
return E10;
return OK;
case 6:
// SendEnable(0);
p=MAP_O;
g_map_o._bit.sclk=1;
g_map_o._bit.sdata=1;
g_map_o._bit.latch=1;
outb(p,g_map_o._byte);
DelayMs(DELAY_TIME);
p=PC_ENABLE_L_O;
outb(p,0);
DelayMs(DELAY_TIME);
// if(GetTestI()==1)
p=MAP_I;
d._byte=inb(p);
di=d._bit.test;
return E01;
// SendEnable(1);
p=PC_ENABLE_H_O;
outb(p,0);
DelayMs(DELAY_TIME);
// if(GetTestI()==0)
p=MAP_I;
d._byte=inb(p);
di=d._bit.test;
return E10;
return OK;
case 7:
// SendSclk(0);
p=MAP_O;
g_map_o._bit.sclk=0;
outb(p,g_map_o._byte);
DelayMs(DELAY_TIME);
// if(GetSensor1()==1)
p=SELF_TEST_1_I;
d1._byte=_inp(p);
if(d1._bit.sensor1==1)
return E01;
// SendSclk(1);
p=MAP_O;
g_map_o._bit.sclk=1;
outb(p,g_map_o._byte);
DelayMs(DELAY_TIME);
// if(GetSensor1()==0)
p=SELF_TEST_1_I;
d1._byte=_inp(p);
if(d1._bit.sensor1==0)
return E10;
return OK;
case 8:
// SendSdata(0);
p=MAP_O;
g_map_o._bit.sdata=0;
outb(p,g_map_o._byte);
DelayMs(DELAY_TIME);
// if(GetSensor2()==1)
p=SELF_TEST_1_I;
d1._byte=_inp(p);
if(d1._bit.sensor2==1)
return E01;
// SendSdata(1);
p=MAP_O;
g_map_o._bit.sdata=1;
outb(p,g_map_o._byte);
DelayMs(DELAY_TIME);
// if(GetSensor2()==0)
p=SELF_TEST_1_I;
d1._byte=_inp(p);
if(d1._bit.sensor2==0)
return E10;
return OK;
case 9:
// SendLatch(0);
p=MAP_O;
g_map_o._bit.latch=0;
outb(p,g_map_o._byte);
DelayMs(DELAY_TIME);
// if(GetSensor3()==1)
p=SELF_TEST_1_I;
d1._byte=_inp(p);
if(d1._bit.sensor3==1)
return E01;
// SendLatch(1);
p=MAP_O;
g_map_o._bit.latch=1;
outb(p,g_map_o._byte);
DelayMs(DELAY_TIME);
// if(GetSensor3()==0)
p=SELF_TEST_1_I;
d1._byte=_inp(p);
if(d1._bit.sensor3==0)
return E10;
return OK;
case 10:
// SendZoneA(0);
p=SELF_TEST_O;
g_self_test._bit.zone_a=0;
outb(p,g_self_test._byte);
DelayMs(DELAY_TIME);
// if(GetLevel()==1)
p=WEAVER_I;
g_wea_i._byte=inb(p);
if(g_wea_i._bit.shutle==1)
return E01;
// SendZoneA(1);
p=SELF_TEST_O;
g_self_test._bit.zone_a=1;
outb(p,g_self_test._byte);
DelayMs(DELAY_TIME);
// if(GetLevel()==0)
p=WEAVER_I;
g_wea_i._byte=inb(p);
if(g_wea_i._bit.shutle==0)
return E10;
return OK;
case 11:
// SendZoneB(0);
p=SELF_TEST_O;
g_self_test._bit.zone_b=0;
outb(p,g_self_test._byte);
DelayMs(DELAY_TIME);
// if(GetWeftBrk()==1)
p=WEAVER_I;
g_wea_i._byte=inb(p);
if(g_wea_i._bit.wo_brk==1)
return E01;
// SendZoneB(1);
p=SELF_TEST_O;
g_self_test._bit.zone_b=1;
outb(p,g_self_test._byte);
DelayMs(DELAY_TIME);
// if(GetWeftBrk()==0)
p=WEAVER_I;
g_wea_i._byte=inb(p);
if(g_wea_i._bit.wo_brk==0)
return E10;
return OK;
case 12:
// SendJobEnd(0);
p=WEAVER_O;
g_wea_o._bit.job_end=0;
outb(p,g_wea_o._byte);
// if(GetX14_4()==1)
d2._byte=inb(p);
if(d2._bit.x14_4==1)
return E01;
// SendJobEnd(1);
p=WEAVER_O;
g_wea_o._bit.job_end=1;
outb(p,g_wea_o._byte);
// if(GetX14_4()==0)
d2._byte=inb(p);
if(d2._bit.x14_4==0)
return E10;
return OK;
case 13:
SendWeftSel(0);
if(GetX15_1()==1)
return E01;
SendWeftSel(1);
if(GetX15_1()==0)
return E10;
return OK;
case 14:
SendWeftSel(0);
if(GetX15_2()==1)
return E01;
SendWeftSel(2);
if(GetX15_2()==0)
return E10;
return OK;
case 15:
SendWeftSel(0);
if(GetX15_3()==1)
return E01;
SendWeftSel(4);
if(GetX15_3()==0)
return E10;
return OK;
case 16:
SendWeftSel(0);
if(GetX15_4()==1)
return E01;
SendWeftSel(8);
if(GetX15_4()==0)
return E10;
return OK;
case 17:
SendX21_1(0);
if(Get24VJM()==1)
return E01;
SendX21_1(1);
if(Get24VJM()==0)
return E10;
return OK;
case 18:
SendX21_2(0);
if(GetPO1_24V()==1)
return E01;
SendX21_2(1);
if(GetPO1_24V()==0)
return E10;
return OK;
case 19:
SendX21_3(0);
if(Get24VWM()==1)
return E01;
SendX21_3(1);
if(Get24VWM()==0)
return E10;
return OK;
case 20:
SendX21_4(0);
if(GetFast()==1)
return E01;
SendX21_4(1);
if(GetFast()==0)
return E10;
return OK;
case 21:
SendDense(0);
if(GetSlow()==1)
return E01;
SendDense(1);
if(GetSlow()==0)
return E10;
return OK;
case 22:
SendEmpty(0);
if(GetForwd()==1)
return E01;
SendEmpty(1);
if(GetForwd()==0)
return E10;
return OK;
case 23:
SendRptEnd(0);
if(GetBackwd()==1)
return E01;
SendRptEnd(1);
if(GetBackwd()==0)
return E10;
return OK;
case 24:
SendReady(0);
if(GetWarpBrk()==1)
return E01;
SendReady(1);
if(GetWarpBrk()==0)
return E10;
return OK;
case 25:
SendX20_4(0);
return E01;
case 26:
SendX20_4(1);
return E10;
case 27:
SendX19_4(0);
return E01;
case 28:
SendX19_4(1);
return E10;
}
return EP;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -