大红鹰dhy登录界面「网站首页」欢迎您 /tsmaster-rpc-programming-guide-and-instructions/ /tsmaster-rpc-programming-guide-and-instructions/#respond Wed, 17 Jul 2024 05:29:52 +0000 /?p=11643 浠嬬粛RPC妯″潡鍓嶏紝鎴戜滑鍏堟祬鑱婁竴涓婻PC鐨勭浉鍏宠鏄庯紝浠ュ強鍦ㄤ粈涔堟牱鐨勬儏鍐典笅闇€瑕佷簡瑙f湰鏂 銆 RPC 璇存槑杩滅▼杩囩▼璋 […]

The post 骞茶揣鍒嗕韩 | TSMaster RPC 鍩虹鍏ラ棬锛氱紪绋嬫寚瀵煎拰浣跨敤璇存槑 first appeared on 涓婃捣鍚屾槦鏅鸿兘绉戞妧鏈夐檺鍏徃.

]]>

浠嬬粛RPC妯″潡鍓嶏紝鎴戜滑鍏堟祬鑱婁竴涓婻PC鐨勭浉鍏宠鏄庯紝浠ュ強鍦ㄤ粈涔堟牱鐨勬儏鍐典笅闇€瑕佷簡瑙f湰鏂 銆侟/p>

  1. RPC 璇存槑
    杩滅▼杩囩▼璋冪敤锛圧PC, Remote Procedure Call锛夋槸涓€绉嶇綉缁滈€氫俊鍗忚锛屼娇寰楃▼搴忓彲浠ヨ皟鐢ㄥ彟涓€鍙拌绠楁満涓婄殑绋嬪簭鎴栨湇鍔★紝灏卞儚璋冪敤鏈湴鐨勭▼搴忎竴鏍枫€俁PC 鐨勪富瑕佺洰鐨勬槸绠€鍖栧垎甯冨紡璁$畻锛屼娇寰楀紑鍙戣€呮棤闇€鍏虫敞搴曞眰鐨勭綉缁滈€氫俊缁嗚妭銆侟br />
  2. 浠€涔堟儏鍐典笅闇€瑕佷簡瑙f鏂囩珷锛烖br />鐢ㄦ埛鍩轰簬 TSMaster 寮€鍙戜簡瀵瑰簲鐨勫簲鐢ㄥ伐绋嬶紝鎯冲湪澶栭儴绋嬪簭涓嚜鍔ㄥ寲鎺у埗TSMaster锛屽彲浠ユ煡闃呮鏂囩珷銆侟span style="color: #ff0000;">锛堝娉細闄や簡 RPC锛孴SMaster杩樻彁渚涗簡鍩轰簬COM鐨勬帴鍙o紝鏈夐渶姹傚彲鍙﹁鏌ラ槄鐩稿叧鏂囩珷銆傦級

    鏈枃閫傜敤绋嬫帶妯″紡锛歍SMaster1 鎺у埗 TSMaster2锛屾垨鑰呭叾浠栬繘绋嬫帶鍒 TSMaster 杩涚▼锛堜娇鐢 TSMaster.dll锛夐€傜敤浜庤瑷€:C++ 銆丳ython銆 C#绛夎瑷€銆侟/li>
鏈枃鐩綍

01 | RPC鐨勫熀鏈蹇袋/h2>

瀹㈡埛绔拰鏈嶅姟鍣細

瀹㈡埛绔細鍙戣捣 RPC 璇锋眰鐨勭▼搴忋€侟/p>

鏈嶅姟鍣細鎺ユ敹 RPC 璇锋眰骞舵墽琛岀浉搴旇繃绋嬬殑绋嬪簭銆侟/p>

浠g悊:

瀹㈡埛绔唬鐞嗭細灏佽璇锋眰骞跺皢鍏跺彂閫佸埌鏈嶅姟鍣ㄣ€侟/p>

鏈嶅姟鍣ㄤ唬鐞嗭細鎺ユ敹璇锋眰锛岃В鍖呭苟璋冪敤鏈湴杩囩▼锛屼箣鍚庡皢缁撴灉杩斿洖缁欏鎴风浠g悊銆侟/p>

閫氫俊鏈哄埗:

浼犺緭鍗忚锛氬簳灞備娇鐢ㄧ殑鍗忚锛屾瘮濡 TCP銆乁DP銆侟/p>

鏁版嵁搴忓垪鍖栵細灏嗘暟鎹粨鏋勬垨瀵硅薄杞崲鎴愬彲浠ヤ紶杈撶殑鏍煎紡锛屾瘮濡 JSON銆乆ML銆丳rotocol聽Buffers銆侟/p>

