亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? trace.c

?? 非常重要的嵌入式單片機開發語言 是美國德州儀器的MSP430系列的系統語言
?? C
?? 第 1 頁 / 共 4 頁
字號:

#include "cnc.h"

#define USER_macro_process(num) SendMessage(hwndUSER,WM_USER,num,0L)

static CNCpolar_t CNC_polar;         /* polar  parameter */
static CNCpolar_t CNC_rotate;        /* rotate parameter */
static CNCaxis_t  CNC_scale0;        /* scaling center   */
static CNCaxis_t  CNC_scalef;        /* scaling factor   */
static CNCaxis_t  CNC_unit0;         /* unit zero        */
static CNCaxis_t  CNC_unitf;         /* unit factor      */

static int        nDot;              /* decimal index    */
static int        CNC_hfile;         /* handle of file   */
static long       CNC_pfile;         /* pointer of file  */
static char       CNC_code=4;        /* last command     */
static char       CNC_stop=1;        /* stop index       */
static char       CNC_lead=0;        /* leading area     */

static CNCaxis_t  aGoal,aGoalX;
static CNCaxis_t  aCenter,aCenterX;

void CNC_initial_process(void);
void CNC_end_process(void);
void CNC_reset_process(void);
void CNC_control_process(void);

static void AUTO_mode_control(void);
static BOOL open_CNC_file(int);
static void close_CNC_file(void);
static void clear_CNC_file(void);
static void absolute_to_local(LPAXIS,LPAXIS);
static void local_to_absolute(LPAXIS,LPAXIS);
static void local_to_machine(LPAXIS,LPAXIS);
static void machine_to_local(LPAXIS,LPAXIS);
static void absolute_to_machine(LPAXIS,LPAXIS);
static void machine_to_absolute(LPAXIS,LPAXIS);
static void get_axis_absolute(LPAXIS);
static void get_center_absolute(LPAXIS);
static void get_axis_input(LPAXIS);
static void get_center_input(LPAXIS);
static double get_value_input(char,int);
static int get_axis_number(char);
static BOOL is_axis_exist(int);
static BOOL is_any_axis_exist(void);
static BOOL is_all_axis_exist(void);
static BOOL is_center_exist(int);
static BOOL is_any_center_exist(void);
static BOOL is_all_center_exist(void);
static BOOL is_input_exist(char);

static void CNC_command_decoding(void);
static BOOL collect_CNC_command(void);

static BOOL calling_command(void);
static BOOL MST_command(void);
static BOOL special_command(void);
static BOOL motion_command(void);
static BOOL plane_command(void);
static BOOL absolute_command(void);
static BOOL limit_command(void);
static BOOL feed_command(void);
static BOOL unit_command(void);
static BOOL cutter_command(void);
static BOOL tool_command(void);
static BOOL cycle_command(void);
static BOOL return_command(void);
static BOOL scaling_command(void);
static BOOL macro_command(void);
static BOOL speed_command(void);
static BOOL working_command(void);
static BOOL stop_command(void);
static BOOL rotate_command(void);
static BOOL polar_command(void);
static BOOL offset_command(void);
static BOOL data_command(void);
static BOOL skip_command(void);
static void PATH_calculation(int);
static void preset_calculation(void);
static void scale_calculation(void);
static void offset_calculation(void);
static void stop_calculation(void);

/*=========================================================
  entry points of CNC program

  CNC_program_initial() : initial CNC program
  CNC_program_end()     : end of CNC program
  CNC_program_process() : timer process CNC program loop
=========================================================*/
                          /***** initial CNC program *****/
void CNC_initial_process()
{    int i;
     for (i=0; i<=6; i++) CNC_working[i]=aNull;
     for (i=0; i<6;  i++) CNC_unitf.v[i]=INCH;
     CNC_unit0=aNull;
     PATH_initial_process();
     CNC_reset_process();
}
                               /***** end of process *****/
void CNC_end_process()
{    PATH_end_process();
     clear_define_table();
     clear_stack();
     close_G10_table();
}
                                /***** reset process *****/
