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

📄 job.c

📁 该程序实现的是一个在织布厂用的提花机程序
💻 C
字号:
#include "wea_dos.h"

void Job(JOB* pj)
{
	int i;
	pj->filename[0]='\0';
	pj->nHole=2;
	pj->nWarp=0;
	pj->nRepeat=0;
	pj->nWea=0;
	for(i=0;i<MAX_WEA;i++)
	{
		pj->Wea[i]=NULL;
		pj->nWeaRepeat[i]=0;
		pj->start[i]=0;
	}
}

BOOL AppendWea(JOB* pj,WEA* pw,char* info)
{
	if(pw==NULL)
	{
		strcpy(info,"Wea null");
		return FALSE;
	}
	if(pj->nWea==MAX_WEA)
	{
		strcpy(info,"Job list full");
		return FALSE;
	}
	if(pj->nWea==0)
	{
		pj->nWarp=pw->Size.cx*8;
		g_nMap=pj->nWarp/32;
	}
	if(pj->nWarp!=pw->Size.cx*8)
	{
		strcpy(info,"Warp number not match");
		return FALSE;
	}
	pj->Wea[pj->nWea]=pw;
        pj->start[pj->nWea]=0;
	pj->end[pj->nWea]=pw->Size.cy-1;
    pj->nWea++;
return TRUE;
}

BOOL InsertWea(JOB* pj,WEA* pw,int index,char* info)
{
	int i;
	if(pw==NULL)
	{
		strcpy(info,"Wea null");
		return FALSE;
	}
	if(pj->nWea==MAX_WEA)
	{
		strcpy(info,"Job list full");
		return FALSE;
	}
	if(pj->nWea==0)
	{
		pj->nWarp=pw->Size.cx*8;
		g_nMap=pj->nWarp/32;
	}
	if(pj->nWarp!=pw->Size.cx*8)
	{
		strcpy(info,"Warp number not match");
		return FALSE;
	}
	for(i=pj->nWea;i>index;i--)
	{
		pj->Wea[i]=pj->Wea[i-1];
		pj->end[i]=pj->end[i-1];
		pj->start[i]=pj->start[i-1];
		pj->nWeaRepeat[i]=pj->nWeaRepeat[i-1];
	}
	pj->Wea[index]=pw;
	pj->end[index]=pw->Size.cy-1;
	pj->start[index]=0;
	pj->nWeaRepeat[index]=0;
	pj->nWea++;
	ResetPoint();
	return TRUE;
}
BOOL DeleteWea(JOB* pj,int index,char* info)
{	int i;
	if(pj->nWea==0)
	{
		strcpy(info,"Job list empty");
		return FALSE;
	}
	if(index<0 || index>=pj->nWea)
	{
		strcpy(info,"Index error");
		return FALSE;
	}
	for(i=index;i<pj->nWea-1;i++)
	{
		pj->Wea[i]=pj->Wea[i+1];
		pj->end[i]=pj->end[i+1];
		pj->start[i]=pj->start[i+1];
		pj->nWeaRepeat[i]=pj->nWeaRepeat[i+1];
	}
	pj->nWea--;
	free(pj->Wea[pj->nWea]);
	ResetPoint();
	return TRUE;
}

BOOL OpenJob(char* filename,JOB* pj,char* info)
{
	BYTE buff[50];
	char* pb;
	int i,n,nw,flag;
	WEA* pw;
	FILE *fp;
	n=strlen(filename);
	pb=&filename[n-3];
	i=-1;
	while(pb[++i])
		if(pb[i]<0x5a)
                    pb[i]+=0x20;
                        
	if(strcmp(pb,"job")==0)
		flag=0;
	if(strcmp(pb,"wea")==0)
		flag=1;
	if(flag!=0 && flag!=1)
	{
		strcpy(info,"Filename error: must be .job or .wea");
		return FALSE;
	}
	if(pj->nWea>0)
		KillJob(pj);
	if(flag==1)
	{
		pw=(WEA*)calloc(1,sizeof(WEA));
		Wea(pw);
		flag=OpenWea(filename,pw,info);
		if(flag==0)
			free(pw);
		else
		{
			pj->nWea=1;
			pj->nRepeat=0;
			pj->nHole=2;
			pj->nWarp=pw->Size.cx*8;
			pj->start[0]=0;
			pj->end[0]=pw->Size.cy-1;
			pj->nWeaRepeat[0]=0;
			pj->Wea[0]=pw;
		}
		return flag;
	}

	fp=fopen(filename, "r+");
	if (!fp)
	{
		strcpy(info,"open job file error");
		return FALSE;
	}
	fscanf(fp,"%d\n%d\n%d\n%d\n",&pj->nHole,&pj->nWarp,&pj->nRepeat,&nw);
	if(pj->nHole!=2 && pj->nHole!=3)
	{
		strcpy(info,"Hole number error");
		fclose(fp);
		return FALSE;
	}
	if(nw<1 || nw>MAX_WEA)
	{
		strcpy(info,"Wea number error");
		fclose(fp);
		return FALSE;
	}
	
	strcpy(pj->filename,filename);
	for(i=0;i<nw;i++)
	{
		fscanf(fp,"%s",buff);
		pw=(WEA *)calloc(1,sizeof(WEA));
		Wea(pw);
		if(!OpenWea(buff,pw,info))
		{
			free(pw);
			fclose(fp);
			return FALSE;
		}
		if(!AppendWea(pj,pw,info))
		{
			KillJob(pj);
			fclose(fp);
			return FALSE;
		}
		fscanf(fp,"%d%d%d%d",&n,&pj->start[i],&pj->end[i],&pj->nWeaRepeat[i]);
	}
	fclose(fp);
	return TRUE;
}
BOOL SaveJob(char* fileName,JOB* pj,char* info)
{
	int i;
	WEA* pw;
	FILE *fp;
	fp=fopen(fileName, "w");
	if (!fp)
	{
		strcpy(info,"Create job file error");
		return FALSE;
	}
	fprintf(fp,"%d\n%d\n%d\n%d\n",pj->nHole,pj->nWarp,pj->nRepeat,pj->nWea);
	for(i=0;i<pj->nWea;i++)
	{
		pw=pj->Wea[i];
		fprintf(fp,"%s\n",pw->filename);
		fprintf(fp,"%d\n%d\n%d\n%d\n",pw->Size.cy,pj->start[i],pj->end[i],pj->nWeaRepeat[i]);
	}
	fclose(fp);
	return TRUE;
}
void KillJob(JOB* pj)
{
	int i;
	if(pj==NULL || pj->nWea==0)
		return;
	for(i=0;i<pj->nWea;i++)
	{
		free(pj->Wea[i]);
	}
	pj->nWea=0;
}

⌨️ 快捷键说明

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