RPC 宸ヤ綔娴佺▼:

  • 瀹㈡埛绔皟鐢ㄦ湰鍦颁唬鐞嗘柟娉曪細瀹㈡埛绔皟鐢ㄤ竴涓湅浼兼湰鍦扮殑鏂规硶锛屼絾瀹為檯涓婅繖涓柟娉曠敱瀹㈡埛绔唬鐞嗚礋璐e鐞嗭紱
  • 瀹㈡埛绔唬鐞嗗簭鍒楀寲璇锋眰锛氬皢鏂规硶鍚嶃€佸弬鏁扮瓑淇℃伅鎵撳寘鎴愭秷鎭紱
  • 娑堟伅浼犺緭锛氬鎴风浠g悊灏嗘秷鎭€氳繃缃戠粶浼犺緭鍒版湇鍔″櫒锛汓/li>
  • 鏈嶅姟鍣ㄤ唬鐞嗚В鍖呰姹傦細鎺ユ敹鍒版秷鎭悗锛屾湇鍔″櫒浠g悊瑙e寘娑堟伅骞惰皟鐢ㄥ疄闄呯殑鏈湴鏂规硶锛汓/li>
  • 鎵ц鏂规硶骞剁敓鎴愬搷搴旓細鏈湴鏂规硶鎵ц瀹屾瘯鍚庯紝鐢熸垚鍝嶅簲缁撴灉锛汓/li>
  • 鏈嶅姟鍣ㄤ唬鐞嗘墦鍖呭搷搴旓細鏈嶅姟鍣ㄤ唬鐞嗗皢缁撴灉鎵撳寘鎴愭秷鎭苟閫氳繃缃戠粶鍙戦€佸洖瀹㈡埛绔紱
  • 瀹㈡埛绔唬鐞嗚В鍖呭搷搴旓細瀹㈡埛绔唬鐞嗘帴鏀跺埌鍝嶅簲娑堟伅鍚庯紝瑙e寘骞跺皢缁撴灉杩斿洖缁欏鎴风銆侟/li>

02銆乀SMaster RPC 搴旂敤

1锝淩PC 鍔熻兘

鍩轰簬 TSMaster 鐨 RPC 鏈哄埗锛岀敤鎴峰彲浠ュ湪 TSMaster 涓婁綅鏈虹幆澧冧腑鎼缓瀹屾暣鐨勫伐绋嬶紝娑电洊浠庢祴璇曠敤渚嬪紑鍙戝埌绋嬫帶璁惧绠$悊銆佹€荤嚎閫氳閰嶇疆浠ュ強鎺у埗鏉垮崱鎿嶄綔绛変竴绯诲垪娴佺▼銆傞€氳繃杩欎竴鏈哄埗锛岀敤鎴疯兘澶熼珮鏁堝湴鍦ㄥ鎴风杩滅▼鎺у埗 TSMaster 鏈嶅姟鍣紝瀹炵幇瀵圭郴缁熷彉閲忋€丆AN 淇″彿銆丩IN 淇″彿銆丗lexRay 淇″彿浠ュ強浠ュお缃戯紙ETH锛変俊鍙风瓑鐨勮鍐欐搷浣溿€傛澶栵紝鐢ㄦ埛杩樺彲浠ヨ皟鐢 TSMaster 鏈嶅姟鍣ㄤ笂瀹氫箟鐨勫悇绉嶅嚱鏁?/span>锛岃繘涓€姝ユ墿灞曞拰瀹氬埗绯荤粺鍔熻兘銆侟/p>

杩欑闆嗘垚鍖栫殑瑙e喅鏂规浣垮緱宸ョ▼绠$悊鍜岃嚜鍔ㄥ寲娴嬭瘯鏇村姞渚挎嵎鍜岄珮鏁堛€傜敤鎴锋棤闇€鍦ㄥ涓钩鍙颁箣闂村垏鎹紝鍗冲彲瀹屾垚鍖呮嫭纭欢閰嶇疆銆佷俊鍙风洃鎺с€佹暟鎹噰闆嗗拰娴嬭瘯鎵ц绛夊鏉備换鍔°€傞€氳繃TSMaster 鐨 RPC 鏈哄埗锛岀敤鎴峰湪瀹㈡埛绔嵆鍙疄鐜板鏈嶅姟鍣ㄧ殑杩滅▼绋嬫帶锛岀畝鍖栦簡鎿嶄綔娴佺▼锛屾彁楂樹簡娴嬭瘯鍜屽紑鍙戞晥鐜囷紝纭繚浜嗙郴缁熺殑绋冲畾鎬у拰鍙潬鎬с€侟/p>


