deshi-basara / librexc Goto Github PK
View Code? Open in Web Editor NEWFree & open car hacking tool for reading vehicle data via Arduino
Free & open car hacking tool for reading vehicle data via Arduino
Der Code läuft insgesamt ziemlich instabil, die genaue Ursache ist mir noch unbekannt. Ich vermute, dass es damit zusammenhängt, dass unerwartete Nachrichten vom ELM zurückkommen.
Hier sollte der Code nach fertigstellung der Grundfunktion robuster gemacht werden, d.h. Error-Handling für falsche / zu kurze / zu lange / ausbleibende Antworten.
Hallo zusammen,
für die Kommunikation von Linuino zu Arduino wollen wir nach Rücksprache mit Herrn Meyer ein eigenes Protokoll verwenden.
Jede Nachricht besteht aus 5 Bytes:
|START(0x11)|CMD|VALUE|CHECK|END(0x22)|
Wir sollten noch festlegen ob wir die Bridge oder eine normale Serial-Verbindung verwenden. Über die Bridge sollte das aber auch ohne Probleme funktionieren, wenn man die Bytes vorher in Chars umwandelt und dann (einzeln) über die Bridge schiebt.
Für den Rückweg war sein Vorschlag, die "rohen" Daten ans Linuino zu schicken, das Parsing der Daten auf Linux-Seite zu machen und auch für den Rückweg so eine eigene Schnittstelle zu verwenden.
Bitte um weitere Anregungen, Kommentare und Vorschläge ob und wie wir das umsetzten.
Viele Grüße, Flo
Ich habe mal zwei Versionen des pidParsers committed. @vpav, bekommen wir aus dem ELM-Shield irgendwie direkt die Bytes oder werden die immer als String geschickt?
In welchem Umfang soll denn unser libreXC mit openXC kompatibel sein? Bis jetzt haben wir immer nur von einer Orientierung an der openXC-Spezifikation für die (JSON)-Ausgabe gesprochen. So wie ich es aber jetzt aus der Firmware-Dokumentation herausgelesen habe, ist openXC für Entwickler besonders interessant, da man die CAN-Signale "querien" oder auf Wert-Veränderungen lauschen kann:
Abfrage der ID 0x102 auf dem Bus-Controller 1:
{
"buses": {
"hs": {
"controller": 1,
"speed": 500000
}
},
"messages": {
"0x102": {
"bus": "hs",
"signals": {
"My_Signal": {
"generic_name": "my_openxc_measurement",
"bit_position": 5,
"bit_size": 7
}
}
}
}
}
Eine Liste aller möglichen Abfragen findet sich in der Firmware-Dokumentation.
Es ist meiner Meinung nach relativ sinnfrei das Projekt "libreXC" zu nennen, wenn 99% der Features vom Original nicht unterstützt werden. Zu leisten wäre die zusätzliche Implementierung der ganzen Abfragen bestimmt nicht, aber so wie ich den Maier verstanden habe, hätte er ja gerne die Kompatibilität zu openXC.
Bleiben wir jetzt einfach bei der (openXC)-JSON-Ausgabe oder was denkt ihr?
Hallo zusammen,
ich habe eben mal ein Grundgerüst für CMake committet (committed? comitted? ach pfeif drauf: hochgeladen, und zwar hier 5c2cab3). Funktioniert das bei euch? Unten noch eine kurze Anleitung.
Viele Grüße.
CMake
- http://www.cmake.org/cmake/resources/software.htmlArduino SDK
- http://www.arduino.cc/en/Main/Softwaregcc-avr
- AVR GNU GCC compilerbinutils-avr
- AVR binary toolsavr-libc
- AVR C libraryavrdude
- Firmware uploaderKurz zusammengefasst müssen folgende Befehle ausgeführt werden:
mkdir build
cd build
cmake -D ARDUINO_DEFAULT_PORT=/dev/tty.usbmodem1411 -D ARDUINO_DEFAULT_BOARD uno -G"Xcode" ..
make
make upload # um die firmware auf das Arduino zu laden [optional]
Beim cmake-Befehl muss der Port entsprechend an das Betriebssystem und das verwendete Board angepasst werden. Der Port eines angeschlossenen Arduinos kann in der Arduino IDE über Tools → Serieller Port ausgelesen werden.
Über cmake -G"[Generator]"
kann der Generator gewählt werden. Mit cmake -G
wird eine Liste der verfügbaren Generatoren angezeigt.
Wenn cmake
einmal ausgeführt wurde, reicht fortan make
(auch bei Änderungen an dem CMakeLists.txt's).
Das build
-Verzeichnis ist über einen Eintrag in der .gitignore
-Datei geschützt. Bitte nur in dieses Verzeichnis hinein kompilieren.
Hier mal meine Feature-Vorschläge, falls sich das Projekt in Richtung eines interaktiven Fahrtenbuchs entwickelt:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.