void CNC_reset_process()
{    int i;
                                       /* USER interface */
     *(USER_path->command)=0;
     USER_path->level=0; USER_path->pfile=0L;
                                       /* real-time area */
     PLC_path->code=99;
     lstrcpy(PLC_path->string, "N0000");
     lstrcpy(PLC_path->command,"Main Program");
                                         /* CNC decoding */
     nOther=nMove=nPlane=nInc=nLimit=0;
     nFeed=nUnit=nCut=nTool=nCycle=0;
     nReturn=nScale=nMacro=nSpeed=0;
     nStop=nRotate=nPolar=nOffset=nData=0;
     CNC_last=aNull; CNC_lastX=aNull; CNC_local=aNull;
     nDot=3; nWork=1;
     CNC_code=4; CNC_stop=1;
     CNC_nx=0; CNC_ny=1; CNC_nz=2;
     CNC_level=-1; CNC_error=0; CNC_lead=0;
     for (i=0; i<25; i++) CNC_calling->v[i]=0.;
     CNC_Dcode=CNC_Hcode=CNC_Tcode=CNC_Mcode=0;
     CNC_Ocode=CNC_Ncode=0;
     CNC_Fcode=CNC_G01max;
     CNC_Scode=CNC_RPMmax;
     clear_stack();
                                         /* PATH process */
     PATH_reset_process();
}

/*=========================================================
  CNC_control_process()
      execute CNC program every timer interrupt
=========================================================*/
void CNC_control_process()
{    int hfile,i,k,n; LPSTR s,d; char buf[81];
                                         /* AUTO-mode ?? */
     if (PLC_mode!=1) return;
     for (k=0; k<100; k++)
     {    lpCmd=&lpPath[nIn];
                                      /* check interface */
          AUTO_mode_control();
          if (PLC_flag>2) break;
                                 /* path control process */
          PATH_control_process();
                                       /* buffer full ?? */
          lpCmd=&lpPath[nIn];
          if (PLC_count>1)                      break;
          if (!(PLC_status&bPlotOnly))
          {    if (CNC_stop || PLC_path->stop || PLC_path->start)
               {    if (PLC_count)              break;
                    if ((!nCut) && (nIn!=nOut)) break;
               }
          }
                                      /* single block ?? */
          if (PLC_status&bSingleBlock)
          {    if (!(PLC_status&bCycleStart))   break;
               PLC_status&=(~bCycleStart); CNC_stop=1;
          }
                            /***** get next block !! *****/
          if (*(USER_path->command))      /* MDI mode ?? */
          {    lpCmd->level=CNC_level;
               lpCmd->pfile=CNC_Ncode;
               lstrncpy((LPSTR)buf,USER_path->command,79);
               set_fact_from_string(buf);
               lstrncpy(lpCmd->string,(LPSTR)buf,50);
               *(USER_path->command)=0;
          } else if (PLC_flag==2)        /* USER mode ?? */
          {    USER_path->level=CNC_Ocode;
               USER_path->pfile=CNC_Ncode;
               if (!USER_macro_process(10000))  break;
               *lpCmd=*USER_path; CNC_Ncode++;
               lstrcpy(lpCmd->command,CNC_stack[CNC_level].string);
               n=USER_path->pfile; sprintf(buf,"N%04u ",(unsigned)n);
               lstrncat((LPSTR)buf,USER_path->string,50);
               lstrncpy(lpCmd->string,(LPSTR)buf,50);
               CNC_command_decoding();
               continue;
          } else                         /* FILE mode !! */
          {    if (PLC_flag==0 || CNC_level<0)  break;
               hfile = CNC_stack[CNC_level].hfile;
               lpCmd->level = CNC_level;
               lpCmd->pfile = get_next_line_from_file(hfile);
               if (lpCmd->pfile<0L)     { close_CNC_file(); continue; }
               CNC_stack[CNC_level].pfile = _llseek(hfile,0,SEEK_CUR);
          }
                   /***** string-command decoding !! *****/
          CNC_Ncode++;
          if (DEFINE_command())     continue;
          if (PUSH_command())       continue;
          if (DIRECT_command())     continue;
          if (TABLE_command())      continue;
          if (CALLC_command())      continue;
          if (open_G10_table())     continue;
                                  /* collect CNC command */
          if (!collect_CNC_command()) { CNC_error=eDecode; break; }
                                       /* preset message */
          if (fN) CNC_Ncode=vN;
          else    vN=CNC_Ncode;
          if (CNC_level<0) lstrcpy(lpCmd->command,(LPSTR)"MDI Input");
          else    lstrcpy(lpCmd->command,CNC_stack[CNC_level].string);
          n=CNC_Ncode; sprintf(buf,"N%04u ",(unsigned)n);
          lstrncat((LPSTR)buf,lpCmd->string,50);
          lstrncpy(lpCmd->string,(LPSTR)buf,50);
                                             /* decoding */
          CNC_command_decoding();
     }
}