TSMaster 鎻愪緵浜嗗己澶х殑鎺ュ彛鍜屼赴瀵岀殑鍔熻兘妯″潡锛岀敤鎴峰彲浠ユ牴鎹渶姹傜伒娲荤粍鍚堜娇鐢紝瀹炵幇瀵瑰悇绉嶄俊鍙峰拰璁惧鐨勭簿缁嗘帶鍒跺拰绠$悊銆傝繖绉嶆灦鏋勪笉浠呴€傜敤浜庣爺鍙戞祴璇曢樁娈碉紝涔熼€傜敤浜庣敓浜х幆澧冧腑鐨勫疄鏃剁洃鎺у拰鏁呴殰璇婃柇锛屾瀬澶ф彁鍗囦簡宸ョ▼椤圭洰鐨勬暣浣撹川閲忓拰鏁堢巼銆侟/p>

涓嶄粎濡傛锛孴SMaster 鐨 RPC 鏈哄埗鏀寔澶氱鎷撴墤缁撴瀯锛屼笉浠呭彲浠ュ疄鐜板鎴风涓庢湇鍔″櫒涔嬮棿鐨勪竴瀵逛竴閫氫俊锛岃繕鑳藉瀹炵幇浠ヤ笅澶嶆潅鐨勯€氫俊鎷撴墤锛欬/p>

  1. 涓€瀵瑰 (One-to-Many)锛欬/span>鍗曚釜瀹㈡埛绔彲浠ュ悓鏃舵帶鍒跺涓 TSMaster 鏈嶅姟鍣紝閫傜敤浜庨渶瑕佸悓鏃剁鐞嗗涓祴璇曠幆澧冩垨璁惧鐨勬儏鍐点€侟/li>
  2. 澶氬涓€ (Many-to-One)锛欬/strong>澶氫釜瀹㈡埛绔彲浠ュ悓鏃惰繛鎺ュ埌涓€涓 TSMaster 鏈嶅姟鍣紝杩欐牱涓嶅悓鐨勭敤鎴锋垨娴嬭瘯绯荤粺鍙互鍏变韩鍚屼竴涓湇鍔″櫒璧勬簮锛屽疄鐜板崗鍚屽伐浣滃拰璧勬簮鍏变韩銆侟/li>
  3. 澶氬澶 (Many-to-Many)锛欬/strong>澶氫釜瀹㈡埛绔拰澶氫釜鏈嶅姟鍣ㄤ箣闂村彲浠ヨ繘琛岀伒娲荤殑閫氫俊鍜屾帶鍒讹紝鏋勫缓澶嶆潅鐨勫垎甯冨紡娴嬭瘯鍜屾帶鍒剁郴缁燂紝閫傜敤浜庡ぇ鍨嬪伐绋嬮」鐩拰鍒嗗竷寮忔祴璇曠幆澧冦€侟/li>
TSMaster 鐨 RPC 鏈哄埗锛氫竴瀵瑰 (One-to-Many)銆佸瀵逛竴 (Many-to-One)銆佸瀵瑰 (Many-to-Many)

杩欑鐏垫椿鐨勬嫇鎵戠粨鏋勪娇寰 TSMaster 鑳藉閫傚簲鍚勭澶嶆潅鐨勫伐绋嬮渶姹傦紝鏃犺鏄湪鍗曚竴椤圭洰涓繕鏄湪璺ㄩ」鐩€佽法鍦板煙鐨勫垎甯冨紡娴嬭瘯涓紝閮借兘鎻愪緵楂樻晥銆佸彲闈犵殑瑙e喅鏂规銆傞€氳繃杩欑澶氭牱鍖栫殑閫氫俊妯″紡锛岀敤鎴峰彲浠ユ渶澶ч檺搴﹀湴鍒╃敤纭欢鍜岃蒋浠惰祫婧愶紝鎻愰珮绯荤粺鐨勬墿灞曟€у拰鐏垫椿鎬э紝婊¤冻涓嶅悓瑙勬ā鍜屽鏉傚害鐨勫伐绋嬮」鐩渶姹傘€侟/p>

03銆乀SMaster RPC 浣跨敤璇存槑

鍩轰簬RPC鏈韩鏈哄埗锛孴SMaster鎻愪緵浜嗙浉搴旀帴鍙o紝鍦ㄩ渶瑕佽绋嬫帶鐨勫伐绋嬩腑锛屾縺娲籖PC server绔紝涓虹▼鎺ц剼鏈彁渚涚浉搴旇祫婧愩€

1锝滄縺娲 server

寮€鍚痵erver绔搷浣滃涓嬶細

鏂板缓涓€涓狢鑴氭湰锛屽湪鍚姩浜嬩欢涓緭鍏ヤ笅闈唬鐮侊紝鍗宠〃绀烘縺娲讳簡褰撳墠宸ョ▼鐨剅pc server rpc_tsmaster_activate_server(true);

