Конференция "WinAPI" » Чтение RS485 [D7, WinXP]
 
  • revo (09.05.10 07:39) [0]
    Опрашиваю овеновские приборы по 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;
  • CrytoGen (09.05.10 12:29) [1]
    обычно такие проблемы решаются потоками
  • GanibalLector © (10.05.10 00:02) [2]
    Работа с  RS485 ничем не отличается от RS232. Вообще.
    Точно также открываешь порт, точно также пишешь/читаешь данные и точно также работаешь в потоке.
  • Германн © (10.05.10 02:38) [3]

    > GanibalLector ©   (10.05.10 00:02) [2]
    >
    > Работа с  RS485 ничем не отличается от RS232. Вообще.

    Ну это перебор. Я имею в виду слово "вообще".
  • revo (10.05.10 08:55) [4]
    Спасибо.
  • Loginov Dmitry © (10.05.10 10:25) [5]

    > Работа с  RS485 ничем не отличается от RS232. Вообще.
    > Точно также открываешь порт, точно также пишешь/читаешь
    > данные и точно также работаешь в потоке.


    Есть пару отличий:
    - после передачи нужно дождаться эхо
    - нет одновременного приема и передачи.
  • tesseract © (12.05.10 17:25) [6]

    > Подскажите пожалуйста как избавиться от висюка?


    Посмотреть - поддерживает ли их DLL асинхронное чтение. Если нет проще накатать самому. Если всё-таки очень хочется - выводить в отдельный поток.


    > Я имею в виду слово "вообще".


    Отличия минимальны. Программно таки-да "вообще".


    > Есть пару отличий:
    > - после передачи нужно дождаться эхо
    > - нет одновременного приема и передачи.


    RS-485 логический уровень сети не оговаривает. Вообще. Адрес девайса - это программный уровень.
    А так всё едино, например :
    Первое - почти все RS232 отправляют подтверждение и многие хотят CRC.
    Второе - большинство устройств RS работают как раз в асинхронном режиме, а виндовый буфер приема/передачи окончательно картину запутывает.
 
Конференция "WinAPI" » Чтение RS485 [D7, WinXP]
Есть новые Нет новых   [134431   +14][b:0][p:0]