-
Опрашиваю овеновские приборы по 485 (использую их DLL) - во время опроса подвешиается форма. Подскажите пожалуйста как избавиться от висюка? код: procedure ReadTRM138(var array_t: array of single); var hh,res,tm: integer; val:single; begin for hh:=0 to 7 do begin res:=ReadIEEE32(16+hh,0,'rEAd',val,tm,-1); if(res>=0) then begin array_t[hh]:=val; end else array_t[hh]:=-777; end;
end;
-
обычно такие проблемы решаются потоками
-
Работа с RS485 ничем не отличается от RS232. Вообще. Точно также открываешь порт, точно также пишешь/читаешь данные и точно также работаешь в потоке.
-
> GanibalLector © (10.05.10 00:02) [2] > > Работа с RS485 ничем не отличается от RS232. Вообще.
Ну это перебор. Я имею в виду слово "вообще".
-
Спасибо.
-
> Работа с RS485 ничем не отличается от RS232. Вообще. > Точно также открываешь порт, точно также пишешь/читаешь > данные и точно также работаешь в потоке.
Есть пару отличий: - после передачи нужно дождаться эхо - нет одновременного приема и передачи.
-
> Подскажите пожалуйста как избавиться от висюка?
Посмотреть - поддерживает ли их DLL асинхронное чтение. Если нет проще накатать самому. Если всё-таки очень хочется - выводить в отдельный поток.
> Я имею в виду слово "вообще".
Отличия минимальны. Программно таки-да "вообще".
> Есть пару отличий: > - после передачи нужно дождаться эхо > - нет одновременного приема и передачи.
RS-485 логический уровень сети не оговаривает. Вообще. Адрес девайса - это программный уровень. А так всё едино, например : Первое - почти все RS232 отправляют подтверждение и многие хотят CRC. Второе - большинство устройств RS работают как раз в асинхронном режиме, а виндовый буфер приема/передачи окончательно картину запутывает.
|