瀹為檯涓婏紝鍦 TSMaster v2024.06.05.1124 鐗堟湰涔嬪悗锛屾墍鏈塗SMaster宸ョ▼宸茬粡榛樿婵€娲讳簡RPC鍔熻兘銆侟/p>

2锝滄椿 client

native_int h; //client 鍙ユ焺

//鍙傛暟 1 涓烘彁渚 rpc 鏈嶅姟鐨 TSMaster 搴旂敤绋嬪簭鍚岦/p>

com.rpc_tsmaster_create_client(鈥淭SMaster鈥?&h);

//婵€娲 client 绔?/p>

Com.rpc_tsmaster_activate_client(h,true);

3锝滀慨鏀 server 绔暟鎹?/h3>

3.1 鍚姩鍋滄 server 宸ョ▼

鍚姩宸ョ▼锛欬/p>

TSMaster 灏忕▼搴忥細

com.rpc_tsmaster_cmd_start_simulation(h);

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

rpc_tsmaster_cmd_start_simulation(h);

3.2 璇诲啓绯荤粺鍙橀噺

璁剧疆绯荤粺鍙橀噺锛欬/p>

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″);

鑾峰彇绯荤粺鍙橀噺锛欬/p>

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 淇″彿锛欬/p>

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 淇″彿锛欬/p>

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 淇″彿锛欬/p>

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 淇″彿锛欬/p>

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 淇″彿锛欬/p>

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 淇″彿锛欬/p>

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 绯荤粺鍑芥暟

// 绗竴姝ワ細鍑嗗璋冪敤鍑芥暟鐨勮緭鍏ュ弬鏁?/span>

#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锛氬鐞嗗弬鏁颁腑鐨勮繑鍥炲€硷紙濡傛灉鍙敤锛堻/span>

s32 i;

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

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

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

}

涓婅堪浠g爜绛変环涓庡湪 TSMaster 杩涚▼涓娇鐢 app.create_system_var 鏉ュ垱寤虹郴缁熷彉閲忥紝鍗筹細app.create_system_var(var1,svtString,鈥漵tring default value鈥?鈥漷his is a comment鈥?;

闇€瑕佹敞鎰忕殑鏄紝浣跨敤璇ユ柟寮忚皟鐢 TSMaster 鍐呯殑绯荤粺鍑芥暟锛屾棤娉曚娇鐢ㄥ弬鏁颁负鎸囬拡绫诲瀷(鎶ユ枃绫诲瀷闄ゅ)鐨勫嚱鏁般€侟/span>

3.7 RPC聽浣跨敤灏忕▼搴忓簱鍑芥暟

// 绗竴姝ワ細鍑嗗璋冪敤鍑芥暟鐨勮緭鍏ュ弬鏁?/span>

#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锛氬鐞嗗弬鏁颁腑鐨勮繑鍥炲€硷紙濡傛灉鍙敤锛堻/span>

s32 i;

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

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

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

}

04銆乀SMaster RPC 鍑芥暟璇存槑

鍩轰簬RPC鏈韩鏈哄埗锛孴SMaster鎻愪緵浜嗙浉搴旀帴鍙o紝鍦ㄩ渶瑕佽绋嬫帶鐨勫伐绋嬩腑锛屾縺娲籖PC server绔紝涓虹▼鎺ц剼鏈彁渚涚浉搴旇祫婧愩€

1锝渞pc_tsmaster_create_client

鍑芥暟鍚嶇О
UInt32 rpc_tsmaster_create_client(const char*聽ATSMasterAppName,const psize_t AHandle)
鍔熻兘浠嬬粛
鍒涘缓涓€涓 TSMaster Rpc 瀹㈡埛绔?/section>
璋冪敤浣嶇疆
鍒濆鍖 tsmaster lib 搴撲箣鍚嶞/section>
杈撳叆鍙傛暟
ATSMasterAppName: TSMaster server 绔殑搴旂敤绋嬪簭鍚嶇О;AHandle : TSMaster Rpc 瀹㈡埛绔彞鏌凕/section>
杩斿洖鍊稽/strong>
==0: 鍑芥暟鎵ц鎴愬姛鍏朵粬鍊硷細鍑芥暟鎵ц澶辫触
绀轰緥
s32 h;rpc_tsmaster_create_client(“TSMaster1”, &h)

2锝渞pc_tsmaster_activate_client

鍑芥暟鍚嶇О

UInt32 rpc_tsmaster_activate_client(const size_t AHandle,const聽bool AActivate)

鍔熻兘浠嬬粛

婵€娲绘垨鑰呭仠鐢ㄤ竴涓 TSMaster Rpc 瀹㈡埛绔?/p>

璋冪敤浣嶇疆

鍒涘缓 TSMaster Rpc 瀹㈡埛绔箣鍚嶞/p>

杈撳叆鍙傛暟

AHandle : TSMaster Rpc 瀹㈡埛绔彞鏌凕/p>

