مكتبة للحصول على بيانات القياس عن بعد من واجهة AssettoCorsa UDP. تعتمد المكتبة على واجهة برمجة تطبيقات C، وتوفر أيضًا واجهة برمجة تطبيقات غلاف C++ ووحدة امتداد Python.
لتجميع وبناء مكتبة C/C++، يلزم make
gcc
وGNU في النظام. بالنسبة لامتداد Python، يجب أن يكون Python3
موجودًا في النظام.
لبناء المكتبة بأكملها، اكتب الأمر:
$ make
سيؤدي هذا في الواقع إلى بناء مكتبة C الثنائية في دليل lib/
كمكتبة ثابتة. سيتم أيضًا دمج وحدة امتداد Python في دليل python-extension/build/
.
يقدم هذا القسم بعض الاستخدامات المختصرة للمكتبة لواجهات برمجة التطبيقات الثلاثة المتوفرة. يمكن العثور على المزيد من أمثلة الاستخدام في الدليل examples/
.
يتضمن المثال رأس المكتبة في include/
. ثم يقوم بتهيئة المكتبة، والاشتراك فيها لتلقي أحداث معلومات السيارة في الوقت الفعلي، ثم يغلق الاتصال بعد قراءة حدث واحد.
#include "acudp.h"
int main ()
{
// Init library
acudp_handle * acudp ;
acudp_init ( & acudp ));
// Subscribe to car info events
acudp_setup_response_t setup_response ;
acudp_send_handshake ( acudp , & setup_response );
acudp_client_subscribe ( acudp , ACUDP_SUBSCRIPTION_UPDATE );
// Read car data
acudp_car_t data ;
acudp_read_update_event ( acudp , & data );
/* ... process car data ... */
// Close communication and exit library
acudp_send_dismiss ( acudp );
acudp_exit ( acudp );
return 0 ;
}
من أجل البساطة، لا يتم إجراء أي تدقيق للأخطاء. يمكن العثور على جميع رموز الأخطاء في ملف رأس المكتبة.
يتضمن المثال رأس المكتبة في include/
. وينفذ نفس الإجراءات كما في المثال C.
# include " acudp.hpp "
int main ()
{
// Initailise ACUDP instance and connect to server
acudp::ACUDP acudp{};
acudp. send_handshake ();
// Subscribe to car info events
acudp. subscribe (acudp::SubscribeMode::update);
// Read car data
auto car = acudp. read_update_event ();
/* ... process car data ... */
// All resources are freed by RAII. No need to manually disconnect.
return 0 ;
}
مرة أخرى، للتبسيط، يتم التحقق من الاستثناءات الصغيرة. يمكن العثور على كافة الاستثناءات في ملف رأس المكتبة.
ينفذ المثال نفس الإجراءات كما في الأمثلة السابقة.
import acudp
if __name__ == "__main__" :
# Initailise ACUDP instance and connect to server
client = acudp . ACUDP ()
client . send_handshake ()
# Subscribe to car info events
client . subscribe_to_updates ()
# Read car data
car_info = client . read_update_event ();
## ... process car_info data ... ##
# Disconnect client
client . send_dismiss ()
مرة أخرى، للتبسيط، يتم التحقق من الاستثناءات الصغيرة.
يمكن العثور على كافة الوثائق في ملف DOCUMENTATION.md.
الوظيفة الرئيسية المفقودة هي إضافة دعم لأي من: