亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
亚洲五码中文字幕| 在线观看三级视频欧美| 97se亚洲国产综合自在线不卡| 欧美日本在线视频| 中文字幕五月欧美| 青娱乐精品在线视频| 一本大道久久a久久精二百| 欧美成人性战久久| 香蕉av福利精品导航| 成人va在线观看| 国产亚洲一区二区三区四区| 首页欧美精品中文字幕| 91丨porny丨最新| 欧美激情一区不卡| 97久久精品人人爽人人爽蜜臀| 欧美男女性生活在线直播观看| 亚洲天堂中文字幕| 国产激情精品久久久第一区二区 | 精品国产网站在线观看| 亚洲精品国产一区二区三区四区在线| 国产激情一区二区三区桃花岛亚洲| 在线成人午夜影院| 亚洲妇熟xx妇色黄| 欧美三级一区二区| 一区二区激情小说| 色偷偷久久人人79超碰人人澡| 中文字幕欧美区| 从欧美一区二区三区| 久久久综合视频| 国产在线一区二区综合免费视频| 日韩欧美高清dvd碟片| 日本不卡免费在线视频| 日韩一级片网址| 久久99精品一区二区三区三区| 欧美高清视频不卡网| 爽好久久久欧美精品| 日韩一区二区电影在线| 久草这里只有精品视频| 久久中文字幕电影| 成人精品视频一区二区三区 | gogogo免费视频观看亚洲一| 国产精品毛片大码女人| 91偷拍与自偷拍精品| 亚洲一区二区三区爽爽爽爽爽| 欧美三区在线视频| 免费三级欧美电影| 国产亚洲欧洲一区高清在线观看| 韩国精品一区二区| 国产精品欧美一区喷水| 色哟哟亚洲精品| 日韩一区欧美二区| 欧美精品一区二区三区蜜臀| 国产精品一区在线观看你懂的| 国产精品久久午夜夜伦鲁鲁| 一本大道久久精品懂色aⅴ| 首页国产欧美久久| www欧美成人18+| 97久久精品人人做人人爽 | 亚洲精选在线视频| 欧美一区二区三区免费观看视频| 国产在线视频精品一区| 亚洲视频1区2区| 日韩午夜激情av| 99久久亚洲一区二区三区青草| 五月婷婷久久丁香| 久久久一区二区三区| 欧美在线看片a免费观看| 美女精品一区二区| 亚洲男同性视频| 日韩欧美国产一二三区| 成人综合在线网站| 日日嗨av一区二区三区四区| 国产日产欧美精品一区二区三区| 色偷偷久久人人79超碰人人澡 | 亚洲动漫第一页| 久久久亚洲综合| 欧美日韩一区二区电影| 成人午夜激情在线| 日韩av电影免费观看高清完整版在线观看| 久久亚洲精品小早川怜子| 色综合天天狠狠| 国产精品一区二区你懂的| 视频一区国产视频| 亚洲激情在线播放| 中文字幕av一区二区三区| 日韩欧美的一区| 欧美色视频一区| 91丨九色丨蝌蚪丨老版| 国产福利一区二区| 麻豆视频一区二区| 亚洲一二三四在线| 亚洲精品视频在线| 国产亚洲精品中文字幕| 91麻豆精品国产91久久久久久 | 中文字幕综合网| 26uuuu精品一区二区| 欧美日韩激情在线| 色综合天天做天天爱| 成人午夜又粗又硬又大| 狠狠色综合色综合网络| 蜜臀av性久久久久蜜臀av麻豆| 亚洲激情五月婷婷| 亚洲图片欧美激情| 国产精品乱码一区二区三区软件 | 日韩写真欧美这视频| 欧美性大战久久久久久久蜜臀| 99久久精品免费看| 不卡视频免费播放| 成人av综合一区| 99视频精品免费视频| 粉嫩高潮美女一区二区三区 | 国产欧美一区二区三区鸳鸯浴| 日韩一区二区三区精品视频| 欧美美女直播网站| 在线不卡a资源高清| 欧美美女激情18p| 日韩情涩欧美日韩视频| 精品国产一区二区精华| 欧美xxxxx牲另类人与| 久久久午夜电影| 国产精品免费久久久久| 亚洲欧美激情小说另类| 亚洲午夜国产一区99re久久| 午夜在线电影亚洲一区| 免费观看91视频大全| 国产毛片精品视频| 成人免费毛片片v| 色狠狠桃花综合| 欧美精品久久久久久久多人混战| 欧美日韩亚洲综合在线| 日韩午夜电影在线观看| 久久午夜电影网| 国产精品成人午夜| 午夜久久久久久久久| 琪琪一区二区三区| 福利电影一区二区| 欧美午夜精品一区二区三区 | 国产尤物一区二区| 成人av免费观看| 欧美日韩国产高清一区二区 | 日本欧洲一区二区| 国产成人精品在线看| 色综合天天综合网天天狠天天| 91久久香蕉国产日韩欧美9色| 在线观看91精品国产麻豆| 欧美精品一区二区在线播放| 亚洲色图制服诱惑 | 亚洲女人的天堂| 五月婷婷久久丁香| 丰满白嫩尤物一区二区| 欧美在线观看视频一区二区三区 | 精品亚洲成av人在线观看| 91在线porny国产在线看| 欧美在线高清视频| 久久精品欧美日韩精品| 亚洲综合丝袜美腿| 国产成人自拍网| 91精品国产一区二区三区蜜臀| 国产日韩欧美激情| 午夜在线成人av| 91天堂素人约啪| 国产性天天综合网| 舔着乳尖日韩一区| 91影视在线播放| 精品福利一二区| 性感美女极品91精品| 91麻豆国产福利在线观看| 精品乱人伦一区二区三区| 亚洲精品五月天| 99视频国产精品| 国产视频在线观看一区二区三区| 香蕉影视欧美成人| 91福利精品视频| 国产精品免费网站在线观看| 久久99精品久久久久久动态图| 91福利社在线观看| 亚洲色图都市小说| 成人午夜电影久久影院| 欧美成人官网二区| 日韩成人免费看| 欧美系列日韩一区| 一区二区三区免费观看| 99精品一区二区| 国产精品沙发午睡系列990531| 国产精品性做久久久久久| 日韩精品一区二区三区老鸭窝| 五月天激情综合| 欧美欧美欧美欧美首页| 亚洲国产欧美另类丝袜| av电影在线不卡| 中文字幕五月欧美| 91丨porny丨国产入口| 中文字幕精品—区二区四季| 国内精品免费在线观看| 日韩精品一区二区三区在线| 日韩精品1区2区3区| 5月丁香婷婷综合| 奇米亚洲午夜久久精品| 欧美一区午夜精品| 精品一区二区三区久久|