AActivate: true=婵€娲伙紝false=鍋滅敤

杩斿洖鍊稽/strong>

==0: 鍑芥暟鎵ц鎴愬姛

鍏朵粬鍊硷細鍑芥暟鎵ц澶辫触

绀轰緥

rpc_tsmaster_activate_client(h, true)

3锝渞pc_tsmaster_is_simulation_running

鍑芥暟鍚嶇О

UInt32 rpc_tsmaster_is_simulation_running(const size_t聽AHandle,const pbool AIsRunning)

鍔熻兘浠嬬粛

鑾峰彇杩滅▼ TSMaster 浠跨湡杩愯鐨勭姸鎬?/p>

璋冪敤浣嶇疆

鍒涘缓 TSMaster Rpc 瀹㈡埛绔箣鍚嶞/p>

杈撳叆鍙傛暟

AHandle : TSMaster Rpc 瀹㈡埛绔彞鏌凕/p>

AIsRunning锛氳繙绋 TSMaster 浠跨湡杩愯鐨勭姸鎬佺殑鏁版嵁鎸囬拡

True=姝e湪杩愯锛宖alse=鏈繍琛孅/p>

杩斿洖鍊稽/strong>

==0: 鍑芥暟鎵ц鎴愬姛

鍏朵粬鍊硷細鍑芥暟鎵ц澶辫触

绀轰緥

bool b;

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

if (b){

// current simulation is running

}

}

4锝淈strong>rpc_tsmaster_cmd_set_mode_realtime

鍑芥暟鍚嶇О

UInt32 rpc_tsmaster_cmd_set_mode_realtime(const size_t AHandle)

鍔熻兘浠嬬粛

灏 TSMaster Rpc server 閰嶇疆涓哄疄鏃舵ā寮廃/p>

璋冪敤浣嶇疆

鍒涘缓 TSMaster Rpc 瀹㈡埛绔箣鍚庯紝浠跨湡杩愯涔嬪墠

杈撳叆鍙傛暟

AHandle : TSMaster Rpc 瀹㈡埛绔彞鏌凕/p>

杩斿洖鍊稽/strong>

==0: 鍑芥暟鎵ц鎴愬姛

鍏朵粬鍊硷細鍑芥暟鎵ц澶辫触

绀轰緥

rpc_tsmaster_cmd_set_mode_realtime(h)

5锝淈strong style="font-size: 16px;">rpc_tsmaster_cmd_set_mode_sim

鍑芥暟鍚嶇О

UInt32 rpc_tsmaster_cmd_set_mode_sim(const size_t AHandle)

鍔熻兘浠嬬粛

灏 TSMaster Rpc server 閰嶇疆涓轰豢鐪熸ā寮廃/p>

璋冪敤浣嶇疆

鍒涘缓 TSMaster Rpc 瀹㈡埛绔箣鍚庯紝浠跨湡杩愯涔嬪墠

杈撳叆鍙傛暟

AHandle : TSMaster Rpc 瀹㈡埛绔彞鏌凕/p>

杩斿洖鍊稽/strong>

==0: 鍑芥暟鎵ц鎴愬姛

鍏朵粬鍊硷細鍑芥暟鎵ц澶辫触

绀轰緥

rpc_tsmaster_cmd_set_mode_sim(h)

6锝淈strong>rpc_tsmaster_cmd_start_simulation

鍑芥暟鍚嶇О

UInt32 rpc_tsmaster_cmd_start_simulation(const size_t AHandle)

鍔熻兘浠嬬粛

鍚姩 TSMaster Rpc server 浠跨湡

璋冪敤浣嶇疆

鍒涘缓 TSMaster Rpc 瀹㈡埛绔箣鍚嶞/p>

杈撳叆鍙傛暟

AHandle : TSMaster Rpc 瀹㈡埛绔彞鏌凕/p>

杩斿洖鍊稽/strong>

==0: 鍑芥暟鎵ц鎴愬姛

鍏朵粬鍊硷細鍑芥暟鎵ц澶辫触

绀轰緥

rpc_tsmaster_cmd_start_simulation(h)

7锝淈strong style="font-size: 16px;">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 淇″彿鍊稽/p>

璋冪敤浣嶇疆

鍒涘缓 TSMaster Rpc 瀹㈡埛绔箣鍚嶞/p>

杈撳叆鍙傛暟

AHandle : TSMaster Rpc 瀹㈡埛绔彞鏌凕/p>

ASgnAddress锛氭暟鎹簱涓俊鍙风殑璺緞

AValue: 淇″彿鍊稽/p>

杩斿洖鍊稽/strong>

==0: 鍑芥暟鎵ц鎴愬姛

鍏朵粬鍊硷細鍑芥暟鎵ц澶辫触

