Perpustakaan untuk memperoleh data telemetri dari antarmuka UDP AssettoCorsa. Pustaka ini berbasis pada C API, dan juga menyediakan API pembungkus C++, dan modul ekstensi Python.
Untuk mengkompilasi dan membangun perpustakaan C/C++, diperlukan instalasi gcc
dan GNU make
di sistem. Untuk ekstensi Python, Python3
harus ada di sistem.
Untuk membangun seluruh perpustakaan, tulis perintah:
$ make
Ini sebenarnya akan membangun biner perpustakaan C ke dalam direktori lib/
sebagai perpustakaan statis. Modul ekstensi Python juga akan dimasukkan ke dalam direktori python-extension/build/
.
Bagian ini memberikan beberapa penggunaan singkat perpustakaan untuk tiga API yang disediakan. Contoh penggunaan lebih lanjut dapat ditemukan di direktori examples/
.
Contohnya menyertakan header perpustakaan di include/
. Kemudian menginisialisasi perpustakaan, berlangganan untuk menerima info mobil kejadian real-time, dan kemudian menutup komunikasi setelah membaca satu kejadian.
#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 ;
}
Untuk mempermudah, tidak ada pemeriksaan kesalahan yang dilakukan. Semua kode kesalahan dapat ditemukan di file header perpustakaan.
Contohnya menyertakan header perpustakaan di include/
. Dan melakukan tindakan yang sama seperti pada contoh 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 ;
}
Sekali lagi, untuk kesederhanaan, sedikit pengecualian dicentang. Semua pengecualian dapat ditemukan di file header perpustakaan.
Contoh tersebut melakukan tindakan yang sama seperti pada contoh sebelumnya.
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 ()
Sekali lagi, untuk kesederhanaan, sedikit pengecualian dicentang.
Semua dokumentasi dapat ditemukan di file DOCUMENTATION.md.
Fungsi utama yang hilang adalah menambahkan dukungan untuk: