если делаете поток то и организовывать его надо как поток, а не в теле программы писать как процедуру, о чём правда не могу сказать не видя кода.
а если припёрло написать считывание не через таймер(по простому но медленнее потока ибо чаще чем раз в 50 мс сложно сделать срабатывание таймера по факту), а через цикл(особенно бесконечный в теле основной программы), то добавьте строчку в код дельфи
Код:
Application.ProcessMessages;
или же если вам надо последовательно выводить значения в одно и тоже место то делайте таймер с интервалом от 200 мс (сами поглядите как часто вам надо, и учитывайте время ответа при этом, и всё равно в интервале меньше 200 вы не заметите какое число).
то есть будет код: (добавляйте сразу желательно проверки (chitaen_nazvanie), а то можно пропустить момент когда прибор не отвечает или присылает коды ошибок)
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
chitaen_nazvanie:=ReadFloat24(adr,0,'PV',val,-1);
Label4.Caption:=FloatToStr(val);
end;