绀轰緥

if(0==rpc_tsmaster_cmd_set_can_signal(h,

“0/CAN_FD_Powertrain/Engine/EngineData/EngSpeed”, 1234)){

// signal written

}

8锝淈strong style="font-size: 16px;">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 淇″彿鍊稽/p>

璋冪敤浣嶇疆

鍒涘缓 TSMaster Rpc 瀹㈡埛绔箣鍚嶞/p>

杈撳叆鍙傛暟

AHandle : TSMaster Rpc 瀹㈡埛绔彞鏌凕/p>

ASgnAddress锛氭暟鎹簱涓俊鍙风殑璺緞

AValue: 淇″彿鍊兼寚閽圏/p>

杩斿洖鍊稽/strong>

==0: 鍑芥暟鎵ц鎴愬姛

鍏朵粬鍊硷細鍑芥暟鎵ц澶辫触

绀轰緥

double d;

if(0==rpc_tsmaster_cmd_get_can_signal(h,

“0/CAN_FD_Powertrain/Engine/EngineData/EngSpeed”, &d)){

// signal is retrieved

}

9锝淈strong style="font-size: 16px;">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 淇″彿鍊稽/p>

璋冪敤浣嶇疆

鍒涘缓 TSMaster Rpc 瀹㈡埛绔箣鍚嶞/p>

杈撳叆鍙傛暟

AHandle : TSMaster Rpc 瀹㈡埛绔彞鏌凕/p>

ASgnAddress锛氭暟鎹簱涓俊鍙风殑璺緞

AValue: 淇″彿鍊稽/p>

杩斿洖鍊稽/strong>

==0: 鍑芥暟鎵ц鎴愬姛

鍏朵粬鍊硷細鍑芥暟鎵ц澶辫触

绀轰緥

if(0==rpc_tsmaster_cmd_set_lin_signal(h,

“chnidx/net/node/msg/signal”, 1234)){

// signal written

}

10锝淈strong style="font-size: 16px;">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 淇″彿鍊稽/p>

璋冪敤浣嶇疆

鍒涘缓 TSMaster Rpc 瀹㈡埛绔箣鍚嶞/p>

杈撳叆鍙傛暟

AHandle : TSMaster Rpc 瀹㈡埛绔彞鏌凕/p>

ASgnAddress锛氭暟鎹簱涓俊鍙风殑璺緞

AValue: 淇″彿鍊兼寚閽圏/p>

杩斿洖鍊稽/strong>

==0: 鍑芥暟鎵ц鎴愬姛

鍏朵粬鍊硷細鍑芥暟鎵ц澶辫触

绀轰緥

double d;

if(0==rpc_tsmaster_cmd_get_lin_signal(h,

“chnidx/net/node/msg/signal”, &d)){

// signal is retrieved

}

11锝淈strong style="font-size: 16px;">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 淇″彿鍊稽/p>

璋冪敤浣嶇疆

鍒涘缓 TSMaster Rpc 瀹㈡埛绔箣鍚嶞/p>

杈撳叆鍙傛暟

AHandle : TSMaster Rpc 瀹㈡埛绔彞鏌凕/p>

ASgnAddress锛氭暟鎹簱涓俊鍙风殑璺緞

AValue: 淇″彿鍊稽/p>

杩斿洖鍊稽/strong>

==0: 鍑芥暟鎵ц鎴愬姛

鍏朵粬鍊硷細鍑芥暟鎵ц澶辫触

绀轰緥

if(0==rpc_tsmaster_cmd_set_flexray_signal(h,

“chnidx/net/node/msg/signal”, 1234)){

// signal written

}

12锝淈strong style="font-size: 16px;">rpc_tsmaster_cmd_get_flexray_signal

鍑芥暟鍚嶇О

UInt32 rpc_tsmaster_cmd_get_flexray_signal(const size_t聽AHandle,const char* ASgnAddress,const pdouble AValue)

鍔熻兘浠嬬粛

鍦ㄨ繙绋 TSMaster 涓婅幏鍙栨暟鎹簱涓殑 flexray 淇″彿鍊稽/p>

璋冪敤浣嶇疆

鍒涘缓 TSMaster Rpc 瀹㈡埛绔箣鍚嶞/p>

杈撳叆鍙傛暟

AHandle : TSMaster Rpc 瀹㈡埛绔彞鏌凕/p>

ASgnAddress锛氭暟鎹簱涓俊鍙风殑璺緞

AValue: 淇″彿鍊兼寚閽圏/p>

杩斿洖鍊稽/strong>

==0: 鍑芥暟鎵ц鎴愬姛

鍏朵粬鍊硷細鍑芥暟鎵ц澶辫触

绀轰緥

double d;

