ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
3 декабря
1557744
danuna (Сегодня, 13:35, просмотров: 27)
Поплакаться зашел. Есть такой измеритель иммитанса Е7-21, братушки в Минске делают. Госреестр, все дела, 170+ круб цена. Вдруг Бацка читает пески и накажет непричастных. 

Попросили меня прицепить к софтине на винде эту приблуду.

Я почитал мануал - все вроде внятно Прибор непрерывно находится в режиме передачи. Формат передаваемого кадра: $AA, $Re_Lo, $Re_Mid, $Re_Hi, $Re_Exp, $Im_Lo, $Im_Mid, $Im_Hi, $Im_Exp, $Limit, $Status; где $AA – байт синхронизации. Ну хоть на этом спасибо, хоть выяснил быстро что скорость 9600, зачем об этом писать в мануале? Ну кстати, контрольная сумма - для слабаков. 0хАА решает. Ладно, думал, ага, два числа с плавучкой передеют - по 4 байта, наэрн флоаты, ща быстренько юнион чар-флоат и я в хопре. Ага. Пол дня промудохался. Знаю, тупанул, виноват. Залез на сайт их, к счастью там программулина лежит для отображения виртуальной морды прибора на компе. И кто бы мог подумать - в папке с екзешником лежит паскалевский проект.


function TForm1.picToFloat(Byte2, Byte1, Byte0, Exp: integer): real; var outVal: real; countI: integer; sign: boolean; begin sign:= false; outVal:= Byte1*256 + Byte2; if (Byte0 and 128)>0 then begin sign:= true; end; Byte0:= Byte0 or 128; outVal:= outVal + Byte0*256*256; outVal:= outVal/8388608/2; if Exp >= 127 then begin Exp:= Exp - 127; for countI:= 0 to Exp do outVal:= outVal*2; end else begin Exp:= 127- Exp-1; for countI:= 1 to Exp do outVal:= outVal/2; end ; if sign then outVal:= outVal *(-1); picToFloat:= outVal; end;


Еще прикололо if limit<5 res:= 1/Am; prov:= Am; else res:= Am; prov:= 1/Am; где limit тупо девятый байт посылки.

Походу я мало драников ем, не смог узреть красоты.