Сообщения без ответов | Активные темы Текущее время: Чт дек 12, 2019 7:53 pm



Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 3 ] 
honeywell ms7120 orbit штрих код делится на части 
Автор Сообщение
Новичок

Зарегистрирован: Чт авг 08, 2013 11:30 pm
Сообщения: 26
Сообщение honeywell ms7120 orbit штрих код делится на части
Здравствуйте. Имею honeywell ms7120 orbit подключается он по usb, перевел его в режим USB Serial Emulation Mode, появился виртуальный com-порт. Все хорошо, но... при чтении данных с com-порта штрих код делится на части.
Подробнее: Пишу приложение на Delphi, перепробовал уже несколько компонентов для чтения данных с COM. У всех есть событие OnRxcar, т.е. действие при получении данных от порта, так вот только этот сканер(а пробовал я их 3) пробегает эту процедуру дважды, деля штрих код на части. Я понял, что нужно в настройках этого сканера или убрать какую-нибудь задержку или увеличить буфер или х.з. Может кто сталкивался, подскажите какую настройку нужно поправить?


Вс июл 10, 2016 11:00 pm
Профиль
Новичок

Зарегистрирован: Пн мар 13, 2006 4:50 pm
Сообщения: 68
Сообщение Re: honeywell ms7120 orbit штрих код делится на части
Лучше вообще не рассчитывать на то, что данные от устройства придут одним блоком, т.к. есть много факторов, которые на это могут повлиять. Самое правильное решение - накапливать данные у себя в программе до прихода завершающих штрих-код символов (обычно - 13, 10), после чего и обрабатывать.

Можно, конечно, поставить большой межсимвольный таймаут для чтения (см. SetCommTimeouts), увеличить размер входного буфера (см. SetupComm) и передать в функцию чтения буфер достаточного размера (см. ReadFile), но, всё равно, это не даст 100% гарантии.


Пн июл 11, 2016 11:22 pm
Профиль
Новичок

Зарегистрирован: Чт авг 08, 2013 11:30 pm
Сообщения: 26
Сообщение Re: honeywell ms7120 orbit штрих код делится на части
Makc писал(а):
Лучше вообще не рассчитывать на то, что данные от устройства придут одним блоком, т.к. есть много факторов, которые на это могут повлиять. Самое правильное решение - накапливать данные у себя в программе до прихода завершающих штрих-код символов (обычно - 13, 10), после чего и обрабатывать.

Можно, конечно, поставить большой межсимвольный таймаут для чтения (см. SetCommTimeouts), увеличить размер входного буфера (см. SetupComm) и передать в функцию чтения буфер достаточного размера (см. ReadFile), но, всё равно, это не даст 100% гарантии.

Спасибо, так и сделал. Может кому пригодится
Код:
procedure TFmMain.SCANERCOMRxChar(Sender: TObject; Count: Integer);
  var
    Str : String;
  const
    CRLF = #$0A;
begin
  SCANERCOM.ReadStr(Str, Count);
  G_BARCODE := G_BARCODE + Str;
  if Pos(CRLF,G_BARCODE) > 0 then
    begin
      BARCODEEdt.Text := G_BARCODE;
      if Trim(BARCODEEdt.Text) = '' then Exit;
      G_TID := -1;
      //Запустить продажу по ШК
      //SaleU.SALE;
      G_BARCODE := '';
    end;
end;

где G_BARCODE глобальная переменная string


Пн июл 11, 2016 11:31 pm
Профиль
Показать сообщения за:  Поле сортировки  
Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.   [ Сообщений: 3 ] 

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 42


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by STSoftware for PTF.
Русская поддержка phpBB