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

📄 hello.c

📁 PALM程序设计入门
💻 C
📖 第 1 页 / 共 5 页
字号:
        	Yabs=Yabs+pulse;
            return True;
        }
        else
        	return False;
    }
    else return True;
}

//-----------------------------------------
int CountCheckSum2(int FuncNum,long para1,long para2)
{
   int	checksum;

   checksum=FuncNum + para1+ (para1>>8) + (para1>>16) + (para1>>24)
		    + para2+ (para2>>8) + (para2>>16) + (para2>>24);
   checksum=checksum & 0xff;
   return checksum;
}
//-----------------------------------------
Boolean Line(long xpulse,long ypulse)
{
   char Buf[11];
   char data,i=0;

   if(AbsFlag)
   {
      	xpulse=xpulse-Xabs;
       	ypulse=ypulse-Yabs;
   }
   if(xpulse | ypulse)
   {
   	   	Buf[0]=0xff;
   		Buf[1]=CountCheckSum2(LINE,xpulse,ypulse);
   		Buf[2]=LINE;
   		Buf[3]=(xpulse>>24) & 0xff;
   		Buf[4]=(xpulse>>16) & 0xff;
   		Buf[5]=(xpulse>>8) & 0xff;
   		Buf[6]=xpulse & 0xff;
   		Buf[7]=(ypulse>>24) & 0xff;
   		Buf[8]=(ypulse>>16) & 0xff;
   		Buf[9]=(ypulse>>8) & 0xff;
   		Buf[10]=ypulse & 0xff;
 		do{
     		 WriteABuffer(Buf,11);
      		 if( !ReadABuffer(&data,(DWord)1) )  return False;
      		 i++;
      		 if( i>10 && (char)data!=(char)0xf0) return False;
   		  } while(data!=(char)0xf0);
   	}
    Xabs=Xabs+xpulse;
    Yabs=Yabs+ypulse;
    return True;
}
//-----------------------------------------
Boolean DLine(long xpulse,long ypulse)
{
   char Buf[11];
   char data,i=0;

   if(AbsFlag)
   {
       	xpulse=xpulse-Xabs;
       	ypulse=ypulse-Yabs;
   }
   if(xpulse | ypulse)
   {
   		Buf[0]=0xff;
   		Buf[1]=CountCheckSum2(DLINE,xpulse,ypulse);
   		Buf[2]=DLINE;
   		Buf[3]=(xpulse>>24) & 0xff;
   		Buf[4]=(xpulse>>16) & 0xff;
   		Buf[5]=(xpulse>>8) & 0xff;
   		Buf[6]=xpulse & 0xff;
   		Buf[7]=(ypulse>>24) & 0xff;
   		Buf[8]=(ypulse>>16) & 0xff;
   		Buf[9]=(ypulse>>8) & 0xff;
   		Buf[10]=ypulse & 0xff;
 		do{
      		WriteABuffer(Buf,11);
      		if( !ReadABuffer(&data,(DWord)1) )  return False;
      		i++;
      		if( i>10 && (char)data!=(char)0xf0) return False;
   		} while(data!=(char)0xf0);
   }
   Xabs=Xabs+xpulse;
   Yabs=Yabs+ypulse;
   return True;
}
//-----------------------------------------
int CountCheckSum4(int FuncNum,long para1,long para2,long para3,long para4)
{
   int	checksum;

   checksum=FuncNum + para1+ (para1>>8) + (para1>>16) + (para1>>24)
		    + para2+ (para2>>8) + (para2>>16) + (para2>>24)
		    + para3+ (para3>>8) + (para3>>16) + (para3>>24)
		    + para4+ (para4>>8) + (para4>>16) + (para4>>24);
   checksum=checksum & 0xff;
   return checksum;
}
//-----------------------------------------
Boolean ClearError(void)
{
   char Buf[3];
   char data,i=0;

   Buf[0]=0xff;
   Buf[1]=CLEARERROR;
   Buf[2]=CLEARERROR;

 do{
      WriteABuffer(Buf,3);
      if( !ReadABuffer(&data,(DWord)1) )  return False;
      i++;
      if( i>10) return False;
   } while(data!=(char)0xf0);
   return True;
}
//-----------------------------------------
Boolean Ccw(long xcen,long ycen,long xpulse,long ypulse)
{
   char Buf[19];
   char data,i=0;
   extern float Distance(long,long,long,long);
   extern void CheckMessage();

   float x=xpulse,y=ypulse;

   float d1=Distance(xcen,ycen,Xabs,Yabs);
   float d2=Distance(xcen,ycen,xpulse,ypulse);
   float d3;
   if(d1>d2)
		d3=d2/(d1+1);
   else
		d3=d1/(d2+1);

   if(AbsFlag)
   {
      	xpulse=xcen+(float)(xpulse-xcen)*d3-Xabs;
      	ypulse=ycen+(float)(ypulse-ycen)*d3-Yabs;
       	xcen=xcen-Xabs;
        ycen=ycen-Yabs;
		if(xpulse==0 || ypulse==0)
			if(abs(xpulse-ypulse)<5 ) 
				xpulse=ypulse=0;			
   }else
   {
		xpulse=xcen+(float)(xpulse-xcen)*d3;
		ypulse=ycen+(float)(ypulse-ycen)*d3;
   }
   Buf[0]=0xff;
   Buf[1]=CountCheckSum4(mCCW,xcen,ycen,xpulse,ypulse);
   Buf[2]=mCCW;
   Buf[3]=(xcen>>24) & 0xff;
   Buf[4]=(xcen>>16) & 0xff;
   Buf[5]=(xcen>>8) & 0xff;
   Buf[6]=xcen & 0xff;
   Buf[7]=(ycen>>24) & 0xff;
   Buf[8]=(ycen>>16) & 0xff;
   Buf[9]=(ycen>>8) & 0xff;
   Buf[10]=ycen & 0xff;
   Buf[11]=(xpulse>>24) & 0xff;
   Buf[12]=(xpulse>>16) & 0xff;
   Buf[13]=(xpulse>>8) & 0xff;
   Buf[14]=xpulse & 0xff;
   Buf[15]=(ypulse>>24) & 0xff;
   Buf[16]=(ypulse>>16) & 0xff;
   Buf[17]=(ypulse>>8) & 0xff;
   Buf[18]=ypulse & 0xff;
 do{
      WriteABuffer(Buf,19);
      if( !ReadABuffer(&data,(DWord)1) )  return False;
      i++;
      if( i>10 && (char)data!=(char)0xf0) return False;
   } while(data!=(char)0xf0);

   while(!Idle())
   {
		CheckMessage();
   }
   Line(x,y);

   while(!Idle())
   {
		CheckMessage();
   }
   
   Xabs=Xabs+xpulse;
   Yabs=Yabs+ypulse;

   return True;
}
//-----------------------------------------
Boolean DCcw(long xcen,long ycen,long xpulse,long ypulse)
{
   char Buf[19];
   char data,i=0;

   if(AbsFlag)
   {
    	xcen=xcen-Xabs;
        ycen=ycen-Yabs;
      	xpulse=xpulse-Xabs;
       	ypulse=ypulse-Yabs;
   }
   Buf[0]=0xff;
   Buf[1]=CountCheckSum4(DCCW,xcen,ycen,xpulse,ypulse);
   Buf[2]=DCCW;
   Buf[3]=(xcen>>24) & 0xff;
   Buf[4]=(xcen>>16) & 0xff;
   Buf[5]=(xcen>>8) & 0xff;
   Buf[6]=xcen & 0xff;
   Buf[7]=(ycen>>24) & 0xff;
   Buf[8]=(ycen>>16) & 0xff;
   Buf[9]=(ycen>>8) & 0xff;
   Buf[10]=ycen & 0xff;
   Buf[11]=(xpulse>>24) & 0xff;
   Buf[12]=(xpulse>>16) & 0xff;
   Buf[13]=(xpulse>>8) & 0xff;
   Buf[14]=xpulse & 0xff;
   Buf[15]=(ypulse>>24) & 0xff;
   Buf[16]=(ypulse>>16) & 0xff;
   Buf[17]=(ypulse>>8) & 0xff;
   Buf[18]=ypulse & 0xff;
 do{
      WriteABuffer(Buf,19);
      if( !ReadABuffer(&data,(DWord)1) )  return False;
      i++;
      if( i>10 && (char)data!=(char)0xf0) return False;
   } while(data!=(char)0xf0);

   Xabs=Xabs+xpulse;
   Yabs=Yabs+ypulse;
   return True;
}
//-----------------------------------------
Boolean Test(long xcen,long ycen,long xpulse,long ypulse)
{
	
   char Buf[19];
   char data,i=0;

   Buf[0]=0xff;
   Buf[1]=CountCheckSum4(mCW,xcen,ycen,xpulse,ypulse);
   Buf[2]=mCW;
   Buf[3]=(xcen>>24) & 0xff;
   Buf[4]=(xcen>>16) & 0xff;
   Buf[5]=(xcen>>8) & 0xff;
   Buf[6]=xcen & 0xff;
   Buf[7]=(ycen>>24) & 0xff;
   Buf[8]=(ycen>>16) & 0xff;
   Buf[9]=(ycen>>8) & 0xff;
   Buf[10]=ycen & 0xff;
   Buf[11]=(xpulse>>24) & 0xff;
   Buf[12]=(xpulse>>16) & 0xff;
   Buf[13]=(xpulse>>8) & 0xff;
   Buf[14]=xpulse & 0xff;
   Buf[15]=(ypulse>>24) & 0xff;
   Buf[16]=(ypulse>>16) & 0xff;
   Buf[17]=(ypulse>>8) & 0xff;
   Buf[18]=ypulse & 0xff;
 do{
      WriteABuffer(Buf,19);
      if( !ReadABuffer(&data,(DWord)1) )  return False;
      i++;
      if( i>10 && (char)data!=(char)0xf0) return False;
   } while(data!=(char)0xf0);

   Xabs=Xabs+xpulse;
   Yabs=Yabs+ypulse;
   return True;
}