if(0==rpc_tsmaster_cmd_get_flexray_signal(h,

“chnidx/net/node/msg/signal”, &d)){

// signal is retrieved

}

13锝淈strong>rpc_tsmaster_cmd_write_system_var

鍑芥暟鍚嶇О

UInt32 rpc_tsmaster_cmd_write_system_var(const size_t聽AHandle,const char* ACompleteName,const char* AValue)

鍔熻兘浠嬬粛

浠庤繙绋 TSMaster 鎸夊悕绉板啓鍏ョ郴缁熷彉閲廃/p>

璋冪敤浣嶇疆

鍒涘缓 TSMaster Rpc 瀹㈡埛绔箣鍚嶞/p>

杈撳叆鍙傛暟

AHandle : TSMaster Rpc 瀹㈡埛绔彞鏌凕/p>

ACompleteName锛氱郴缁熷彉閲忓悕绉?/p>

AValue: 鏁版嵁鍊稽/p>

杩斿洖鍊稽/strong>

==0: 鍑芥暟鎵ц鎴愬姛

鍏朵粬鍊硷細鍑芥暟鎵ц澶辫触

绀轰緥

rpc_tsmaster_cmd_write_system_var(h, “v1”, “1.2345”)

14锝淈strong style="font-size: 16px;">rpc_tsmaster_cmd_read_system_var

鍑芥暟鍚嶇О

UInt32 rpc_tsmaster_cmd_read_system_var(const size_t聽AHandle,const char* ASysVarName,const pdouble AValue)

鍔熻兘浠嬬粛

浠庤繙绋 TSMaster 鎸夊悕绉拌鍙栫郴缁熷彉閲徛犅犅犅燑/p>

璋冪敤浣嶇疆

鍒涘缓 TSMaster Rpc 瀹㈡埛绔箣鍚嶞/p>

杈撳叆鍙傛暟

AHandle : TSMaster Rpc 瀹㈡埛绔彞鏌凕/p>

ASysVarName锛氱郴缁熷彉閲忓悕绉?/p>

AValue: 鏁版嵁鍊兼寚閽圏/p>

杩斿洖鍊稽/strong>

==0: 鍑芥暟鎵ц鎴愬姛

鍏朵粬鍊硷細鍑芥暟鎵ц澶辫触

绀轰緥

double d;

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

log(“value = %f”, d);

}

15锝淈strong style="font-size: 16px;">rpc_tsmaster_cmd_write_signal

鍑芥暟鍚嶇О

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

AValue)

鍔熻兘浠嬬粛

浠庤繙绋 TSMaster 鎸夊悕绉板啓鍏ヤ俊鍙峰€稽/p>

璋冪敤浣嶇疆

鍒涘缓 TSMaster Rpc 瀹㈡埛绔箣鍚嶞/p>

杈撳叆鍙傛暟

AHandle : TSMaster Rpc 瀹㈡埛绔彞鏌凕/p>

ABusType锛氭€荤嚎绫诲瀷

AAddr锛氭暟鎹簱涓俊鍙风殑璺緞

AValue: 鏁版嵁鍊稽/p>

杩斿洖鍊稽/strong>

==0: 鍑芥暟鎵ц鎴愬姛

鍏朵粬鍊硷細鍑芥暟鎵ц澶辫触

绀轰緥

if(0==rpc_tsmaster_cmd_write_signal(h,APP_CAN,

“0/Powertrain/Engine/EngSpeed”, 1234)){

// value written

}

16锝淈strong>rpc_tsmaster_cmd_read_signal

鍑芥暟鍚嶇О

UInt32 rpc_tsmaster_cmd_read_signal(const size_t AHandle,const聽TLIBApplicationChannelType ABusType,const char* AAddr,const

pdouble AValue)

鍔熻兘浠嬬粛

浠庤繙绋 TSMaster 鎸夊悕绉拌鍙栦俊鍙饵/p>

璋冪敤浣嶇疆

鍒涘缓 TSMaster Rpc 瀹㈡埛绔箣鍚嶞/p>

杈撳叆鍙傛暟

AHandle : TSMaster Rpc 瀹㈡埛绔彞鏌凕/p>

ABusType锛氭€荤嚎绫诲瀷

AAddr锛氭暟鎹簱涓俊鍙风殑璺緞

AValue: 鏁版嵁鍊兼寚閽圏/p>

杩斿洖鍊稽/strong>

==0: 鍑芥暟鎵ц鎴愬姛

鍏朵粬鍊硷細鍑芥暟鎵ц澶辫触

绀轰緥

double d;

if(0==rpc_tsmaster_cmd_read_signal(h,APP_CAN,

“0/Powertrain/Engine/EngSpeed”, &d)){

log(“signal value = %f”, d);

}

17锝淈strong style="font-size: 16px;">rpc_tsmaster_delete_client

