Меню

+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Страницы 1
|
||||
|
LTR24-1 работа с ltr24apiЗдравствуйте! Потерял всю надежду разобраться самому. Имеется программа на языке Kotlin(JVM) с использованием JNA. Не получается никак подобрать размеры полей в структуре (с модулем LTR212 всё получилось). TLTR24(auto-allocated@0x21caf555360 (2648 bytes)) { |
|||
|
||||
|
Re: LTR24-1 работа с ltr24apiЗдравствуйте.
Не совсем так, правильнее каждое поле от начала структуры выравнено на минимум между своим размером и 4 (т.е. байтовое располагается подряд, WORD всегда выравнен на 2 байта от начала структуры, DWORD/INT/float/double выравнены на 4 байта) Также нужно учесть, что размер BOOL 4 байта, а размер BOOLEAN - 1 байт. Размер указателя зависит от используемой разрядности компилятора/виртуальной машины (4 или 8 байт). Если в языке есть способ узнать размер полученной структуры (по аналогии с sizeof в C), то правильность вы всегда можете проверить, сравнив размер, полученный в вашем языке аналогом sizeof, с размером, который будет в поле Size после вызова LTR24_Init |
|||
|
||||
|
Re: LTR24-1 работа с ltr24apiСо структурой всё получилось, теперь другая проблема. При чтении данных получается такой набор из 4х точек АЦП и 4х преобразованных данных [1851459842, 1851132162, 1851263234, 1851328770] fun start() { fun LTR24_Recv(handler: TLTR24, src: IntArray, tmark: IntArray?, size: Int, timeout: Int): Long fun LTR24_ProcessData( |
|||
|
||||
|
Re: LTR24-1 работа с ltr24apiЧтобы ответить про данные нужен код настройки параметров работы модуля (т.е. все что идет с момента open и до start), а также знать, на какие контакты какой сигнал подаете.
Не совсем понял, src это исходный массив данных, он в любом случае массив. Если имелся ввиду параметр size в LTR24_ProcessData, то так как функция меняет его значение (на входе размер данных src, на выход после вызова - размер действительных данных в data), то он передается в C по указателю, а не значению, что технически в C выполняется аналогично передачи массива размером 1, но с разным смыслом. В JNA вроде для этого есть IntByReference.
Забыл ответить из первого поста, эти поля есть, тип структуры всегда одинаковый, просто их не нужно менять, т.к. задающиеся ими режимы есть только в LTR24-2 |
Страницы 1