public static void moveToMaxPointAndBack(int speed) {
   if (printerComInterface != null) {
     String cmdString = "G91\nGO Z" + (0.01 * (maxLocation)) + " F" + speed;
     printerComInterface.send(cmdString);
     cmdString = "G91\nGO Z" + (0.01 * (-maxLocation)) + " F" + speed;
     printerComInterface.send(cmdString);
   }
 }
 public static void initThePosition(int speed) {
   if (printerComInterface != null) {
     String cmdString = "G91\nG0 Z" + (0.01 * (-locaton)) + " F" + speed;
     printerComInterface.send(cmdString);
     locaton = 0;
   }
 }
 public static void startScan() {
   if (davidComInterface != null
       & (currentState == STATE_PREPARE
           | currentState == STATE_SCANNING
           | currentState == STATE_SAVINGSCAN)) {
     // 设置到扫描模式
     davidComInterface.send(MODESCAN);
     try {
       Thread.currentThread().sleep(2000);
     } catch (InterruptedException ex) {
       Logger.getLogger(David_3_10_4.class.getName()).log(Level.SEVERE, null, ex);
     }
     // 回零点
     initThePosition(2000);
     // 开始扫描
     davidComInterface.send(STARTSCAN);
   }
 }
    public static void saveScan() {
      if (davidComInterface != null & printerComInterface != null & currentState != STATE_STOP) {
        setCurrentState(STATE_SAVINGSCAN);
        // 停止扫描
        davidComInterface.send(STOPLASERSCAN);
        try {
          Thread.currentThread().sleep(SLEEPTIME);
        } catch (InterruptedException ex) {
          Logger.getLogger(David_3_10_4.class.getName()).log(Level.SEVERE, null, ex);
        }
        // 进入纹理捕捉模式
        davidComInterface.send(MODETEXTURE);
        try {
          Thread.currentThread().sleep(SLEEPTIME);
        } catch (InterruptedException ex) {
          Logger.getLogger(David_3_10_4.class.getName()).log(Level.SEVERE, null, ex);
        }
        // 捕捉纹理
        try {
          printerComInterface.send("M107");
          Thread.currentThread().sleep(1000);
          davidComInterface.send(GRABTEXTURE);
          Thread.currentThread().sleep(1000);
          printerComInterface.send("M106 S255");

          Thread.currentThread().sleep(SLEEPTIME);
        } catch (InterruptedException ex) {
          Logger.getLogger(David_3_10_4.class.getName()).log(Level.SEVERE, null, ex);
        }
        // 扫描加入队列
        davidComInterface.send(ADDTOLIST);
        try {
          Thread.currentThread().sleep(SLEEPTIME);
        } catch (InterruptedException ex) {
          Logger.getLogger(David_3_10_4.class.getName()).log(Level.SEVERE, null, ex);
        }
        // 删除当前扫描
        davidComInterface.send(ERASESCAN);
        try {
          Thread.currentThread().sleep(SLEEPTIME);
        } catch (InterruptedException ex) {
          Logger.getLogger(David_3_10_4.class.getName()).log(Level.SEVERE, null, ex);
        }
        // 转动一定角度
        String turn = "G91\nG0 E" + (float) ((3200.0 / subdivide) / (360.0 / scanAngle)) + " F60";
        System.out.println("转动角度" + turn);
        printerComInterface.send(turn);
        try {
          Thread.currentThread().sleep(SLEEPTIME);
        } catch (InterruptedException ex) {
          Logger.getLogger(David_3_10_4.class.getName()).log(Level.SEVERE, null, ex);
        }
        scanTime = scanTime - 1;
        // 重新开始扫描
        if (scanTime >= 0) {
          startScan();
          setCurrentState(STATE_SCANNING);
          System.out.println("重新开始扫描!" + "还剩" + scanTime + "次");
        } else {
          setCurrentState(STATE_STOP);
          System.out.println("停止扫描!");
          return;
        }
      }
    }
 public static void sendMoveCmd(String cmdString, int speed) {
   if (printerComInterface != null) {
     printerComInterface.send(mCmd2Gcode(cmdString, speed));
     locaton = locaton + cmdToStep(cmdString);
   }
 }