مكتبة بسيطة للاتصال والعمل مع SimConnect، وهي مكتبة تسمح بالتواصل مع Flight Simulators (على سبيل المثال، FS2020).
الهدف من هذه المكتبة هو توفير واجهة بسيطة للعمل مع FS2020 عبر .NET/C# دون الحاجة إلى معرفة عميقة بـ SimConnect. على الجانب الآخر، يتم دعم العمليات الأساسية فقط. لا تغطي هذه المكتبة جميع إمكانيات مكتبة SimConnect الأصلية.
تحتاج المكتبة إلى تثبيت Windows .NET Core 6.0 runtime (يتم تضمينه في تثبيت 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 للحصول على الإلهام.
إذا لم ينجح أي شيء، فلا تتردد في الإبلاغ عنه كمشكلة. يرجى تقديم أكبر عدد ممكن من التفاصيل.
(لا شيء بعد)
انظر ملف الترخيص.
بفضل RandFailuresFS2020 الريبو الأصلي لكونه الدافع الأولي ومصدر الدراسة.
شكرًا لجورج بارلو لمساعدته في حل مشكلات إلغاء التسجيل.
ماريك فاجل https://github.com/Engin1980/ESimConnect