Rigol + Sigrok = ?
Oct. 9th, 2019 11:26 pmПытаюсь заставить sigrok получать данные с осциллоскопа. LXI, сеть, все дела — как у взрослых, короче.
Результаты пока не то чтобы обнадеживают, но и полностью неудачными их назвать нельзя. В принципе, всё почти работает, но на развёртках короче 10ms (включительно). Pulseview рисует красивые графики, и даже почти ничего не падает. На более длинных (100ms и выше) начинаются приколы: данных вообще нет, в логах невнятная ругань на "Discarding short data block" и "Received invalid data block header". Вдумчивая медитация на --loglevel=5 и grep выводят на дивный комментарий:
Судя по всему, "eventually" никакие больше данные не приходят, а приходит мусор. Сколь чуден и многогранен мир embedded-реализаций протоколов!!!
Пойду штоль письмо на деревню дедушке напишу...
UPD. Wireshark показывает что мусора таки нет — приходящий "короткий" пакет является единственным пакетом с данными, а больше от осциллоскопа ничего не приходит. Т.е. как это ни удивительно, но китайские программисты, в данном случае, похоже не виноваты — это sigrok наступает себе же на яйца и считает рандомный буфер пакетом.
UPD2. А в RAW TCP всё тоже самое. Там вообще нет пакетов, просто в порт льется текстовый поток SCPI команд и ответов на них, а sigrok всё равно ругается на невалидные заголовки. Здравствуй, дебаггер.
UPD3. И lxi tools ведут себя схожим образом, да что ж такое.
Результаты пока не то чтобы обнадеживают, но и полностью неудачными их назвать нельзя. В принципе, всё почти работает, но на развёртках короче 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 ведут себя схожим образом, да что ж такое.