Я думаю, вы просто ошибаетесь. Это:
struct Cam
{
packed_float3 origin;
packed_float3 lowerLeftCorner;
packed_float3 horizontal;
packed_float3 vertical;
packed_float3 u, v, w;
float lensRadius;
};
эквивалентно:
struct Cam
{
packed_float3 origin;
packed_float3 lowerLeftCorner;
packed_float3 horizontal;
packed_float3 vertical;
packed_float3 u;
packed_float3 v;
packed_float3 w;
float lensRadius;
};
Это 7 packed_float3
с, в течение 21 float
с, плюс одинокий float
в общей сложности 22 [ 115] с. Когда float
равно 4 байта, это 88 байтов. Там нет противоречия.
Единственный USB API, который я мог найти для Windows, здесь. Кажется, как будто это имеет ограниченную функциональность, но это могло бы удовлетворить Вашим потребностям. Более полный UNIX API также доступен.
ETA: Найденный ссылкой на официальный Java реализация USB, но похож на версию для Windows, находится все еще в альфе.
Для краткости вы можете использовать JNI, собственный интерфейс Java. Я никогда не использовал это сам, хотя.
API родного кода, на который я ссылался, был Windows DDK, то есть комплект разработки драйверов. Современная версия, кажется, называется Windows Driver Kit, так что Google для Windows WDK :) Там должно быть несколько примеров C о том, как взаимодействовать с USB-устройствами, и было бы довольно просто написать JNI-оболочку из них.
Я нашел эту страницу, объясняющую, как установить связь между микроконтроллером и Java-приложением: http://javausbapi.blogspot.com/