色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

TSMaster RPC 基礎入門:編程指導和使用說明

上海同星智能科技有限公司 ? 2024-07-13 08:21 ? 次閱讀

介紹RPC模塊前,我們先淺聊一下RPC的相關說明,以及在什么樣的情況下需要了解本文。


1.

RPC 說明

遠程過程調用(RPC, Remote Procedure Call)是一種網絡通信協議,使得程序可以調用另一臺計算機上的程序或服務,就像調用本地的程序一樣。RPC 的主要目的是簡化分布式計算,使得開發者無需關注底層的網絡通信細節。


2.

什么情況下需要了解此文章?

用戶基于 TSMaster 開發了對應的應用工程,想在外部程序中自動化控制TSMaster,可以查閱此文章。(備注:除了 RPC,TSMaster還提供了基于COM的接口,有需求可另行查閱相關文章。)


本文適用程控模式:TSMaster1 控制 TSMaster2,或者其他進程控制 TSMaster 進程(使用 TSMaster.dll)適用于語言:C++ 、Python、 C#等語言。


1

RPC的基本概念

客戶端和服務器:

客戶端:發起 RPC 請求的程序。

服務器:接收 RPC 請求并執行相應過程的程序。

代理:

客戶端代理:封裝請求并將其發送到服務器。

服務器代理:接收請求,解包并調用本地過程,之后將結果返回給客戶端代理。


通信機制:

傳輸協議:底層使用的協議,比如 TCP、UDP。

數據序列化:將數據結構或對象轉換成可以傳輸的格式,比如 JSON、XML、ProtocolBuffers

RPC 工作流程:

● 客戶端調用本地代理方法:客戶端調用一個看似本地的方法,但實際上這個方法由客戶端代理負責處理;


●客戶端代理序列化請求:將方法名、參數等信息打包成消息;


●消息傳輸:客戶端代理將消息通過網絡傳輸到服務器;


●服務器代理解包請求:接收到消息后,服務器代理解包消息并調用實際的本地方法;


●執行方法并生成響應:本地方法執行完畢后,生成響應結果;


●服務器代理打包響應:服務器代理將結果打包成消息并通過網絡發送回客戶端;


●客戶端代理解包響應:客戶端代理接收到響應消息后,解包并將結果返回給客戶端。

2

TSMaster RPC 應用

1.

RPC 功能

基于 TSMaster 的 RPC 機制,用戶可以在 TSMaster 上位機環境中搭建完整的工程,涵蓋從測試用例開發到程控設備管理、總線通訊配置以及控制板卡操作等一系列流程。通過這一機制,用戶能夠高效地在客戶端遠程控制 TSMaster 服務器,實現對系統變量、CAN 信號、LIN 信號、FlexRay 信號以及以太網(ETH)信號等的讀寫操作。此外,用戶還可以調用 TSMaster 服務器上定義的各種函數,進一步擴展和定制系統功能。


這種集成化的解決方案使得工程管理和自動化測試更加便捷和高效。用戶無需在多個平臺之間切換,即可完成包括硬件配置、信號監控、數據采集和測試執行等復雜任務。通過TSMaster 的 RPC 機制,用戶在客戶端即可實現對服務器的遠程程控,簡化了操作流程,提高了測試和開發效率,確保了系統的穩定性和可靠性。


TSMaster 提供了強大的接口和豐富的功能模塊,用戶可以根據需求靈活組合使用,實現對各種信號和設備的精細控制和管理。這種架構不僅適用于研發測試階段,也適用于生產環境中的實時監控和故障診斷,極大提升了工程項目的整體質量和效率。


不僅如此,TSMaster 的 RPC 機制支持多種拓撲結構,不僅可以實現客戶端與服務器之間的一對一通信,還能夠實現以下復雜的通信拓撲:

1:一對多 (One-to-Many):單個客戶端可以同時控制多個 TSMaster 服務器,適用于需要同時管理多個測試環境或設備的情況。

2:多對一 (Many-to-One):多個客戶端可以同時連接到一個 TSMaster 服務器,這樣不同的用戶或測試系統可以共享同一個服務器資源,實現協同工作和資源共享。

