Пытаюсь заставить sigrok получать данные с осциллоскопа. LXI, сеть, все дела — как у взрослых, короче.
Результаты пока не то чтобы обнадеживают, но и полностью неудачными их назвать нельзя. В принципе, всё почти работает, но на развёртках короче 10ms (включительно). Pulseview рисует красивые графики, и даже почти ничего не падает. На более длинных (100ms и выше) начинаются приколы: данных вообще нет, в логах невнятная ругань на "Discarding short data block" и "Received invalid data block header". Вдумчивая медитация на --loglevel=5 и grep выводят на дивный комментарий:
libsigrok-0.5.1/src/hardware/rigol-ds/protocol.c +654
/* At slow timebases in live capture the DS2072
* sometimes returns "short" data blocks, with
* apparently no way to get the rest of the data.
* Discard these, the complete data block will
* appear eventually.
*/
Судя по всему, "eventually" никакие больше данные не приходят, а приходит мусор. Сколь чуден и многогранен мир embedded-реализаций протоколов!!!
Пойду штоль письмо на деревню дедушке напишу...
UPD. Wireshark показывает что мусора таки нет — приходящий "короткий" пакет является единственным пакетом с данными, а больше от осциллоскопа ничего не приходит. Т.е. как это ни удивительно, но китайские программисты, в данном случае, похоже не виноваты — это sigrok наступает себе же на яйца и считает рандомный буфер пакетом.
UPD2. А в RAW TCP всё тоже самое. Там
вообще нет пакетов, просто в порт льется текстовый поток SCPI команд и ответов на них, а sigrok всё равно ругается на невалидные заголовки. Здравствуй, дебаггер.
UPD3. И lxi tools ведут себя схожим образом, да что ж такое.