鍑芥暟鍚嶇О

UInt32 rpc_tsmaster_delete_client(const size_t AHandle)

鍔熻兘浠嬬粛

鍒犻櫎 rpc client

璋冪敤浣嶇疆

鍒涘缓 TSMaster Rpc 瀹㈡埛绔箣鍚嶞/p>

杈撳叆鍙傛暟

AHandle : TSMaster Rpc 瀹㈡埛绔彞鏌凕/p>

杩斿洖鍊稽/strong>

==0: 鍑芥暟鎵ц鎴愬姛

鍏朵粬鍊硷細鍑芥暟鎵ц澶辫触

绀轰緥

rpc_tsmaster_delete_client(h)

18锝淈strong style="font-size: 16px;">rpc_tsmaster_cmd_stop_simulation

鍑芥暟鍚嶇О

UInt32 rpc_tsmaster_cmd_stop_simulation(const size_t AHandle)

鍔熻兘浠嬬粛

鍋滄杩滅▼ TSMaster 浠跨湡

璋冪敤浣嶇疆

鍒涘缓 TSMaster Rpc 瀹㈡埛绔箣鍚嶞/p>

杈撳叆鍙傛暟

AHandle : TSMaster Rpc 瀹㈡埛绔彞鏌凕/p>

杩斿洖鍊稽/strong>

==0: 鍑芥暟鎵ц鎴愬姛

鍏朵粬鍊硷細鍑芥暟鎵ц澶辫触

绀轰緥

rpc_tsmaster_cmd_stop_simulation(h)

19锝淈strong style="font-size: 16px;">rpc_tsmaster_call_system_api

鍑芥暟鍚嶇О

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

char** AArgs)

鍔熻兘浠嬬粛

Client 璋冪敤 server 绔娇鐢ㄧ郴缁熷嚱鏁?/strong>

璋冪敤浣嶇疆

鍒涘缓 TSMaster Rpc 瀹㈡埛绔箣鍚嶞/p>

杈撳叆鍙傛暟

AHandle : TSMaster Rpc 瀹㈡埛绔彞鏌凕/p>

AAPIName锛氱郴缁熷嚱鏁板悕绉帮紝鈥漚pp.create_system_var鈥滭/p>

AArgCount: 鍑芥暟鍙傛暟鏁伴噺

AArgCapacity锛氬弬鏁板瓧绗︿覆闀垮害

AArgs锛氬弬鏁板瓧绗︿覆鏁扮粍

杩斿洖鍊稽/strong>

==0: 鍑芥暟鎵ц鎴愬姛

鍏朵粬鍊硷細鍑芥暟鎵ц澶辫触

绀轰緥

// 绗竴姝ワ細鍑嗗璋冪敤鍑芥暟鐨勮緭鍏ュ弬鏁?/p>

#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锛氬鐞嗗弬鏁颁腑鐨勮繑鍥炲€硷紙濡傛灉鍙敤锛堻/p>

s32 i;

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

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

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

}

20锝淈strong style="font-size: 16px;">rpc_tsmaster_call_library_api

鍑芥暟鍚嶇О

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

鍔熻兘浠嬬粛

Client 璋冪敤 server 绔娇鐢ㄧ郴缁熷嚱鏁?/strong>

璋冪敤浣嶇疆

鍒涘缓 TSMaster Rpc 瀹㈡埛绔箣鍚嶞/p>

杈撳叆鍙傛暟

AHandle : TSMaster Rpc 瀹㈡埛绔彞鏌凕/p>

AAPIName锛氬皬绋嬪簭搴撳嚱鏁板悕绉帮紝鈥漨ylib.create_system_var鈥滭/p>

AArgCount: 鍑芥暟鍙傛暟鏁伴噺

AArgCapacity锛氬弬鏁板瓧绗︿覆闀垮害

AArgs锛氬弬鏁板瓧绗︿覆鏁扮粍

杩斿洖鍊稽/strong>

==0: 鍑芥暟鎵ц鎴愬姛

鍏朵粬鍊硷細鍑芥暟鎵ц澶辫触

绀轰緥

// 绗竴姝ワ細鍑嗗璋冪敤鍑芥暟鐨勮緭鍏ュ弬鏁?/p>

#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锛氬鐞嗗弬鏁颁腑鐨勮繑鍥炲€硷紙濡傛灉鍙敤锛堻/p>

s32 i;

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

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

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

}

The post 骞茶揣鍒嗕韩 | TSMaster RPC 鍩虹鍏ラ棬锛氱紪绋嬫寚瀵煎拰浣跨敤璇存槑 first appeared on 涓婃捣鍚屾槦鏅鸿兘绉戞妧鏈夐檺鍏徃.

]]>
/tsmaster-rpc-programming-guide-and-instructions/feed/ 0