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

📄 othertest_org.c

📁 该程序实现的是一个在织布厂用的提花机程序
💻 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 + -