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 + -
显示快捷键?