senddata.c

来自「该程序实现的是一个在织布厂用的提花机程序」· C语言 代码 · 共 423 行

C
423
字号
#include "wea_dos.h"

int SendData(char* info)// return 0: error;  1: finish job and end program
{
//	HARDWARE_ERROR HardErr;
	BOOL bEnable_h,bBackwd_h,bWobrk_h,bShutle_h,bFirstBack,bToMap,bCheckOK;
	/*BOOL bButtonLocked=0;*/
	BOOL bDataErr=0,bFinish=0;
	int flag=0,bSendData;
	int p=WEAVER_I;
	/*unsigned char inkey;*/

	g_wea_i._byte=inb(p);
	bEnable_h=g_wea_i._bit.enable;
	bBackwd_h=g_wea_i._bit.backwd;
	bWobrk_h=g_wea_i._bit.wo_brk;
	bShutle_h=g_wea_i._bit.shutle;
	bFirstBack=0;
	g_bWoofFinish=0;

	StartRun();
//		outinfo(RUNDIS,"");
	bSendData=2;
	while(bSendData==2)
	{
//		bSendData=SubInKey();
	//	outinfo(RUNDIS,"");
		bCheckOK=1;
		DelayMs(5);
		if(CheckIO(info)==FALSE)
		{
			bSendData=0;
			StopRun();
			DisplayInfo(info);
		}
#ifdef SOFT_SLOW_RUN
	g_wea_i._bit.enable=1-g_wea_i._bit.enable;
	DelayMs(100);
#else
                                p=WEAVER_I;
				g_wea_i._byte=inb(p);

#endif

//		g_wea_i._byte=inb(p);



#ifdef SOFT_FSAT_RUN
	g_wea_i._bit.fast=0;
#endif
#ifdef SOFT_SLOW_RUN
	g_wea_i._bit.fast=1;
#endif
		switch(flag)
		{
		case 0:
/* for fast run */
			while(g_wea_i._bit.fast==0)
			{
		if(CheckIO(info)==FALSE)
		{
			bSendData=0;
			StopRun();
			DisplayInfo(info);
		}
				if((bEnable_h==1) && (g_wea_i._bit.enable==0))  /* enable falling_edge*/
				{
					bFinish=Forward1();            /*case 1*/
					bCheckOK=SendOneLineCheckThis(0);
					/*sprintf(ctemp,"fast run:  woof:%d   repeat:%d",g_iLine._int,g_iWeaRepeat._int);*/
					/*outinfo(INFODIS,ctemp);*/
					DisplayFast();
					if(bFinish)
					{
						DisplayJob(&g_job,"");
						DisplayInfo("Job_List has been finished,continue (y/n)?");
						info[0]=getch();
						if(info[0]=='y' || info[0]=='Y')
						{
							ResetPoint();
							DisplayJob(&g_job,"");
						}
						else
						{
							info[0]='\0';
							if(KeyMain(0,info)==0)
							{
								StopRun();
								return 1;
							}
							ResetPoint();
							DisplayJob(&g_job,"");
						}
					}
				}
				if((bEnable_h==0) && (g_wea_i._bit.enable==1))/*  enable rising_dedge; fast 0*/
				{
					SendControl(g_wea_i._bit.backwd,g_wea_i._bit.shutle);
				}

				bEnable_h=g_wea_i._bit.enable;
#ifdef SOFT_FSAT_RUN
	g_wea_i._bit.enable=1-g_wea_i._bit.enable;
#else
				g_wea_i._byte=inb(p);

#endif
				if(CheckIO(info)==FALSE)
				{
					StopRun();
					bSendData=0;
					DisplayInfo(info);
					Forward1();
					Forward1();
					DelayMs(100);
					break;
				}
				if((bCheckOK==FALSE) && (g_bDataLock==1))
				{
					bSendData=0;
					Forward1();
					StopRun();
			//		outinfo(ERRDIS,"Data transmission error in running");
			//		Sleep(1);
					sprintf(info,"Data transfor error");
					break;
				}
			}          /*caes 0,  while(fast)*/
			if(bSendData!=2)
				break;   // jump out of case 0 
			if((bBackwd_h==1) && (g_wea_i._bit.backwd==0) ) /* not fast, backwd falling_edge*/
			{
				if(g_wea_i._bit.shutle==0)    /*shutle=0, case 8 */
				{
					bToMap=1;
					Backward1();                 /* case 8 */
					Backward1();
					SendOneLine(1);
//					outinfo(DEBDIS,"case 8");
					flag=8;
				}
				else
				{                                   /* case 7 */
					Backward1();
					Backward1();
					Backward1();
				//	outinfo(DEBDIS,"case 7");
					SendOneLine(0);
					flag=7;
				}
			}
			else if((bEnable_h==1) && (g_wea_i._bit.enable==0))/*  enable falling_dedge;*/
			{
				bFinish=Forward1();            /*case 1*/
				SendOneLine(0);
				if(bFinish)
				{
					DisplayInfo("Job_List has been finished,continue (y/n)?");
					info[0]=getch();
					if(info[0]=='y' || info[0]=='Y')
					{
						ResetPoint();
						DisplayJob(&g_job,"");
					}
					else
					{
							info[0]='\0';
							if(KeyMain(0,info)==0)
							{
								StopRun();
								return 1;
							}
							ResetPoint();
							DisplayJob(&g_job,"");
					}
				}
			}
			else if((bEnable_h==0) && (g_wea_i._bit.enable==1))  /*enable rising_edge  fast=1*/
			{
				SendControl(g_wea_i._bit.backwd,g_wea_i._bit.shutle);
			}
			break;
		case 8:
#ifdef PEN_QI
			if((bEnable_h==0) && (g_wea_i._bit.enable==1))//  enable rising_dedge;  ***** 8/29
					SendControl(g_wea_i._bit.backwd,g_wea_i._bit.shutle);
#endif
			if((bEnable_h==1) && (g_wea_i._bit.enable==0))/*  enable falling_dedge;*/
			{
				bToMap=1;
				Backward1();                 /* case 3*/
				SendOneLine(0);
		//		outinfo(DEBDIS,"case 3");
				flag=3;
			}
			break;
		case 3:
			if((bBackwd_h==0) && (g_wea_i._bit.backwd==1))  /*backword rising_edge*/
			{
				Forward1();    /* case 11*/
				Forward1();
				SendOneLine(0);
	//			outinfo(DEBDIS,"case 11");
				flag=0;
				if(bDataErr==1)
				{
					Forward1();
					bSendData=0;
					StopRun();
					DelayMs(100);
				}
			}
			break;
		case 7:
#ifdef PEN_QI
			if((bEnable_h==0) && (g_wea_i._bit.enable==1))//  enable rising_dedge;  ***** 8/29
					SendControl(g_wea_i._bit.backwd,g_wea_i._bit.shutle);
#endif
			if((bBackwd_h==0) && (g_wea_i._bit.backwd==1))/*  backward rising_dedge;*/
			{
				Forward1(); /* case 14  */
				Forward1();
				Forward1();
				SendOneLine(0);
	//			outinfo(DEBDIS,"case 14");
				flag=0;
				if(bDataErr==1)
				{
					Forward1();
					bSendData=0;
					StopRun();
		//			outinfo(ERRDIS,"Data Error in running");
					DelayMs(100);
				}
				break;
			}

			if((bEnable_h==1) && (g_wea_i._bit.enable==0))/*enable falling_dedge;*/
			{
				if(bFirstBack==1)
				{
					bFirstBack=0;
					if(g_wea_i._bit.wo_brk==0)
					{
						Backward1();         /* case 5*/
						SendOneLine(0);
				//		outinfo(DEBDIS,"case 5");
						flag=5;
#ifdef PEN_QI
						SendControl(g_wea_i._bit.backwd,g_wea_i._bit.shutle);        //    ******* 8/29
#endif
						break;
					}
				}
				Backward1();                 /*case 2*/
				Backward1();
				SendOneLine(0);
		//		outinfo(DEBDIS,"case 2");
				flag=2;
			}
			break;
		case 2:
			if((bBackwd_h==0) && (g_wea_i._bit.backwd==1))  /*backword rising_edge*/
			{
				Forward1();            /* case 10*/
				Forward1();
				Forward1();
				Forward1();
				SendOneLine(0);
		//		outinfo(DEBDIS,"case 10");
				flag=0;
				if(bDataErr==1)
				{
					Forward1();
					bSendData=0;
					StopRun();
					DelayMs(100);
				}
			}
			break;
		case 5:
			if((g_wea_i._bit.enable==0) && (bEnable_h==1)) /* enable falling_edge*/
			{
				Backward1();         /* case 6   */
				SendOneLine(0);
	//			outinfo(DEBDIS,"case 6");
				flag=6;
				break;
			}
#ifdef PEN_QI	
			if((bBackwd_h==0) && (g_wea_i._bit.backwd==1))    // backward rising-edge ******** 8/27
			{
				Forward1();                    // case 14
				Forward1();
				Forward1();
		//		OneLineToMap(0);
                                SendOneLine(0);
				g_bWoofFinish=1;
				flag=0;
				if(bDataErr==1)
				{
					Forward1();
					bSendData=0;
					StopRun();
					DelayMs(100);
				}
			}
			break;
#endif
			if((g_wea_i._bit.shutle==0) && (bShutle_h==1))/* shutle falling_edge */
			{
				Forward1();  /* case 9     */
				SendOneLine(1);
			//	outinfo(DEBDIS,"case 9");
				flag=9;
			}
			break;
		case 6:
			if((bBackwd_h==0) && (g_wea_i._bit.backwd==1))  /*backword rising_edge*/
			{
				Forward1();  /* case 14  */
				Forward1();
				Forward1();
				SendOneLine(0);
				g_bWoofFinish=1;
		//		outinfo(DEBDIS,"case 14");
				flag=0;
				if(bDataErr==1)
				{
					Forward1();
					bSendData=0;
					StopRun();
					DelayMs(100);
				}
			}
			break;
		case 9:
			if((bEnable_h==1) && (g_wea_i._bit.enable==0))/* enable falling_dedge;*/
			{
				Backward1();                /* case 4*/
				SendOneLine(0);
		//		outinfo(DEBDIS,"case 4");
				flag=4;
			}
			break;
		case 4:
			if((bBackwd_h==0) && (g_wea_i._bit.backwd==1))  /*backword rising_edge*/
			{
				Forward1();   /*case 12*/
				Forward1();
				SendOneLine(0);
				g_bWoofFinish=1;
		//		outinfo(DEBDIS,"case 12");
				flag=0;
				if(bDataErr==1)
				{
					Forward1();
					bSendData=0;
					StopRun();
					DelayMs(100);
				}
			}
			break;
		default:
			sprintf(info,"\nunkown case, flag=%d\n",flag);
			DisplayInfo(info);
			break;
		}
		if(bSendData==0)
			break;   // jump out of while 

		if((bEnable_h==0) && (g_wea_i._bit.enable==1))  /*enable rising_edge  */
			{
				SendControl(g_wea_i._bit.backwd,g_wea_i._bit.shutle);
			}
		if((g_wea_i._bit.wo_brk==0) && (bWobrk_h==1)) /*woof_break falling_edge*/
			bFirstBack=1;


		if((bCheckOK==FALSE) && (g_bDataLock==1))
		{
			if(flag==0)
			{
				Forward1();
				bSendData=0;
				StopRun();
				sprintf(info,"data transfor error");
				DelayMs(100);
			}
			else
				bDataErr=1;
		}
		bEnable_h=g_wea_i._bit.enable;
		bBackwd_h=g_wea_i._bit.backwd;
		bWobrk_h=g_wea_i._bit.wo_brk;
		bShutle_h=g_wea_i._bit.shutle;
		DisplayRun();
		DelayMs(1);
		if(KeyMain(1,info)==0)
		{
			StopRun();
			return 1;
		}
	}    /*while(bSendData)*/;
	StopRun();
	return 0;  // error
}

void NormalRun()
{
	char info[50];
	info[0]='\0';
	while(1)
	{
		info[0]='\0';
		if(SendData(info))
			return;
		if(KeyMain(0,info)==0)
			return;
	}
}

⌨️ 快捷键说明

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