/*=========================================================
  AUTO_mode_control()
       AUTO-mode control process

  PLC_mode : CNC control mode
               =1:AUTO
  PLC_work : CNC working condition
               =0: off-process, can be switch to another mode
               =1: in-process
  PLC_flag : AUTO-mode internal status
               =0: MDI-mode  process
               =1: FILE-mode process
               =2: USER-mode process
               =9: error exist
               >9: emergency stop
  CNC_error: AUTO-mode error indication
               =0: no error
               >0: error exists
=========================================================*/
static void AUTO_mode_control()
{    switch (PLC_flag)
     {
     case 0 :                     /* check I/O interface */
          if (PLC_status&bEmergency) { PLC_flag+=10;             break; }
          if (PLC_status&bFeedHold)  { PLC_work=0; PLC_enable=0; break; }
          if (CNC_error)             { PLC_flag=9;               break; }
          PLC_enable=(PLC_status&bPlotOnly)?0:1;
          PLC_work  = PLC_count||(nIn!=nOut);
          if (PLC_work)            { PLC_status&=(~bCycleStart); break; }
                                 /* wait for cycle-start */
          if (!(PLC_status&bCycleStart)) break;
          PLC_status&=(~bCycleStart);
                                             /* re-start */
          CNC_reset_process();
          lstrcpy(lpCmd->string,"Main Program");
          open_CNC_file(PLC_mainfile);
          DSP_initial=1; CNC_lead=1;
          break;
     case 1 : case 2 :              /* normal process !! */
          if (PLC_status&bEmergency) { PLC_flag+=10;             break; }
          if (PLC_status&bFeedHold)  { PLC_work=0; PLC_enable=0; break; }
          if (CNC_error)             { PLC_flag=9;               break; }
          PLC_enable=(PLC_status&bPlotOnly)?0:1;
          PLC_work  =1;
          break;
     case 8 :                           /* error release */
          if   (PLC_status&bEmergency) break;
          PLC_status&=(~bCycleStart);
          clear_CNC_file(); CNC_reset_process();
          PLC_flag=0;
          break;
     case 9 :                          /* error exist !! */
          PLC_work=0; PLC_enable=0; PLC_status|=bEmergency;
          PLC_flag=8;
          lstrcpy(PLC_message,(LPSTR)"=>");
          lstrncpy(PLC_message+2,lpCmd->string,40);
          PostMessage(hwndFPLC,WM_USER,0,0L);
          break;
     case 10 : case 11 : case 12 :    /* emergency ON !! */
          PLC_work=0; PLC_enable=0;
          PLC_status&=(~bCycleStart);
          if (CNC_error) { PLC_flag=9; break; }
          if (PLC_status&bEmergency)   break;
          PLC_flag+=10;
          break;
     case 20 : case 21 : case 22 :   /* emergency OFF !! */
          PLC_work=0; PLC_enable=0;
          if (PLC_status&bEmergency) { PLC_flag-=10; break; }
/*          if (!(PLC_status&bCycleStart))             break;
*/
          PLC_status&=(~bCycleStart);
          PLC_flag-=20;
          break;
     }
}

