Bibliothek zum Abrufen von Telemetriedaten von der AssettoCorsa UDP-Schnittstelle. Die Bibliothek basiert auf einer C-API und bietet außerdem eine C++-Wrapper-API und ein Python-Erweiterungsmodul.
Um die C/C++-Bibliothek zu kompilieren und zu erstellen, müssen gcc
und GNU make
im System installiert sein. Für die Python-Erweiterung muss Python3
im System vorhanden sein.
Um die gesamte Bibliothek zu erstellen, schreiben Sie den Befehl:
$ make
Dadurch wird die C-Bibliotheksbinärdatei tatsächlich als statische Bibliothek im lib/
-Verzeichnis erstellt. Das Python-Erweiterungsmodul wird auch in das Verzeichnis python-extension/build/
integriert.
In diesem Abschnitt wird die Verwendung der Bibliothek für die drei bereitgestellten APIs kurz erläutert. Weitere Anwendungsbeispiele finden Sie im Verzeichnis examples/
.
Das Beispiel schließt den Bibliotheksheader in include/
ein. Dann initialisiert es die Bibliothek, abonniert sie für den Empfang von Fahrzeuginfo-Echtzeitereignissen und schließt dann die Kommunikation, nachdem ein Ereignis gelesen wurde.
#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 ;
}
Der Einfachheit halber wird keine Fehlerprüfung durchgeführt. Alle Fehlercodes finden Sie in der Header-Datei der Bibliothek.
Das Beispiel schließt den Bibliotheksheader in include/
ein. Und führt die gleichen Aktionen wie im C-Beispiel aus.
# 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 ;
}
Auch hier werden der Einfachheit halber kleine Ausnahmen überprüft. Alle Ausnahmen finden Sie in der Header-Datei der Bibliothek.
Das Beispiel führt die gleichen Aktionen wie in den vorherigen Beispielen aus.
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 ()
Auch hier werden der Einfachheit halber kleine Ausnahmen überprüft.
Die gesamte Dokumentation finden Sie in der Datei DOCUMENTATION.md.
Die wichtigste fehlende Funktionalität besteht darin, Unterstützung für Folgendes hinzuzufügen: