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

📄 senddata0.c

📁 该程序实现的是一个在织布厂用的提花机程序
💻 C
字号:
#include "wea_dos.h"
void SendData()
{
	int p=WEAVER_I;

	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();
	bSendData=1;
	while(bSendData);
	{
		bCheckOK=1;
		if(CheckIO(&HardErr)==FALSE) 
		{
			StopRun();
			bSendData=0;
		}
		g_wea_i._byte=inportb(p);
		switch(flag)
		{
		case 0:
/* for fast run */
			while(g_wea_i._bit.fast==0)
			{
				if((bEnable_h==1) && (g_wea_i._bit.enable==0))  /* enable falling_edge*/
				{
					bFinish=Forward1();            /*case 1*/
					bCheckOK=SendOneLineCheckThis(0);
					if(bFinish)
						bSendData=0;
				}
				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;
				g_wea_i._byte=inportb(p);       
				if(CheckIO(&HardErr)==FALSE)
				{
					StopRun();
					GetCheckInfo(&HardErr,ErrorInfo);
					bSendData=0;
					Forward1();	Forward1();
					break;
				}
				if((bCheckOK==FALSE) && (g_bDataLock==1))
				{ 
					bSendData=0;
					Forward1();
					StopRun();printf("\nData transmission error in running\n");
					break;
				}
			}          /*caes 0,  while(fast)*/
			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 */
				{
					Backward1(); Backward1();     /* case 8 */
					SendOneLine(1);
					printf("\ncase 8");
					flag=8;
				}
				else
				{                                   /* case 7 */
					Backward1();Backward1();Backward1();
					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)
				{
					printf("\nJob_List has been finished\n");
					bSendData=0;
				}
			}
			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:
			if((bEnable_h==1) && (g_wea_i._bit.enable==0))/*  enable falling_dedge;*/
			{
				Backward1();                 /* case 3*/
				SendOneLine(0);
				flag=3;
			}
			break;
		case 3:
			if((bBackwd_h==0) && (g_wea_i._bit.backwd==1))  /*backword rising_edge*/
			{
				Forward1();Forward1();    /* case 11*/
				SendOneLine(0);
				flag=0;
				if(bDataErr==1)
				{
					Forward1();
					bSendData=0;
					StopRun();
				}
			}
			break;
		case 7:
			if((bBackwd_h==0) && (g_wea_i._bit.backwd==1))/*  backward rising_dedge;*/
			{
				Forward1();Forward1();Forward1(); /* case 14  */
				SendOneLine(0);
				flag=0;
				if(bDataErr==1)
				{
					Forward1();
					bSendData=0;
					StopRun();
				}
				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);
						flag=5;
						break;
					}
				}
				Backward1(); Backward1();    /*case 2*/ 
				SendOneLine(0);
				flag=2;
			}
			break;
		case 2:
			if((bBackwd_h==0) && (g_wea_i._bit.backwd==1))  /*backword rising_edge*/
			{
				Forward1();	Forward1();Forward1(); Forward1(); /* case 10*/
				SendOneLine(0);
				flag=0;
				if(bDataErr==1)
				{
					Forward1();
					bSendData=0;
					StopRun();
				}
			}
			break;
		case 5:
			if((g_wea_i._bit.enable==0) && (bEnable_h==1)) /* enable falling_edge*/
			{
				Backward1();         /* case 6   */
				SendOneLine(0);
				flag=6;
				break;
			}
			if((g_wea_i._bit.shutle==0) && (bShutle_h==1))/* shutle falling_edge */
			{
				Forward1();  /* case 9     */
				SendOneLine(1);
				flag=9;
			}
			break;
		case 6:
			if((bBackwd_h==0) && (g_wea_i._bit.backwd==1))  /*backword rising_edge*/
			{
				Forward1();Forward1();Forward1();  /* case 14  */
				SendOneLine(0);
				g_bWoofFinish=1;
				flag=0;
			}
			break;
		case 9:
			if((bEnable_h==1) && (g_wea_i._bit.enable==0))/* enable falling_dedge;*/ 
			{
				Backward1();                /* case 4*/
				SendOneLine(0);
				flag=4;
			}
			break;
		case 4:
			if((bBackwd_h==0) && (g_wea_i._bit.backwd==1))  /*backword rising_edge*/
			{
				Forward1();Forward1();   /*case 12*/ 
				SendOneLine(0);
				g_bWoofFinish=1;
				printf("\ncase 12");
				flag=0;
			}
			break;
		default:
			printf("\nunkown case, flag=%d\n",flag);
			break;
		}

		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();
			}
			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;
		DelayMs(1);
	}    //while(bSendData);

	StopRun();
}

⌨️ 快捷键说明

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