2021-協同產品設計實習-stage3-bg6

  • Home
    • Site Map
    • reveal
    • blog
  • About
  • 機械手臂
    • 繪圖成果
    • 計算角度
  • 程式模擬
    • W10
    • W11
  • CoppliaSim程式模擬
    • CoppeliaSim 教學
      • 軸的旋轉教學
      • 直線運動教學
      • 1-單軸直線運動
      • 2-可變速之旋轉運動
      • 3-遙控攝影小汽車
      • CODE 指令解說
      • remoteApi python 指令對照
      • 機械手臂設定範例
      • 按鍵控制代碼
    • 架設場景
      • 對軸進行旋轉控制
      • 對方快進行XYZ軸控制
      • 物件螺旋運動
      • 3D列印機_控制噴嘴
      • 3D列印機_自動繪製
      • 3D列印機_控制高度
      • 衝擊試驗機
      • 架設機械手臂場景
      • 機械手臂場景微調
      • 機械手臂場景路徑控制
    • W13 Pick and Place
      • remoteApi
      • 0526更新
      • 舊版本
    • 尋找控制代碼
    • 控制解說
    • 0513 機械手臂新增夾爪控制
    • 0511 Programming in C++
    • 參考資料
    • 舊資料
      • 0511 Programming in Lua on multiple program
      • 0511 Programming in Lua in One program
  • task2-remoteAPI
    • 機械手臂多人對戰
    • 自動吹笛子機
    • 3D列印機
    • W13 Pick and Place remoteApi
      • 0601
      • 0524
    • remoteAPI in C++
      • 0511
      • 0512
      • 0512-2
    • remoteAPI in python
      • 0513-1
      • 0517
    • remoteApi in Lua
      • 0513-2
  • stage3
    • task
      • task1
    • 每週進度影片
      • 第九週
      • 第十週
      • 第十一週
      • 第十二週
      • 第十三週
    • 討論
      • discord
      • 第一次討論
      • 第二次討論
      • 第三次討論
      • 第四次討論
      • 第五次討論
    • 遇到的問題
      • 更新出錯
      • 倉儲帳號被鎖
    • 小組直播影片
      • 第11週
      • 第12週
      • 第13週
  • W15
    • 影片字幕整理
remoteAPI in C++ << Previous Next >> 0512

0511

嘗試以C++最為remoteAPI控制的語言

compiler為code block in Win10

不論怎麼修改在

後還是出現問題

simxGetObjectHandle(clientID, "joint1", &joint01, simx_opmode_oneshot_wait);

上程式片段中

simx_opmode_oneshot_wait

此定義一直出現error,內容如下

error: 'simx_opmode_oneshot_wait' was not declared in this scope

中譯: simx_opmode_oneshot_wait 定義不明

但是在尋找網路上的範例,寫法也都是如我程式中一樣,目前還在尋找解決方法

附上程式

#include <Windows.h>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>


extern "C" {
    #include "remoteAPI/extApi.h"
}



using namespace std;

int main(){
    int clientID = 0;
    simxFinish(-1);
    clientID = simxStart((simxChar*)"127.0.0.1", 19997, true, true, 5000, 5);
    Sleep(1);
    if (clientID != -1)
    {
        int joint01;
        int joint02;
        int joint03;
        int joint04;
        int joint05;
        simxGetObjectHandle(clientID, "joint1", &joint01, simx_opmode_oneshot_wait);//setting
        simxGetObjectHandle(clientID, "joint2", &joint02, simx_opmode_oneshot_wait);
        simxGetObjectHandle(clientID, "joint3", &joint03, simx_opmode_oneshot_wait);
        simxGetObjectHandle(clientID, "joint4", &joint04, simx_opmode_oneshot_wait);
        simxGetObjectHandle(clientID, "joint5", &joint05, simx_opmode_oneshot_wait);


        float degset01=-11.9;
        float degset02=34.69;
        float degset03=-20.2;
        float degset04=-11.9;
        float degset05=-11.9;
        float dif=1;

        //angle set0
        simxSetJointTargetPosition(clientID,joint01,degset01,simx_opmode_oneshot);
        simxSetJointTargetPosition(clientID,joint02,degset02,simx_opmode_oneshot);
        simxSetJointTargetPosition(clientID,joint03,degset03,simx_opmode_oneshot);
        simxSetJointTargetPosition(clientID,joint04,degset04,simx_opmode_oneshot);
        simxSetJointTargetPosition(clientID,joint05,degset05,simx_opmode_oneshot);
        bool balance_contral=true;


        clientID,auxiliaryData=simGetSimulatorMessage();


        while (clientID!=-1) {
            if (clientID==simxmessage_keypress) {
                if (auxiliaryData[1]==2009) { //up Key
                    degset01=degset01+dif;
                    simxSetJointTargetPosition(clientID,joint01,degset01,simx_opmode_oneshot);
                }
                if (auxiliaryData[1]==2010) { //down key
                    degset01=degset01-dif;
                    simxSetJointTargetPosition(clientID,joint01,degset01,simx_opmode_oneshot);
                }
                if (auxiliaryData[1]==2007) { //left key
                    degset02=degset02+dif;
                    simxSetJointTargetPosition(clientID,joint02,degset02,simx_opmode_oneshot);
                }
                if (auxiliaryData[1]==2008) {  //right key
                    degset02=degset02-dif;
                    simxSetJointTargetPosition(clientID,joint02,degset02,simx_opmode_oneshot);
                }
                if (auxiliaryData[1]==56) { //num8 key
                    degset03=degset03+dif;
                    simxSetJointTargetPosition(clientID,joint03,degset03,simx_opmode_oneshot);
                }
                if (auxiliaryData[1]==50) { //num2 key
                    degset03=degset03-dif;
                    simxSetJointTargetPosition(clientID,joint03,degset03,simx_opmode_oneshot);

                }
                if (auxiliaryData[1]==54) { //num6 key
                    degset04=degset04+dif;
                    simxSetJointTargetPosition(clientID,joint04,degset04,simx_opmode_oneshot);
                }
                if (auxiliaryData[1]==52) { //num4 key
                    degset04=degset04-dif;
                    simxSetJointTargetPosition(clientID,joint04,degset04,simx_opmode_oneshot);
                }
                if (auxiliaryData[1]==49) { //mun1 key
                    degset05=degset05+dif;
                    simxSetJointTargetPosition(clientID,joint05,degset05,simx_opmode_oneshot);
                }
                if (auxiliaryData[1]==51) { //num3 key
                    degset05=degset05-dif;
                    simxSetJointTargetPosition(clientID,joint05,degset05,simx_opmode_oneshot);
                }




                if  (auxiliaryData[1]==48){ //setting auto Balance at num0 key
                    if (balance_contral==true){
                        balance_contral=false;
                    }else{
                        balance_contral=true;
                    }
                }
                if (balance_contral==true) {
                    if (auxiliaryData[1]==2007) {
                        degset03=degset03+dif ;
                        simxSetJointTargetPosition(clientID,joint03,degset03,simx_opmode_oneshot);
                    }
                    if (auxiliaryData[1]==2008) {
                        degset03=degset03-dif;
                        simxSetJointTargetPosition(clientID,joint03,degset03,simx_opmode_oneshot);
                        }
                    }
                }
        clientID,auxiliaryData=simGetSimulatorMessage();
        }
    }
    simxFinish(clientID);
    return clientID;
}




remoteAPI in C++ << Previous Next >> 0512

Copyright © All rights reserved | This template is made with by Colorlib