3:多對多 (Many-to-Many):多個客戶端和多個服務器之間可以進行靈活的通信和控制,構建復雜的分布式測試和控制系統,適用于大型工程項目和分布式測試環境。

e0f54276-40ad-11ef-817b-92fbcf53809c.png

這種靈活的拓撲結構使得 TSMaster 能夠適應各種復雜的工程需求,無論是在單一項目中還是在跨項目、跨地域的分布式測試中,都能提供高效、可靠的解決方案。通過這種多樣化的通信模式,用戶可以最大限度地利用硬件和軟件資源,提高系統的擴展性和靈活性,滿足不同規模和復雜度的工程項目需求。

3

TSMaster RPC 使用說明

基于RPC本身機制,TSMaster提供了相應接口,在需要被程控的工程中,激活RPC server端,為程控腳本提供相應資源。

1.

激活 server

開啟server端操作如下:

新建一個C腳本,在啟動事件中輸入下面代碼,即表示激活了當前工程的rpc server rpc_tsmaster_activate_server(true);

實際上,在 TSMaster v2024.06.05.1124 版本之后,所有TSMaster工程已經默認激活了RPC功能。

2.

激活 client

native_int h; //client 句柄

//參數 1 為提供 rpc 服務的 TSMaster 應用程序名

com.rpc_tsmaster_create_client(“TSMaster”,&h);

//激活 client 端

Com.rpc_tsmaster_activate_client(h,true);

3.

修改 server 端數據

3.1 啟動停止 server 工程


啟動工程:

TSMaster 小程序:

com.rpc_tsmaster_cmd_start_simulation(h);

