Spring boot oraz usb4java, czyli parę słów o architekturze projektu

Niestety awaria ekstrudera, o której pisałem w ostatnim poście, okazała się na tyle poważna, że musiałem odesłać go do serwisu. Ponieważ drukarka jest uziemiona, i nie mogę kontynuować budowania ramienia uznałem, że to dobry moment, żeby w końcu podzielić się paroma szczegółami na temat oprogramowania, które powstaje.

Tak jak wspominałem wcześniej, architektura zbudowana będzie na jednym z najbardziej popularnych frameworków java’owych czyli na Spring Boot.

Aplikacja podzielona jest na dwa moduły:

  1. core – odpowiedzialny za komunikację z modułem Pololu Maestro
  2. web – interface web’owy

usb4java

Siadając to kodowania uświadomiłem sobie, że chyba nigdy wcześniej nie miałem okazji na obsługiwanie portu USB z poziomu Java’y. Po chwili wertowania Internetu natrafiłem na bibliotekę usb4java. Okazało się, że to jest to czego potrzebuję.

Po głębszych poszukiwaniach znalazłem na github’ie projekt, który realizuje sterowanie modułami Pololu Maestro przez port USB. Projekt ten można znaleźć tutaj. Niestety okazało się, że kod ten używa starej wersji biblioteki usb4java:

<dependency>
<groupId>de.ailis.usb4java</groupId>
<artifactId>usb4java</artifactId>
<version>1.0.0</version>
</dependency>

którą ciężko było znaleźć, w jakimkolwiek, publicznym repozytorium maven’a.

Jedyną opcją było zrobić fork’a tegoż projektu i podbić wersję biblioteki do:
<dependency>
<groupId>org.usb4java</groupId>
<artifactId>usb4java</artifactId>
<version>1.2.0</version>
</dependency>

Kod dostępny jest tutaj.

Oczywiście wrzuciłem pull request autorowi 🙂

Architektura

Untitled Diagram

Interfejs webowy oparty jest/będzie o Thymeleaf oraz JQuery. Interfejs wołać będzie usługi Rest’owe (spring’owy @RestController) delegujące, poprzez fasadę ArmController, zapytania do implementacji opartej o maestro-usb4java (projekt z githuba) oraz bibliotekę usb4java.

Tak w paru słowach rysuje się architektura mojej prostej aplikacji. Prosty projekt, prosta architektura i nie ma co się więcej rozpisywać.

Projekt można znaleźć tutaj. Zapraszam.