Boolean Cw(long xcen,long ycen,long xpulse,long ypulse)
{
	
   char Buf[19];
   char data,i=0;
   extern void CheckMessage();
   extern float Distance(long,long,long,long);

   float d1=Distance(xcen,ycen,Xabs,Yabs);
   float d2=Distance(xcen,ycen,xpulse,ypulse);
   float d3;

   long x=xpulse,y=ypulse;

   if(d1>d2)
		d3=d2/(d1+1);
   else
		d3=d1/(d2+1);

     
   if(AbsFlag)
   {
      	xpulse=xcen+(xpulse-xcen)*d3-Xabs;
       	ypulse=ycen+(ypulse-ycen)*d3-Yabs;
    	xcen=xcen-Xabs;
        ycen=ycen-Yabs;
		if(xpulse==0 || ypulse==0)
			if(abs(xpulse-ypulse)<5 ) 
				xpulse=ypulse=0;			
		// -127  145  -305  220  
		// 177   -75  313   78
   }else
   {
	   xpulse=xcen+(xpulse-xcen)*(d1/d2);
		ypulse=ycen+(ypulse-ycen)*(d1/d2);
   }
   Buf[0]=0xff;
   Buf[1]=CountCheckSum4(mCW,xcen,ycen,xpulse,ypulse);
   Buf[2]=mCW;
   Buf[3]=(xcen>>24) & 0xff;
   Buf[4]=(xcen>>16) & 0xff;
   Buf[5]=(xcen>>8) & 0xff;
   Buf[6]=xcen & 0xff;
   Buf[7]=(ycen>>24) & 0xff;
   Buf[8]=(ycen>>16) & 0xff;
   Buf[9]=(ycen>>8) & 0xff;
   Buf[10]=ycen & 0xff;
   Buf[11]=(xpulse>>24) & 0xff;
   Buf[12]=(xpulse>>16) & 0xff;
   Buf[13]=(xpulse>>8) & 0xff;
   Buf[14]=xpulse & 0xff;
   Buf[15]=(ypulse>>24) & 0xff;
   Buf[16]=(ypulse>>16) & 0xff;
   Buf[17]=(ypulse>>8) & 0xff;
   Buf[18]=ypulse & 0xff;
 do{
      WriteABuffer(Buf,19);
      if( !ReadABuffer(&data,(DWord)1) )  return False;
      i++;
      if( i>10 && (char)data!=(char)0xf0) return False;
   } while(data!=(char)0xf0);

   Xabs=Xabs+xpulse;
   Yabs=Yabs+ypulse;

   while(!Idle())
   {
		CheckMessage();
   }
   Line(x,y);

	while(!Idle())
   {
		CheckMessage();
   }
   
   Xabs=Xabs+xpulse;
   Yabs=Yabs+ypulse;
   
   return True;
}
//-----------------------------------------
Boolean DCw(long xcen,long ycen,long xpulse,long ypulse)
{
   char Buf[19];
   char data,i=0;

   if(AbsFlag)
   {
    	xcen=xcen-Xabs;
        ycen=ycen-Yabs;
      	xpulse=xpulse-Xabs;
       	ypulse=ypulse-Yabs;
   }
   Buf[0]=0xff;
   Buf[1]=CountCheckSum4(DCW,xcen,ycen,xpulse,ypulse);
   Buf[2]=DCW;
   Buf[3]=(xcen>>24) & 0xff;
   Buf[4]=(xcen>>16) & 0xff;
   Buf[5]=(xcen>>8) & 0xff;
   Buf[6]=xcen & 0xff;
   Buf[7]=(ycen>>24) & 0xff;
   Buf[8]=(ycen>>16) & 0xff;
   Buf[9]=(ycen>>8) & 0xff;
   Buf[10]=ycen & 0xff;
   Buf[11]=(xpulse>>24) & 0xff;
   Buf[12]=(xpulse>>16) & 0xff;
   Buf[13]=(xpulse>>8) & 0xff;
   Buf[14]=xpulse & 0xff;
   Buf[15]=(ypulse>>24) & 0xff;
   Buf[16]=(ypulse>>16) & 0xff;
   Buf[17]=(ypulse>>8) & 0xff;
   Buf[18]=ypulse & 0xff;
 do{
      WriteABuffer(Buf,19);
      if( !ReadABuffer(&data,(DWord)1) )  return False;
      i++;
	  if( i>10 && (char)data!=(char)0xf0) return False;
   } while(data!=(char)0xf0);

   Xabs=Xabs+xpulse;
   Yabs=Yabs+ypulse;
   return True;

}
//-----------------------------------------
int RdStatus(void)
{
   char Buf[3];
   char data,i=0,IsFull;


   Buf[0]=0xff;
   Buf[1]=RDSTA;
   Buf[2]=RDSTA;
 do{
	  WriteABuffer(Buf,3);
   	  if( !ReadABuffer(&data,(DWord)1) )  
		  return 0;
   	  i++;
   	  if( i>10 && (char)data!=(char)0xf0) 
		  return False;
   } while(data!=(char)0xf0);

   if( !ReadABuffer(&IsFull,(DWord)1) )  
	   return 0;

   return IsFull;
}
//-----------------------------------------
Boolean RdXYZP(long *xposi,long *yposi,long *zposi)
{

   char Buf[3];
   char data,i=0,RdData[13],CheckSum=0;
	long h3,h2,h1,h0;
   int j;


   Buf[0]=0xff;
   Buf[1]=RDXYZP;
   Buf[2]=RDXYZP;
 do{
      WriteABuffer(Buf,3);
      if( !ReadABuffer(&data,(DWord)1) )   return False;
      i++;
      if( i>10 && (char)data!=(char)0xf0) return False;
   } while(data!=(char)0xf0);

   if(!ReadABuffer(RdData,(DWord)13) )  return False;
   for(j=0;j<12;j++)
       CheckSum=CheckSum+RdData[j];

   if(CheckSum != RdData[12])  return False;

	h3=RdData[0];
	h2=RdData[1];
	h1=RdData[2];
	h0=RdData[3];

   *xposi=((h3<<24) & 0xff000000) + ((h2<<16) & 0xff0000)+
	      ((h1<<8)  & 0xff00)     + (h0 & 0xff);
   
	h3=RdData[4];
	h2=RdData[5];
	h1=RdData[6];
	h0=RdData[7];

	*yposi=((h3<<24) & 0xff000000) + ((h2<<16) & 0xff0000)+
	      ((h1<<8)  & 0xff00)     + (h0 & 0xff);

	h3=RdData[8];
	h2=RdData[9];
	h1=RdData[10];
	h0=RdData[11];

   *zposi=((h3<<24) & 0xff000000) + ((h2<<16) & 0xff0000)+
	      ((h1<<8)  & 0xff00)     + (h0 & 0xff);
   

   return True;
}
//-----------------------------------------
Boolean CheckCable()
{
	char x,y,z;
	XRdInSta(&x);
	YRdInSta(&y);
	ZRdInSta(&z);
	if( (x & 1) && (y & 1) && (z & 1))
	{
		  Stop();
		  XOut(0,1);
		  YOut(0,1);
		  ZOut(0,1);
  		  XOut(2,0);
//		  AfxMessageBox("Machine I/O Cable Connnect Fail !");
		  return True;
	}
	return False;
}
Boolean XRdInSta(char *insta)
{

   char Buf[3];
   char data,i=0;


   Buf[0]=0xff;
   Buf[1]=XRDINSTA;
   Buf[2]=XRDINSTA;
 do{
      WriteABuffer(Buf,3);
      if( !ReadABuffer(&data,(DWord)1) )  return False;
      i++;
      if( i>10 && (char)data!=(char)0xf0) return False;
   } while(data!=(char)0xf0);

   if( !ReadABuffer(insta,(DWord)1) )  return False;
   return True;
}
//-----------------------------------------
Boolean YRdInSta(char *insta)
{

   char Buf[3];
   char data,i=0;

⌨️ 快捷键说明

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