01. 椤圭洰鎬昏
++ `StandardScene` 鏄 AGV/AMR 鍦烘櫙鎻掍欢搴擄紝涓嶆槸鐙珛 EXE銆傚畠渚濊禆瀹夸富 `SimpleComposer.exe` 杩愯锛岃兘鍔涜鐩栨惉杩愯皟搴︺佺幆绾夸换鍔° + 浜ら氫簰閿併佸尯鍩熸祦閲忔帶鍒躲佸厖鐢靛崗鍚屻侀棬鎺ц仈鍔紝浠ュ強 HTTP / MQTT / Modbus 绛夊鍥存帴鍙c +
+02. 杩愯鏋舵瀯
+| 灞傜骇 | +瑙掕壊 | +鍏稿瀷鏂囦欢 | +
|---|---|---|
| 瀹夸富灞 | +鍚姩绋嬪簭銆佽杞芥彃浠躲佸睍绀洪厤缃笌 Mission | +build/SimpleComposer.exe |
+
| 鍦烘櫙閫昏緫灞 | +浠诲姟璋冨害銆佸尯鍩熸祦鎺с佸厖鐢点侀棬绂佺瓑 | +Scheduler/銆Chained/銆Charge/ |
+
| 杞﹁締鍗忚灞 | +鍚勮溅鍨嬫帴鍏ヤ笌鐘舵佸悓姝 | +CarTypes/ |
+
| 鍩虹鑳藉姏灞 | +璺緞瑙勫垝銆侀攣鐐广佸叏灞瀵硅薄璁块棶 | +SimpleCore銆SimpleLib |
+
瀹夸富瑁呰浇娴佺▼
+-
+
- 缂栬瘧寰楀埌
StandardScene.dll
+ - 鏋勫缓浜嬩欢灏 DLL 澶嶅埗鍒
build/plugins
+ - 瀹夸富鍚姩鍚庢壂鎻忔彃浠剁洰褰 +
- 閫氳繃鐗规у弽灏勮瘑鍒
MissionType涓CarType
+ - 鐢ㄦ埛鎴 API 鍚姩瀵瑰簲鍦烘櫙閫昏緫 +
03. 妯″潡鍦板浘
+| 鐩綍 | +鑱岃矗 | +寤鸿璧锋鏂囦欢 | +
|---|---|---|
Scheduler/ |
+ 蹇冭烦銆佸畨鍏ㄤ俊鍙枫佸尯鍩熸祦鎺х瓑杞婚噺 Mission | +HeartBeatMission.cs |
+
Chained/ |
+ 鎼繍涓庣幆绾夸换鍔′富娴佺▼ | +TransportMission.cs |
+
Charge/ |
+ 鍏呯數绔欑鐞嗐佺瓥鐣ユ帶鍒躲佺姸鎬佺淮鎶 | +StandardChargeMission.cs |
+
InterLock/ |
+ 鍖哄煙浜掗攣銆佷氦閫氭帶鍒 | +TrafficInterlockMission.cs |
+
CarTypes/ |
+ 杞﹀瀷涓庡崗璁疄鐜 | +VDA5050Car.cs |
+
ExtendDevice/Door/ |
+ 闂ㄧ鑱斿姩 | +DoorMission.cs |
+
WebApi.cs |
+ 澶栭儴绯荤粺鎺ュ叆鍏ュ彛 | +/car/*銆/map/*銆/mission_reflection/* |
+
04. 鏋勫缓涓庤繍琛
+鏈満渚濊禆璺緞
+D:\MDCS\Dependencies\Commons\CommonUsage.dll
+D:\MDCS\Dependencies\deps\LessokajiWeaverUtilities.dll
+D:\MDCS\Dependencies\Commons\MDCSToolBox.dll
+D:\MDCS\Dependencies\Simple\RefSimpleCore.dll
+D:\MDCS\Executables\Simple\SimpleComposer.exe
+
+ 鏋勫缓姝ラ
+-
+
- 鎵撳紑
StandardScene.sln
+ - 缂栬瘧
Debug|Any CPU鎴Release|Any CPU
+ - 纭鏋勫缓浜嬩欢宸插皢鎻掍欢澶嶅埗鍒
build/plugins
+ - 杩愯
build/SimpleComposer.exe
+
05. 蹇熷紑濮嬫渚
+ +妗堜緥 A锛氭柊澧 HelloMission
++ 杩欐槸鎺ㄨ崘鐨勬柊鎵嬬涓缁冦傚畠鐩存帴娌跨敤 `Scheduler/HeartBeatMission.cs` 鐨勭粨鏋勶紝鍙繚鐣欐渶灏忕敓鍛藉懆鏈燂細`Create()`銆乣Execute()`銆乣Stop()`銆 +
+using System.Threading;
+using Newtonsoft.Json;
+using SimpleComposer.RCS;
+using SimpleCore;
+
+namespace StandardScene.Scheduler
+{
+ [MissionType(Name = "Hello Mission", editor = typeof(HelloMission))]
+ [I18N.DocumentTranslation(Name = "Hello Mission", locale = "en")]
+ public class HelloMission : Mission
+ {
+ [JsonIgnore] private bool _started;
+ [JsonIgnore] private Thread _thread;
+
+ public static Mission Create()
+ {
+ return new HelloMission();
+ }
+
+ public override void Execute()
+ {
+ if (_started) return;
+ _started = true;
+ status.status = "宸插惎鍔";
+
+ _thread = new Thread(() =>
+ {
+ int count = 0;
+ while (_started)
+ {
+ Thread.Sleep(1000);
+ count++;
+ status.status = $"tick:{count}";
+ }
+ });
+ _thread.Start();
+ }
+
+ public void Stop()
+ {
+ _started = false;
+ status.status = "宸插仠姝";
+ }
+ }
+}
+ -
+
- 鏂板缓
Scheduler/HelloMission.cs
+ - 纭瀹冨凡琚姞鍏ュ伐绋 +
- 缂栬瘧骞舵墦寮
build/SimpleComposer.exe
+ - 鍚姩鍚庤瀵
status.status鏄惁鎸夌閫掑
+
妗堜緥 B锛氬尯鍩熸祦鎺у疄楠
+
+ 璇ユ渚嬪搴 Scheduler/RegionalTrafficControlMission.cs銆傜粰鍚屼竴鍖哄煙鐨勭珯鐐瑰姞瀛楁 Region1=1锛屽嵆鍙檺鍒惰鍖哄煙鏈澶氬悓鏃跺彧鏈 1 鍙拌溅銆
+
Region1 = 1
+ -
+
- 缁欑洰鏍囧尯鍩熷唴澶氫釜绔欑偣閮藉姞涓婄浉鍚岀殑
Region1瀛楁
+ - 鍚姩鈥滃尯鍩熸祦閲忕洃鎺р Mission +
- 璁╀袱鍙拌溅渚濇鐢宠杩涘叆璇ュ尯鍩 +
- 瑙傚療绗簩鍙拌溅鏄惁琚樆姝紝鏃ュ織鍜岀姸鎬侀噷浼氳褰曟嫤鎴鏁 +
06. 閰嶇疆鏂囦欢
+| 鏂囦欢 | +鐢ㄩ | +
|---|---|
Config/traffic.json |
+ 浜ら氫簰閿佷笌鍖哄煙鎺у埗 | +
Config/ChargeStations.json |
+ 鍏呯數妗╁畾涔 | +
Config/ChargeStrategyConfig.json |
+ 鍏呯數绛栫暐 | +
Config/AlarmConfigs.json |
+ 鍏呯數鎶ヨ閰嶇疆 | +
DoorConfig.json |
+ 闂ㄧ璁惧閰嶇疆 | +
tasklist.json |
+ 鐜嚎浠诲姟鍒楄〃 | +
simple.json |
+ 瀹夸富鍩虹閰嶇疆 | +
+ 闄や簡 JSON 鏂囦欢锛屽緢澶氶昏緫杩樺ぇ閲忎緷璧栫珯鐐广佽溅杈嗗拰杞ㄩ亾鐨 fields 涓 tags銆備緥濡傚尯鍩熸祦鎺т緷璧栦互
+ Region 寮澶寸殑瀛楁锛岃澶氳皟搴﹂昏緫渚濊禆 group銆giveWay銆standby 绛夊瓧娈点
+
07. API 鍏ュ彛
+WebApi.cs 鏄閮ㄧ郴缁熸渶閲嶈鐨勮繘鍏ョ偣锛屼粨搴撲腑宸插彲鐪嬪埌杩欎簺鍏稿瀷璺敱锛
/car/createTask
+ 鍒涘缓浠诲姟
+ /car/getAllCars
+ 鏌ヨ杞﹁締鍒楄〃
+ /car/goSite
+ 鎸囨淳杞﹁締鍘荤珯鐐
+ /map/getMap
+ 鑾峰彇鍦板浘
+ /task/getTask
+ 鏌ヨ浠诲姟
+ /mission_reflection/*
+ 鍙嶅皠璋冪敤 Mission 鏂规硶
+ 08. 寮鍙戝伐浣滄祦
+-
+
- 鍏堝畾浣嶅姛鑳藉睘浜庡摢涓洰褰 +
- 鎵炬渶鎺ヨ繎鐨勭幇鏈夌被浣滀负妯℃澘 +
- 鏄庣‘瀹冧緷璧 JSON 閰嶇疆杩樻槸 `fields` / `tags` +
- 琛ラ綈鏃ュ織銆佺姸鎬佸拰鍋滄閫昏緫 +
- 纭鏂版枃浠跺凡鍔犲叆宸ョ▼ +
- 缂栬瘧鍚庡湪瀹夸富涓獙璇佹槸鍚﹁璇嗗埆 +
09. 甯歌鎺掗敊
+| 鐜拌薄 | +浼樺厛妫鏌 | +
|---|---|
| 鏂板 Mission 鍦ㄥ涓婚噷鐪嬩笉鍒 | +鐗规ф槸鍚︽纭乣Create()` 鏄惁瀛樺湪銆佹枃浠舵槸鍚﹀凡鍔犲叆 `.csproj`銆佹彃浠舵槸鍚﹀鍒跺埌 `build/plugins` | +
| 鍖哄煙娴佹帶涓嶇敓鏁 | +绔欑偣瀛楁鍚嶆槸鍚︿互 `Region` 寮澶淬佸瓧娈靛兼槸鍚︿负鏁存暟銆丮ission 鏄惁宸插惎鍔 | +
| 杞︿笉鍔ㄦ垨浠诲姟涓嶈蛋 | +杞﹁締鍦ㄧ嚎鐘舵併佽矾寰勬槸鍚﹀彲杈俱佹槸鍚﹁閿佺偣 / 浜掗攣 / 闂ㄦ帶鎷︽埅 | +
| API 璋冧笉閫 | +璺敱鏄惁姝g‘銆佸涓荤鍙f槸鍚︽墦寮銆佽姹傛槸鍚︾湡鐨勫懡涓 `WebApi.cs` | +