OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2090|回复: 2

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

[复制链接]

5

主题

7

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2019-3-24
在线时间
3 小时
发表于 2019-3-28 15:15:19 | 显示全部楼层 |阅读模式
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("中国地质大学黄元冰\n%s\n",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\n%d\n",atoi(temp));
                                        n=atoi(temp);                                              //调用atoi 函数 将他转换为int型          
                                        printf("输出N\n%d\n",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\n%d\n",atoi(temp));
                                        g=atoi(temp);                                  
                                        printf("输出G\n%d\n",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\n%10.4f\n",atof(temp));
                                        x=atof(temp);         
                                        printf("输出X\n%10.4f\n",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\n%10.4f\n",atof(temp));
                                        y=atof(temp);               
                                        printf("输出Y\n%10.4f\n",y);                       
                                        sb++;                                       
                        }
                        break;

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13131
金钱
13131
注册时间
2012-11-26
在线时间
3814 小时
发表于 2019-3-28 15:35:32 | 显示全部楼层
C语言最基本语法,还是先去学学C语言吧,基础有点差
学无止境
回复 支持 反对

使用道具 举报

35

主题

560

帖子

2

精华

资深版主

Rank: 8Rank: 8

积分
17786
金钱
17786
注册时间
2018-3-3
在线时间
523 小时
发表于 2019-3-28 18:27:49 | 显示全部楼层
switch case语句呀  兄带
/*
*
*
*
*
*
*/
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-23 22:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表