ไลบรารีง่ายๆ สำหรับเชื่อมต่อและทำงานร่วมกับ SimConnect ซึ่งเป็นไลบรารีที่ช่วยให้สื่อสารกับ Flight Simulators (เช่น FS2020)
จุดมุ่งหมายของไลบรารีนี้คือเพื่อให้อินเทอร์เฟซที่เรียบง่ายเพื่อทำงานกับ FS2020 บน .NET/C# โดยไม่ต้องมีความรู้เชิงลึกเกี่ยวกับ SimConnect อีกด้านหนึ่ง รองรับเฉพาะการทำงานขั้นพื้นฐานเท่านั้น ไลบรารีนี้ไม่ครอบคลุมความเป็นไปได้ทั้งหมดของไลบรารี SimConnect ดั้งเดิม
ไลบรารีจำเป็นต้องติดตั้งรันไทม์ Windows .NET Core 6.0 (รวมอยู่ในการติดตั้ง Windows 10+ ตามค่าเริ่มต้น)
เพียงแตกไฟล์รีลีสที่ต้องการไปยังโฟลเดอร์ที่รันโปรเจ็กต์เป้าหมาย และลิงก์ ESimConnect.dll + ไลบรารีอื่นๆ ที่ให้ไว้กับโปรเจ็กต์ของคุณ หมายเหตุ: ในการทำงาน ไฟล์ SimConnect.dll
จะต้องรวมอยู่ในไดเร็กทอรีเอาต์พุตโปรเจ็กต์ของคุณด้วย ไฟล์นี้จะไม่ถูกอ้างอิงในโครงการ .NET ของคุณ แต่จะต้องมีอยู่จึงจะโหลดสำหรับการใช้งานไลบรารี
แอปพลิเคชันตัวอย่างง่ายๆ ESimConnectDemo มีอยู่ในโปรเจ็กต์
เมื่อรัน FS2020 ให้เริ่ม ESimConnectDemo.exe
ในหน้าต่าง เลือกปุ่ม Connect/Disconnect
ในแท็บ SimVars
ให้ป้อนชื่อ SimVar แล้วกด Add
คุณควรเห็นค่าของ SimVar ในหน้าต่างทันที
หมายเหตุ: สำหรับชื่อ SimVar เฉพาะ โปรดดูที่เอกสารประกอบ FS202 SimVar ในตอนแรก คุณสามารถลองเข้าสู่ PLANE ALTITUDE
SimVar ได้
ESimConnect.dll
และแอสเซมบลีทั้งหมดจากโฟลเดอร์ DLLs
ยกเว้น SimConnect.dll
อย่างไรก็ตาม ต้องมีไฟล์ SimConnect.dll
อยู่ในโฟลเดอร์เอาท์พุต ไม่เช่นนั้นจะเกิดข้อผิดพลาดในการเริ่มต้นระบบ สำหรับการอ่านค่า SimVar อย่างง่าย (เช่น PLANE ALTITUDE
) คุณต้อง:
// create ESimConnect instance
ESimConnect.ESimConnect eSimCon = new();
// register as a listener for incoming data messages
eSimCon.DataReceived += ESimCon_DataReceived; // see below for the definition
// open a connection to FS2020
eSimCon.Open();
// register a SimVar - tell FS2020 that you are interested in this SimVar
var typeId = eSimCon.Values.Register<double>("PLANE ALTITUDE");
// and request the value once
RequestId requestId = eSimCon.Values.Request(typeId);
// or request value repeatedly every second, only when value has changed
RequestId repeatedRequestId = eSimCon.Values.RequestRepeatedly(typeId, SimConnectPeriod.SECOND, true);
// now you are ready
// once some data has arrived, the following handler is invoked:
private static void ESimCon_DataReceived(ESimConnect.ESimConnect sender, ESimConnect.ESimConnect.ESimConnectDataReceivedEventArgs e)
{
Console.WriteLine($"ESimCon - DataReceived - requestId={e.RequestId}, simVar={relatedSimVar}, type={e.Type}, data={e.Data}");
}
สำหรับข้อมูลโดยละเอียดเพิ่มเติม โปรดดูโปรเจ็กต์ ESimConnectDemo หรือ ESimConnectTest เพื่อเป็นแรงบันดาลใจ
หากสิ่งใดใช้งานไม่ได้ โปรดรายงานว่าเป็นปัญหา โปรดระบุรายละเอียดให้มากที่สุด
(ยังไม่มีอะไรเลย)
ดูไฟล์ใบอนุญาต
ขอขอบคุณ repo ดั้งเดิมของ RandFailuresFS2020 ที่เป็นแรงบันดาลใจเบื้องต้นและเป็นแหล่งการศึกษา
ขอขอบคุณ George Barlow สำหรับความช่วยเหลือในการแก้ไขปัญหาที่ไม่ได้ลงทะเบียน
มาเร็ก วาจเกิล https://github.com/Engin1980/ESimConnect