Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2017, 07:27   #11
silinka
 
Регистрация: 13.09.2017
Сообщений: 4
По умолчанию

использую Delphi 7 , TComPort 3.10 и много устройств (ADAM, ICP DAS, самоделки). С ComPort общаюсь через ComPort.WriteStr и ComPort.ReadStr (в ComPortRxChar). Проблем не было. Вам асинхронность необходима?
PS. Метод асинхронной передачи используется в системах, в которых обмен данными происходит время от времени и не требуется высокая скорость их передачи.
silinka вне форума Ответить с цитированием
Старый 14.09.2017, 09:05   #12
Gallean
 
Регистрация: 19.05.2017
Сообщений: 7
По умолчанию

Цитата:
Сообщение от silinka Посмотреть сообщение
использую Delphi 7 , TComPort 3.10 и много устройств (ADAM, ICP DAS, самоделки). С ComPort общаюсь через ComPort.WriteStr и ComPort.ReadStr (в ComPortRxChar). Проблем не было. Вам асинхронность необходима?
PS. Метод асинхронной передачи используется в системах, в которых обмен данными происходит время от времени и не требуется высокая скорость их передачи.
Да честно говоря уже просто для себя хочется понять "механику" работы ТКомпорта до конца. Просто поэкспериментировал с разными преобразователями USB-RS485 и у всех этот объем "железного" буфера разный). Соответственно при одних и тех же настройках время между началом отправки и тем, когда порт вернет завершение операции разное.
Понятно что все это не критично и можно заранее высчитать примерное время отправки исходя из размера пакета и скорости + я вряд ли буду использовать скорости меньше 38400... но все же)
Gallean вне форума Ответить с цитированием
Старый 15.09.2017, 05:46   #13
silinka
 
Регистрация: 13.09.2017
Сообщений: 4
По умолчанию

Мы тоже помучились с преобразователями USB-RS485, не для всех устройств получался нормальный обмен. Сейчас в основном используем платы расширения RS232 (ставятся в комп на PCI и PCI Express) и преобразователи RS232-RS485.
silinka вне форума Ответить с цитированием
Старый 15.09.2017, 09:52   #14
Gallean
 
Регистрация: 19.05.2017
Сообщений: 7
По умолчанию

Код:
procedure TForm1.Onexception(Sender: TObject; ComException: TComExceptions;
  ComMessage: String; WinError: Int64; WinMessage: string);
var
  i:integer;
begin
  for i := 0 to 23 do
    begin
      if ComException = TComExceptions(i) then
      begin
        memo1.Lines.Add(inttostr(i));
      end;
    end;

  memo1.Lines.Add('ComMessage - ' + ComMessage);
  memo1.Lines.Add('WinErrir - ' + inttostr(WinError));
  memo1.Lines.Add('WinMessage - ' + WinMessage);
  self.MyPort1.Close;
  self.MyPort1.CleanupInstance;
  self.MyPort1.FreeInstance;
end;
Не совсем понял как корректно обработать исключение, например, когда устройство во время работы просто вынули из компьютера? Вроде порт закрываю, но все равно все зависает в этой процедуре непрерывно.
Gallean вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Принимаем смс. TComPort. qZED Компоненты Delphi 5 03.12.2014 14:08
TComPort component ver. 2.00 irradiator Компоненты Delphi 1 30.04.2014 19:41
Общие вопросы по TComport qZED Компоненты Delphi 0 07.12.2013 09:35
TComPort NewMember Компоненты Delphi 11 31.03.2012 09:32
Асинхронная передача данных eda Microsoft Office Excel 4 17.08.2009 14:16