во-первых надо быть уверенным что в пердле для вызова внешних функций будет использоватца то же соглашение о передаче параметров, как задумано в DLL - то есть stdcall. и что пердл не выравнивает поля в структурах скажем до 32 бит. ну допустим с этим все в порядке.
теперь что касается собственно кода. братья китайцы сильно слукавили в доке и в примере

для 2х канального режима работы доступны два размера буфера - 10 кб и 32 кб, для одноканального еще - 64 кб.
последовательность инициализации у вас правильная.
ньюансы такие:
настройка для 10 kb: BufferSize=10, DataLengh=1
настройка для 32 kb: BufferSize=32, DataLengh=2
вы правильно настраиваете буфер в 10 кб. не забывайте, что реально он 10x1024 слов.
данные возвращаются 2-байтовыми словами, но реально каждый отсчет занимает только 8 младших бит.
далее самое большое ноу-хау состоит в правильном выставлении порогов

это структура levers. я ее инициализирую так:
$Levers->{Ch1Position}=128;
$Levers->{Ch2Position}=128;
$Levers->{Ch1TriggerPosition}=255 - Level;
$Levers->{Ch2TriggerPosition}=255 - Level;
$Levers->{EXTTriggerPosition}=255 - Level;
тогда выставляемый порог Level будет соответствовать реальным цифрам в данных, если учесть что 0..127 это минус, 128 - ноль, 129..255 это плюс.
после инициализации вы забыли дернуть функцию sdCaptureStart которая и запускает процесс регистрации. может конечно и без нее будет работать, не помню уже. у меня вызывается.
ну и собственно сам цикл опроса у вас:
if (sdGetData($devicenum, 6,6, $data1, $data2, $CtrlData,$State, $Levers,$level,0)){
print "GetData ok\n";
во-первых последний параметр этой функции надо ставить 1.
0 в нем служит признаком конца регистрации. то есть после окончания работы надо дернуть эту функу с параметром 0 - что будет выключением регистрации в приборе. впрочем судя по всему этого делать не обязательно, и так работает

во-вторых и в главных, sdGetData возвращает rc = 0 когда _есть_ данные, и rc = 1 когда данных нет

то есть в точности наоборот, а не как во всех других функциях

во время работы прибор мигает красным огоньком когда ничего не делает и зеленым когда идет цикл регистрации.
из приколов - если запускать свою прогу которая юзает DLL из под любого отладчика, даже если не лазить им во внутрь DLL - при выполнении в ней прога падает. толи у них случайно так получилось, толи сознательная защита от ковыряния, как в случае затертых надписей на микросхемах

добыто непосильным трудом и днями экспериментов. удачи!