API(C\C++\C#\Python):

rpc_tsmaster_cmd_start_simulation(h);

3.2 讀寫系統變量


設置系統變量:

TSMaster 小程序:

com.rpc_tsmaster_cmd_write_system_var(h, "Var1", "1.2345");

API(C\C++\C#\Python):

rpc_tsmaster_cmd_write_system_var(h,"Var1","1.2345");


獲取系統變量:

TSMaster 小程序:

com.rpc_tsmaster_cmd_read_system_var(h, "Var1", "1.2345");

API(C\C++\C#\Python):

rpc_tsmaster_cmd_read_system_var(h,"Var1","1.2345");

3.3 讀寫 CAN 信號


設置 CAN 信號:

TSMaster 小程序:

com.rpc_tsmaster_cmd_set_can_signal(h,"chnidx/net/node/msg/signal", 1234)

API(C\C++\C#\Python):

rpc_tsmaster_cmd_set_can_signal(h,"chnidx/net/node/msg/signal", 1234)


獲取 CAN 信號:

double d = 0;

TSMaster 小程序:

com.rpc_tsmaster_cmd_get_can_signal(h,"chnidx/net/node/msg/signal", %d)

API(C\C++\C#\Python):

rpc_tsmaster_cmd_get_can_signal(h,"chnidx/net/node/msg/signal", %d)

3.4 讀寫 LIN 信號


設置 LIN 信號:

TSMaster 小程序:

com.rpc_tsmaster_cmd_set_lin_signal(h,"chnidx/net/node/msg/signal", 1234);

API(C\C++\C#\Python):

rpc_tsmaster_cmd_set_lin_signal(h,"chnidx/net/node/msg/signal", 1234);


獲取 LIN 信號:

double d = 0;

TSMaster 小程序:

com.rpc_tsmaster_cmd_get_lin_signal(h,"chnidx/net/node/msg/signal", %d);

API(C\C++\C#\Python):

rpc_tsmaster_cmd_get_lin_signal(h,"chnidx/net/node/msg/signal", %d);

3.5 讀寫 FlexRay 信號


設置 FR 信號:

TSMaster 小程序:

com.rpc_tsmaster_cmd_set_flexray_signal(h,"chnidx/net/node/msg/signal", 1234);

API(C\C++\C#\Python):

rpc_tsmaster_cmd_set_flexray_signal(h,"chnidx/net/node/msg/signal", 1234);


獲取 FR 信號:

double d = 0;

TSMaster 小程序:

com.rpc_tsmaster_cmd_get_can_signal(h,"chnidx/net/node/msg/signal", %d);

API(C\C++\C#\Python):

rpc_tsmaster_cmd_get_can_signal(h,"chnidx/net/node/msg/signal", %d)

3.6 RPC使用 TSMaster 系統函數


// 第一步:準備調用函數的輸入參數

#define STR_BUFFER_SIZE 1024

char args[4][STR_BUFFER_SIZE];

char* pArgs[4] = {&args[0][0], &args[1][0], &args[2][0], &args[3][0]};

sprintf_s(pArgs[0], STR_BUFFER_SIZE, "%s", "var1");

sprintf_s(pArgs[1], STR_BUFFER_SIZE, "%d", svtString);

sprintf_s(pArgs[2], STR_BUFFER_SIZE, "%s", "string default value");

sprintf_s(pArgs[3], STR_BUFFER_SIZE, "%s", "this is a comment");


// 步驟 2:調用任意 API

s32 ret;

ret = com.rpc_tsmaster_call_system_api(h, "app.create_system_var", 4, STR_BUFFER_SIZE,

&pArgs[0]);


// 步驟 3:處理參數中的返回值(如果可用)

s32 i;

log("API call result = %d", ret);

for (i=0; i<4; i++){

log("Argument %d: %s", i+1, pArgs[i]);

}

上述代碼等價與在 TSMaster 進程中使用 app.create_system_var 來創建系統變量,即:app.create_system_var(var1,svtString,”string default value”,”this is a comment”);


需要注意的是,使用該方式調用 TSMaster 內的系統函數,無法使用參數為指針類型(報文類型除外)的函數。

3.7 RPC使用小程序庫函數


// 第一步:準備調用函數的輸入參數

#define STR_BUFFER_SIZE 1024

char args[4][STR_BUFFER_SIZE];

char* pArgs[4] = {&args[0][0], &args[1][0], &args[2][0], &args[3][0]};

sprintf_s(pArgs[0], STR_BUFFER_SIZE, "%s", "var1");

sprintf_s(pArgs[1], STR_BUFFER_SIZE, "%d", svtString);

sprintf_s(pArgs[2], STR_BUFFER_SIZE, "%s", "string default value");

sprintf_s(pArgs[3], STR_BUFFER_SIZE, "%s", "this is a comment");


//步驟 2:調用任意 API

s32 ret;TSMaster RPC 編程指導

ret = com.rpc_tsmaster_call_library_api(h, "mylib.create_system_var", 4, STR_BUFFER_SIZE,

&pArgs[0]);


// 步驟 3:處理參數中的返回值(如果可用)

s32 i;

log("API call result = %d", ret);

for (i=0; i<4; i++){

log("Argument %d: %s", i+1, pArgs[i]);

}

4

TSMaster RPC 函數說明

1.

rpc_tsmaster_create_client

函數名稱

UInt32 rpc_tsmaster_create_client(const char*ATSMasterAppName,const psize_t AHandle)

功能介紹

創建一個 TSMaster Rpc 客戶端

調用位置

初始化 tsmaster lib 庫之后

輸入參數

ATSMasterAppName: TSMaster server 端的應用程序名稱;

AHandle : TSMaster Rpc 客戶端句柄

返回值

==0: 函數執行成功

其他值:函數執行失敗

示例

s32 h;

rpc_tsmaster_create_client("TSMaster1", &h)

2.

rpc_tsmaster_activate_client

函數名稱

UInt32 rpc_tsmaster_activate_client(const size_t AHandle,constbool AActivate)

功能介紹

激活或者停用一個 TSMaster Rpc 客戶端

調用位置

創建 TSMaster Rpc 客戶端之后

輸入參數

AHandle : TSMaster Rpc 客戶端句柄

AActivate: true=激活,false=停用

返回值

==0: 函數執行成功

其他值:函數執行失敗

示例

rpc_tsmaster_activate_client(h, true)

3.

rpc_tsmaster_is_simulation_running

函數名稱

UInt32 rpc_tsmaster_is_simulation_running(const size_tAHandle,const pbool AIsRunning)

功能介紹

獲取遠程 TSMaster 仿真運行的狀態

調用位置

創建 TSMaster Rpc 客戶端之后

輸入參數

AHandle : TSMaster Rpc 客戶端句柄

AIsRunning:遠程 TSMaster 仿真運行的狀態的數據指針

True=正在運行,false=未運行

返回值

==0: 函數執行成功

其他值:函數執行失敗

示例

bool b;

if (0 == com.rpc_tsmaster_is_simulation_running(h, &b)){

if (b){

// current simulation is running

}

}

4.

rpc_tsmaster_cmd_set_mode_realtime

函數名稱

UInt32 rpc_tsmaster_cmd_set_mode_realtime(const size_t AHandle)

功能介紹

將 TSMaster Rpc server 配置為實時模式

調用位置

創建 TSMaster Rpc 客戶端之后,仿真運行之前

輸入參數

AHandle : TSMaster Rpc 客戶端句柄

返回值

==0: 函數執行成功

其他值:函數執行失敗

示例

rpc_tsmaster_cmd_set_mode_realtime(h)

5.

rpc_tsmaster_cmd_set_mode_sim

函數名稱

UInt32 rpc_tsmaster_cmd_set_mode_sim(const size_t AHandle)

功能介紹

將 TSMaster Rpc server 配置為仿真模式

調用位置

創建 TSMaster Rpc 客戶端之后,仿真運行之前

輸入參數

AHandle : TSMaster Rpc 客戶端句柄

返回值

==0: 函數執行成功

其他值:函數執行失敗

示例

rpc_tsmaster_cmd_set_mode_sim(h)

6.

rpc_tsmaster_cmd_start_simulation

函數名稱

UInt32 rpc_tsmaster_cmd_start_simulation(const size_t AHandle)

功能介紹

啟動 TSMaster Rpc server 仿真

調用位置

創建 TSMaster Rpc 客戶端之后

輸入參數

AHandle : TSMaster Rpc 客戶端句柄

返回值

==0: 函數執行成功

其他值:函數執行失敗

示例

rpc_tsmaster_cmd_start_simulation(h)

7.

rpc_tsmaster_cmd_set_can_signal

函數名稱

UInt32 rpc_tsmaster_cmd_set_can_signal(const size_t AHandle,const

char* ASgnAddress,const double AValue)

功能介紹

在遠程 TSMaster 上修改數據庫中的 CAN 信號值

調用位置

創建 TSMaster Rpc 客戶端之后

輸入參數

AHandle : TSMaster Rpc 客戶端句柄

ASgnAddress:數據庫中信號的路徑

AValue: 信號值

返回值

==0: 函數執行成功

其他值:函數執行失敗

示例

if(0==rpc_tsmaster_cmd_set_can_signal(h,

"0/CAN_FD_Powertrain/Engine/EngineData/EngSpeed", 1234)){

// signal written

}

8.

rpc_tsmaster_cmd_get_can_signal

函數名稱

UInt32 rpc_tsmaster_cmd_get_can_signal(const size_t AHandle,const

char* ASgnAddress,const pdouble AValue)

功能介紹

在遠程 TSMaster 上獲取數據庫中的 CAN 信號值

調用位置

創建 TSMaster Rpc 客戶端之后

輸入參數

AHandle : TSMaster Rpc 客戶端句柄

ASgnAddress:數據庫中信號的路徑

AValue: 信號值指針

返回值

==0: 函數執行成功

其他值:函數執行失敗

示例

double d;

if(0==rpc_tsmaster_cmd_get_can_signal(h,

"0/CAN_FD_Powertrain/Engine/EngineData/EngSpeed", &d)){

// signal is retrieved

}

9.

rpc_tsmaster_cmd_set_lin_signal

函數名稱

UInt32 rpc_tsmaster_cmd_set_lin_signal(const size_t AHandle,const

char* ASgnAddress,const double AValue)

功能介紹

在遠程 TSMaster 上修改數據庫中的 LIN 信號值

調用位置

創建 TSMaster Rpc 客戶端之后

輸入參數

AHandle : TSMaster Rpc 客戶端句柄

ASgnAddress:數據庫中信號的路徑

AValue: 信號值

返回值

==0: 函數執行成功

其他值:函數執行失敗

示例

if(0==rpc_tsmaster_cmd_set_lin_signal(h,

"chnidx/net/node/msg/signal", 1234)){

// signal written

}

10.

rpc_tsmaster_cmd_get_lin_signal

函數名稱

UInt32 rpc_tsmaster_cmd_get_lin_signal(const size_t AHandle,const

char* ASgnAddress,const pdouble AValue)

功能介紹

在遠程 TSMaster 上獲取數據庫中的 LIN 信號值

調用位置

創建 TSMaster Rpc 客戶端之后

輸入參數

AHandle : TSMaster Rpc 客戶端句柄

ASgnAddress:數據庫中信號的路徑

AValue: 信號值指針

返回值

==0: 函數執行成功

其他值:函數執行失敗

示例

double d;

if(0==rpc_tsmaster_cmd_get_lin_signal(h,

"chnidx/net/node/msg/signal", &d)){

// signal is retrieved

}

11.

rpc_tsmaster_cmd_set_flexray_signal

函數名稱

UInt32 rpc_tsmaster_cmd_set_flexray_signal(const size_t AHandle,const char* ASgnAddress,const double AValue)

功能介紹

在遠程 TSMaster 上修改數據庫中的 flexray 信號值

調用位置

創建 TSMaster Rpc 客戶端之后

輸入參數

AHandle : TSMaster Rpc 客戶端句柄

ASgnAddress:數據庫中信號的路徑

AValue: 信號值

返回值

==0: 函數執行成功

其他值:函數執行失敗

示例

if(0==rpc_tsmaster_cmd_set_flexray_signal(h,

"chnidx/net/node/msg/signal", 1234)){

// signal written

}

12.

rpc_tsmaster_cmd_get_flexray_signal

函數名稱

UInt32 rpc_tsmaster_cmd_get_flexray_signal(const size_tAHandle,const char* ASgnAddress,const pdouble AValue)

功能介紹

在遠程 TSMaster 上獲取數據庫中的 flexray 信號值

調用位置

創建 TSMaster Rpc 客戶端之后

輸入參數

AHandle : TSMaster Rpc 客戶端句柄

ASgnAddress:數據庫中信號的路徑

AValue: 信號值指針

返回值

==0: 函數執行成功

其他值:函數執行失敗

示例

double d;

if(0==rpc_tsmaster_cmd_get_flexray_signal(h,

"chnidx/net/node/msg/signal", &d)){

// signal is retrieved

}

13.

rpc_tsmaster_cmd_write_system_var

函數名稱

UInt32 rpc_tsmaster_cmd_write_system_var(const size_tAHandle,const char* ACompleteName,const char* AValue)

功能介紹

從遠程 TSMaster 按名稱寫入系統變量

調用位置

創建 TSMaster Rpc 客戶端之后

輸入參數

AHandle : TSMaster Rpc 客戶端句柄

ACompleteName:系統變量名稱

AValue: 數據值

返回值

==0: 函數執行成功

其他值:函數執行失敗

示例

rpc_tsmaster_cmd_write_system_var(h, "v1", "1.2345")

14.

rpc_tsmaster_cmd_read_system_var

函數名稱

UInt32 rpc_tsmaster_cmd_read_system_var(const size_tAHandle,const char* ASysVarName,const pdouble AValue)

功能介紹

從遠程 TSMaster 按名稱讀取系統變量

調用位置

創建 TSMaster Rpc 客戶端之后

輸入參數

AHandle : TSMaster Rpc 客戶端句柄

ASysVarName:系統變量名稱

AValue: 數據值指針

返回值

==0: 函數執行成功

其他值:函數執行失敗

示例

double d;

if (0 == rpc_tsmaster_cmd_read_system_var(h, "v1", &d)){

log("value = %f", d);

}

15.

rpc_tsmaster_cmd_write_signal

函數名稱

UInt32 rpc_tsmaster_cmd_write_signal(const size_t AHandle,constTLIBApplicationChannelType ABusType,const char* AAddr,const double

AValue)

功能介紹

從遠程 TSMaster 按名稱寫入信號值

調用位置

創建 TSMaster Rpc 客戶端之后

輸入參數

AHandle : TSMaster Rpc 客戶端句柄

ABusType:總線類型

AAddr:數據庫中信號的路徑

AValue: 數據值

返回值

==0: 函數執行成功

其他值:函數執行失敗

示例

if(0==rpc_tsmaster_cmd_write_signal(h,APP_CAN,

"0/Powertrain/Engine/EngSpeed", 1234)){

// value written

}

16.

rpc_tsmaster_cmd_read_signal

函數名稱

UInt32 rpc_tsmaster_cmd_read_signal(const size_t AHandle,constTLIBApplicationChannelType ABusType,const char* AAddr,const

pdouble AValue)

功能介紹

從遠程 TSMaster 按名稱讀取信號

調用位置

創建 TSMaster Rpc 客戶端之后

輸入參數

AHandle : TSMaster Rpc 客戶端句柄

ABusType:總線類型

AAddr:數據庫中信號的路徑

AValue: 數據值指針

返回值

==0: 函數執行成功

其他值:函數執行失敗

示例

double d;

if(0==rpc_tsmaster_cmd_read_signal(h,APP_CAN,

"0/Powertrain/Engine/EngSpeed", &d)){

log("signal value = %f", d);

}

17.

rpc_tsmaster_delete_client

函數名稱

UInt32 rpc_tsmaster_delete_client(const size_t AHandle)

功能介紹

刪除 rpc client

調用位置

創建 TSMaster Rpc 客戶端之后

輸入參數

AHandle : TSMaster Rpc 客戶端句柄

返回值

==0: 函數執行成功

其他值:函數執行失敗

示例

rpc_tsmaster_delete_client(h)

18.

rpc_tsmaster_cmd_stop_simulation

函數名稱

UInt32 rpc_tsmaster_cmd_stop_simulation(const size_t AHandle)

功能介紹

停止遠程 TSMaster 仿真

調用位置

創建 TSMaster Rpc 客戶端之后

輸入參數

AHandle : TSMaster Rpc 客戶端句柄

返回值

==0: 函數執行成功

其他值:函數執行失敗

示例

rpc_tsmaster_cmd_stop_simulation(h)

19.

rpc_tsmaster_call_system_api

函數名稱

UInt32 rpc_tsmaster_call_system_api(const size_t AHandle,constchar* AAPIName,const s32 AArgCount,const s32 AArgCapacity,const

char** AArgs)

功能介紹

Client 調用 server 端使用系統函數

調用位置

創建 TSMaster Rpc 客戶端之后

輸入參數

AHandle : TSMaster Rpc 客戶端句柄

AAPIName:系統函數名稱,”app.create_system_var”

AArgCount: 函數參數數量

AArgCapacity:參數字符串長度

AArgs:參數字符串數組

返回值

==0: 函數執行成功

其他值:函數執行失敗

示例

// 第一步:準備調用函數的輸入參數

#define STR_BUFFER_SIZE 1024

char args[4][STR_BUFFER_SIZE];

char* pArgs[4] = {&args[0][0], &args[1][0], &args[2][0], &args[3][0]};

sprintf_s(pArgs[0], STR_BUFFER_SIZE, "%s", "var1");

sprintf_s(pArgs[1], STR_BUFFER_SIZE, "%d", svtString);

sprintf_s(pArgs[2], STR_BUFFER_SIZE, "%s", "string default value");

sprintf_s(pArgs[3], STR_BUFFER_SIZE, "%s", "this is a comment");

// 步驟 2:調用任意 API

s32 ret;

ret = com.rpc_tsmaster_call_system_api(h, "app.create_system_var", 4,

STR_BUFFER_SIZE, &pArgs[0]);

// 步驟 3:處理參數中的返回值(如果可用)

s32 i;

log("API call result = %d", ret);

for (i=0; i<4; i++){

log("Argument %d: %s", i+1, pArgs[i]);

}

20.

rpc_tsmaster_call_library_api

函數名稱

UInt32 rpc_tsmaster_call_library_api(const size_t AHandle,constchar* AAPIName,const s32 AArgCount,const s32 AArgCapacity,const char** AArgs)

功能介紹

Client 調用 server 端使用系統函數

調用位置

創建 TSMaster Rpc 客戶端之后

輸入參數

AHandle : TSMaster Rpc 客戶端句柄

AAPIName:小程序庫函數名稱,”mylib.create_system_var”

AArgCount: 函數參數數量

AArgCapacity:參數字符串長度

AArgs:參數字符串數組

返回值

==0: 函數執行成功

其他值:函數執行失敗

示例

// 第一步:準備調用函數的輸入參數

#define STR_BUFFER_SIZE 1024

char args[4][STR_BUFFER_SIZE];

char* pArgs[4] = {&args[0][0], &args[1][0], &args[2][0], &args[3][0]};

sprintf_s(pArgs[0], STR_BUFFER_SIZE, "%s", "var1");

sprintf_s(pArgs[1], STR_BUFFER_SIZE, "%d", svtString);

sprintf_s(pArgs[2], STR_BUFFER_SIZE, "%s", "string default value");

sprintf_s(pArgs[3], STR_BUFFER_SIZE, "%s", "this is a comment");

//步驟 2:調用任意 API

s32 ret;

ret = com.rpc_tsmaster_call_library_api(h, "mylib.create_system_var",

4, STR_BUFFER_SIZE, &pArgs[0]);

// 步驟 3:處理參數中的返回值(如果可用)

s32 i;

log("API call result = %d", ret);

for (i=0; i<4; i++){

log("Argument %d: %s", i+1, pArgs[i]);

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編程
    +關注

    關注

    88

    文章

    3673

    瀏覽量

    94686
  • RPC
    RPC
    +關注

    關注

    0

    文章

    111

    瀏覽量

    11735
  • 網絡通信
    +關注

    關注

    4

    文章

    823

    瀏覽量

    30639
收藏 0人收藏

    評論

    相關推薦

    微型51AVR編程器裝配說明書、使用說明書V1.2

    微型51AVR編程器裝配說明書、使用說明書V1.2
    發表于 08-06 22:26

    8051單片機C語言編程入門指導手冊

    8051單片機C語言編程入門指導
    發表于 09-21 08:18

    編程控制器(PLC)實驗指導書三

    編程控制器(PLC)實驗指導書 一、 使用說明SIEMENS SIMATIC S7-200CPU226 可編程控制器,其編程
    發表于 09-29 00:23 ?0次下載

    北京煒煌科技編程器使用說明

    本內容那個提供了北京煒煌科技編程器使用說明
    發表于 04-08 18:19 ?95次下載
    北京煒煌科技<b class='flag-5'>編程器使用說明</b>書

    根據實際應用編寫MPLAB-IDE入門指導 mini-PRO ICD2系列使用說明

    根據實際應用編寫MPLAB-IDE入門指導 mini-PRO ICD2系列使用說明
    發表于 09-22 10:36 ?12次下載

    歐姆龍手持編程器使用說明

    本文開始介紹了編程器的概念和編程器的使用方法,其次闡述了編程器寫存儲器方法,最后介紹了歐姆龍手持編程器使用說明。
    的頭像 發表于 04-09 10:14 ?2w次閱讀

    LabVIEW和三菱FXPLC編程協議及使用說明

    本文主要介紹了LabVIEW和三菱FXPLC編程協議及使用說明。
    發表于 06-04 09:00 ?42次下載

    LED可編程燈軟件安裝及使用說明

    LED可編程燈軟件安裝及使用說明
    發表于 01-04 11:05 ?18次下載

    安路ELF3 FPGA編程和配置使用說明

    電子發燒友網站提供《安路ELF3 FPGA編程和配置使用說明.pdf》資料免費下載
    發表于 09-27 10:16 ?1次下載
    安路ELF3 FPGA<b class='flag-5'>編程</b>和配置<b class='flag-5'>使用說明</b>

    安路ELF2 FPGA編程和配置使用說明

    電子發燒友網站提供《安路ELF2 FPGA編程和配置使用說明.pdf》資料免費下載
    發表于 09-27 09:33 ?5次下載
    安路ELF2 FPGA<b class='flag-5'>編程</b>和配置<b class='flag-5'>使用說明</b>

    TKScope仿真器編程ATmega8使用說明

    電子發燒友網站提供《TKScope仿真器編程ATmega8使用說明.pdf》資料免費下載
    發表于 10-14 14:54 ?2次下載
    TKScope仿真器<b class='flag-5'>編程</b>ATmega8<b class='flag-5'>使用說明</b>

    TSMaster 自定義 LIN 調度表編程指導

    TSMaster(v2023.10.7.990)之后的版本中新增了實現自定義LIN調度表相關API。今天重點和大家分享一下關于編程實現TSMaster自定義LIN調度表
    的頭像 發表于 05-11 08:21 ?961次閱讀
    <b class='flag-5'>TSMaster</b> 自定義 LIN 調度表<b class='flag-5'>編程</b><b class='flag-5'>指導</b>

    重磅!翹首以盼的《TSMaster開發從入門到精通》正式出版!

    TSMaster軟件,大家翹首以盼的《TSMaster開發從入門到精通》書籍于8月正式出版發售!《TSMaster開發從入門到精通》由楊金升
    的頭像 發表于 08-10 08:21 ?717次閱讀
    重磅!翹首以盼的《<b class='flag-5'>TSMaster</b>開發從<b class='flag-5'>入門</b>到精通》正式出版!

    新書推薦 | TSMaster開發從入門到精通

    書名:TSMaster開發從入門到精通書號:9787302667193作者:楊金升劉矗劉功申定價:99.80元《CANoe開發從入門到精通》作者又一力作!本書旨在幫助廣大汽車工業領域的研發工程師快速
    的頭像 發表于 08-30 12:37 ?961次閱讀
    新書推薦 | <b class='flag-5'>TSMaster</b>開發從<b class='flag-5'>入門</b>到精通

    干貨分享 | TSMaster AUTOSAR E2E使用說明

    仿真模塊,實現端到端的數據保護,確保數據在傳輸過程中不被篡改、丟失或損壞。本文主要介紹TSMasterAUTOSARE2E的使用說明。本文關鍵詞:TSMaster
    的頭像 發表于 02-14 20:07 ?576次閱讀
    干貨分享 | <b class='flag-5'>TSMaster</b> AUTOSAR E2E<b class='flag-5'>使用說明</b>

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品
    主站蜘蛛池模板: 草民电影网午夜伦理电影网 | 我和妽妽在厨房里的激情区二区 | 国精产品一区一区三区有限 | 亚洲AV成人无码999WWW | 国产精品毛片在线视频 | 99久久国产露脸精品国产麻豆 | 解开美女胸衣2破解版 | 极品少妇粉嫩小泬啪啪AV | 欧洲亚洲精品A片久久99果冻 | 国产在线自天天人人 | 99热只有这里有精品 | 色宅男看片午夜大片免费看 | 成人中文字幕在线观看 | 思思re热免费精品视频66 | 欧美18精品久久久无码午夜福利 | 国产传媒18精品免费观看 | 黄色三级三级三级免费看 | 亚洲国产高清在线观看视频 | av av在线| 国产午夜久久影院 | 免费a毛片 | 亚洲免费大全 | 99久久蜜臀亚洲AV无码精品 | 无毒成人社区 | 麻豆AV福利AV久久AV | 2019午夜75福利不卡片在线 | 久久国产热视频99rev6 | 久久香蕉国产线看观看精品 | 国产麻豆精品久久一二三 | 无码人妻视频又大又粗欧美 | 全黄h全肉细节全文 | 日日噜噜夜夜狠狠扒开双腿 | 偷柏自拍亚洲综合在线 | 亚洲专区区免费 | 亚洲 综合 欧美在线视频 | 色情内射少妇兽交 | 哒哒哒影院在线观看免费高清 | 久久99热这里只有精品66 | 国产色精品久久人妻99蜜桃麻豆 | 在线观看国产人视频免费中国 | 亚洲国产韩国欧美在线不卡 |