/*=========================================================
  interface functions about CNC file operation

  open_CNC_file()  : open new CNC file
  close_CNC_file() : close old CNC file, and open next file
  clear_CNC_file() : close all CNC file
=========================================================*/
static BOOL open_CNC_file(n)
int n;        /* program no. */
{    static OFSTRUCT of; char buf1[81],buf2[21]; int hfile;
     int i; LPSTR s,d;
                                       /* buffer full ?? */
     if ((++CNC_level)>19) { CNC_level--; CNC_error=eFile; return(FALSE); }
                             /* preset calling condition */
     CNC_stack[CNC_level].name  =CNC_Ocode;
     CNC_stack[CNC_level].hfile =0;
     CNC_stack[CNC_level].pfile =0L;
     CNC_stack[CNC_level].nloop =1;
     CNC_stack[CNC_level].nflag =PLC_flag;
     CNC_stack[CNC_level].ncode =CNC_Ncode;
     CNC_stack[CNC_level].ncycle=nCycle;
     CNC_stack[CNC_level].nmacro=nMacro;
     CNC_stack[CNC_level].ndata =nData;
     lstrncpy(CNC_stack[CNC_level].string,lpCmd->string,80);
     nCycle=nMacro=nData=0; CNC_Ocode=n; CNC_Ncode=0;
     push_stack(40400,150);
     for (i=0,s=(LPSTR)lpCmd,d=(LPSTR)CNC_calling; i<150; i++)
          *d++ = *s++;
                                    /* open USER process */
     if (n>=9000 && hwndUSER)
     {    if (USER_macro_process(n)) { PLC_flag=2; return(TRUE); }
     }
                                        /* open CNC file */
     lstrncpy(buf1,PLC_directory,80);
     sprintf(buf2, "O%04d.CNC", n);
     lstrncat(buf1,buf2,80);
     hfile = OpenFile((LPSTR)buf1, &of, OF_READ);
     if (hfile<=0) { CNC_level--; CNC_error=eFile; return(FALSE); }
     CNC_stack[CNC_level].hfile=hfile;
     PLC_flag=1;
     return(TRUE);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美二区三区| 国产福利一区二区| av一区二区三区黑人| 国产午夜亚洲精品午夜鲁丝片| 久久99精品国产91久久来源| 国产欧美日韩激情| 色综合天天天天做夜夜夜夜做| 一区二区三区在线免费播放| 欧美老女人第四色| 国产麻豆成人精品| 亚洲一区在线观看免费观看电影高清| 日韩精品综合一本久道在线视频| 欧美精品99久久久**| 在线播放/欧美激情| 成人av在线网| 麻豆成人免费电影| 亚洲色图一区二区三区| 日韩一级视频免费观看在线| 在线亚洲精品福利网址导航| 激情另类小说区图片区视频区| 亚洲裸体在线观看| 欧美日韩综合不卡| av不卡一区二区三区| 日本韩国一区二区| 99精品欧美一区| 国产精品一区在线观看乱码| 蜜桃传媒麻豆第一区在线观看| 国模套图日韩精品一区二区| 一本到不卡精品视频在线观看| 欧美日韩精品系列| 欧美午夜宅男影院| 在线精品亚洲一区二区不卡| 欧美精品在欧美一区二区少妇| 久久综合给合久久狠狠狠97色69| 欧美日韩综合在线免费观看| 久久久综合视频| 欧美成人女星排名| 91精品国产91久久综合桃花| 欧美久久婷婷综合色| 久久久精品免费观看| 亚洲制服丝袜在线| 成人免费毛片高清视频| 成年人国产精品| 日韩精品一区二区三区在线播放 | 精品奇米国产一区二区三区| 国产精品动漫网站| 中文一区二区在线观看| 国产夜色精品一区二区av| 亚洲一卡二卡三卡四卡五卡| 国产精品888| 日韩一区二区三区视频在线观看| 自拍偷拍国产亚洲| 国产精品综合二区| 日韩三级在线观看| 丝袜诱惑亚洲看片| 婷婷亚洲久悠悠色悠在线播放| 一区二区三区四区在线| 国产成人自拍在线| 久久亚洲欧美国产精品乐播| 天使萌一区二区三区免费观看| 欧美又粗又大又爽| 亚洲免费在线视频一区 二区| 国产精品亚洲专一区二区三区| 日韩视频在线你懂得| 婷婷开心久久网| 欧美日韩国产成人在线91| 亚洲精品高清在线观看| 日本黄色一区二区| 亚洲最大成人综合| 在线视频欧美精品| 亚洲影视在线观看| 欧美日韩一级黄| 丝袜美腿亚洲一区| 日韩一区二区麻豆国产| 日韩**一区毛片| 不卡影院免费观看| 亚洲视频一区在线观看| 97久久久精品综合88久久| 1000精品久久久久久久久| 天天综合天天综合色| 91麻豆精品久久久久蜜臀| 日韩和欧美一区二区三区| 制服丝袜中文字幕亚洲| 麻豆传媒一区二区三区| 国产亚洲成aⅴ人片在线观看| 国产高清久久久| 亚洲欧洲日韩一区二区三区| 99re视频精品| 亚洲一区二区三区在线播放| 欧美日韩成人综合在线一区二区| 石原莉奈在线亚洲三区| 精品久久久久久综合日本欧美 | 成人国产精品免费观看视频| 国产精品看片你懂得| 色哦色哦哦色天天综合| 日韩精品免费视频人成| 久久久久久久免费视频了| av电影在线观看完整版一区二区| 亚洲视频一二三区| 欧美日韩亚洲综合| 国产一区二区三区视频在线播放| 中文字幕第一区| 欧美人妇做爰xxxⅹ性高电影 | 国产精品传媒在线| 在线精品亚洲一区二区不卡| 免费观看在线色综合| 一本大道久久a久久综合| 午夜免费欧美电影| 国产日韩在线不卡| 在线成人免费视频| 风间由美中文字幕在线看视频国产欧美| 欧美日韩国产综合视频在线观看 | 欧美系列亚洲系列| 国产一区二区在线观看视频| 亚洲美女免费在线| 精品成人一区二区三区四区| 丝袜诱惑亚洲看片| 中文字幕一区二区三区视频 | 久久精品综合网| 欧美精品在线一区二区三区| 成人午夜在线播放| 久久国产欧美日韩精品| 91精品国产高清一区二区三区| 粉嫩绯色av一区二区在线观看| 一区二区三区电影在线播| 久久久久久久久久久久久女国产乱| 在线一区二区观看| 99视频在线精品| 极品美女销魂一区二区三区免费| 亚洲一区在线观看网站| 中日韩av电影| 成人av集中营| 国产中文字幕一区| 视频一区二区三区中文字幕| 亚洲综合色噜噜狠狠| 亚洲三级在线免费| 国产精品国产精品国产专区不蜜 | 欧美丝袜第三区| 99re8在线精品视频免费播放| 国产精品一区二区你懂的| 免费成人性网站| 日本人妖一区二区| 免费观看成人av| 日韩精品久久理论片| 日韩国产精品久久| 免费视频一区二区| 蜜臀av亚洲一区中文字幕| 日日摸夜夜添夜夜添精品视频| 亚洲高清免费视频| 久久综合国产精品| 久久久久久久久久久久久女国产乱 | 天堂精品中文字幕在线| 午夜成人在线视频| 午夜av区久久| 免费日本视频一区| 久久99久久99小草精品免视看| 蜜臀久久久久久久| 激情深爱一区二区| 国产精品夜夜嗨| 波波电影院一区二区三区| 9l国产精品久久久久麻豆| 懂色av噜噜一区二区三区av| 成人app网站| 欧美视频自拍偷拍| 日韩欧美亚洲一区二区| 2024国产精品视频| 国产精品毛片久久久久久久| 亚洲欧美在线视频| 亚洲国产aⅴ天堂久久| 免费不卡在线观看| 波多野结衣亚洲| 欧美日韩一区二区三区免费看| 欧美精品一二三四| 亚洲精品一线二线三线| 国产精品五月天| 亚洲成av人片在线观看无码| 欧美韩国日本不卡| 亚洲另类一区二区| 亚洲国产精品一区二区久久恐怖片| 午夜激情一区二区| 国产不卡在线播放| 欧美午夜寂寞影院| 久久嫩草精品久久久精品一| 亚洲免费大片在线观看| 丝瓜av网站精品一区二区| 国产精品一区在线观看乱码| 色美美综合视频| 欧美精品一区二区三区四区| 亚洲乱码国产乱码精品精的特点 | 日韩欧美在线综合网| 国产精品免费观看视频| 香蕉av福利精品导航| 顶级嫩模精品视频在线看| 欧美日韩国产另类不卡| 国产精品天美传媒| 久久av中文字幕片| 欧美日韩美女一区二区| 国产精品久久三区| 国产一区二区久久| 91精品国产欧美一区二区18 |