帮忙看下这个程序是干啥的,啥意识呀,就是这个case字母是干啥

2019-07-21 03:48发布

extern char chuan[30000];   //此为存储G的全局数组
void gdaima2(void)          //G代码处理函数名
{
int a,b,c;
char *sb,*sb2;
char temp[] = "-13333";  
char buf[] = "45436";       // 定义两个缓存数组,初始化随意定义,但长度要够
int n,n1;                   // 定义N后面的数值
int g;                      //定义G后面的数值
float x1,y1,z1,x,y,z,i,j;        //定义各个参数
int s=0;                                    // 定义转向参数
n1=n=0;
g=0;
x1=x=y1=y=z1=z=j=i=0;       //初始化参数
//printf("中国地质大学黄元冰 %s ",buf);                //第一次用串口输出无意义值以消除错误输出值
sb = & chuan[0];                                //char为存放G代码的首地址
for(a=0;a<strlen(chuan);a++)
{
        if(64<chuan[a]&&chuan[a]<91)                 //判读进入字母环节
        {
                switch(chuan[a])                         //判读出现的字母类型并保存其后面是参数到对应的变量
                {
                        case 'N':
                        {
                                        a++;                                     // 同时从N进入下一个数字
                                        sb=&chuan[a];
                                        c=a;                                     //保存a 的起始位置
                                        sb2=sb;                             //保留原始位置
                                        for ( ;chuan[a]!=' '; )      //N后面的数值位置加到sb 到达空格
                                        {
                                                sb++;                       
                                                a++;                                                               
                                        }
                                        b=sb-sb2;                                 //计算有效char的长度       
                                        for (c=0;c<=b;c++)                 //把 N后面的数值提出并化为整数
                                        {
                                                temp[c]=*sb2;                     //把有效数值转移到temp中
                                                sb2++;
                                        }
                                        printf("输出N1temp %d ",atoi(temp));
                                        n=atoi(temp);                                              //调用atoi 函数 将他转换为int型          
                                        printf("输出N %d ",n);               
                                        sb++;                                                                  // 保证与a前进步伐一致
                        }
                        break;
                case 'G':
                        {
                        a++;                         
                                        sb=&chuan[a];
                                        c=a;                       
                                        sb2=sb;                                 
                                        for ( ;chuan[a]!=' '; )  
                                        {
                                                sb++;                       
                                                a++;                                                                       
                                        }
                                        b=sb-sb2;                                 
                                        for (c=0;c<=b;c++)          
                                        {
                                                temp[c]=*sb2;               
                                                sb2++;
                                        }
                                       
                                        printf("输出G1temp %d ",atoi(temp));
                                        g=atoi(temp);                                  
                                        printf("输出G %d ",g);                          
                                        sb++;                                               
                        }
                        break;
                        case 'X':
                        {
                                        a++;                       
                                        sb=&chuan[a];
                                        c=a;                       
                                        sb2=sb;                                 
                                        for ( ;chuan[a]!=' '; )
                                        {
                                                sb++;                               
                                                a++;                                                                          
                                        }
                                        b=sb-sb2;                                  
                                        for (c=0;c<=b;c++)          
                                        {
                                                temp[c]=*sb2;               
                                                sb2++;
                                        }
                                        printf("输出X1temp %10.4f ",atof(temp));
                                        x=atof(temp);         
                                        printf("输出X %10.4f ",x);       
                                        sb++;                                               
                        }
                        break;
                        case 'Y':
                        {
                                        a++;                       
                                        sb=&chuan[a];
                                        c=a;                         
                                        sb2=sb;                                  
                                        for ( ;chuan[a]!=' '; )
                                        {
                                                sb++;                               
                                                a++;                       
                                        }
                                        b=sb-sb2;                               
                                        for (c=0;c<=b;c++)          
                                        {
                                                temp[c]=*sb2;       
                                                sb2++;
                                        }
                                        printf("输出Y1temp %10.4f ",atof(temp));
                                        y=atof(temp);               
                                        printf("输出Y %10.4f ",y);                       
                                        sb++;                                       
                        }
                        break;

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。