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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2013, 22:29   #1
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию Коспоненты для работы с com

Здравствуйте.
Имею оборудование : сканер штрих кода Honeywell Voyager® 1250g
(http://www.honeywellaidc.com/ru-RU/P...=HSM&pid=1250g)
Перевел его в режим эмуляции СОМ.
Уже третью компоненту устанавливаю в Delphi XE2.
Все при считывании данных получают такую информацию
Цитата:
㜹㔸㜱㜰㜲㘷ശ
Помогите, не знаю даже куда копать.
tarakan1983 вне форума Ответить с цитированием
Старый 22.12.2013, 22:49   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Документацию читайте...Может оно вам такими кодами "Привет" пишет, но текстом это, понятное дело, не прочитать.
Человек_Борща вне форума Ответить с цитированием
Старый 22.12.2013, 22:53   #3
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

Вроде понял.
На этом форуме нашел компоненту comdrv32, если использовать AnsiString, то вроде появляются цифры.
Хотел конечно использовать очень понравившуюся компоненту TBComPort, но она при переводе в Ansistring пишет вместо штрихкода
Код:
?????????.dll
что за длл ей нужна в документациях ничего нет, написал разработчику.
tarakan1983 вне форума Ответить с цитированием
Старый 22.12.2013, 22:57   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Нескромный вопрос: Сканеры ШКИ обычно работают как клавиатуры. Соответственно зачем нужен какой-то левый компонент, если эти девайсы тупо вводят символы в комп стандартными средствами?
Ты не пробовал просканировать в Эдит или в блокнот просто так без примочин?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.12.2013, 23:05   #5
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

При стандартном подключении сканер идет как HID. Меня это не устаривает.
После 2 ночей проведенных в документациях по теме "сканер + delphi" я понял что удобнее всего его использовать через com.
tarakan1983 вне форума Ответить с цитированием
Старый 22.12.2013, 23:09   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Меня это не устаривает.
Тогда супернескромный вопрос: Чем?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.12.2013, 23:13   #7
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

как мне распознавать когда была нажата кнопка на клавиатуре, а когда ввели со сканера? только различая их по VID PID? а если подключить сканер другой марки? переписывать софт опять? то читаешь com и все, а что там подключено по барабану!
Может конечно я что-то недопонимаю, тогда я не против пообщаться, чтобы выяснить ИСТИНУ для себя.
tarakan1983 вне форума Ответить с цитированием
Старый 22.12.2013, 23:21   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как мне распознавать когда была нажата кнопка на клавиатуре, а когда ввели со сканера?
А какя разница? Разве можно ограничивать пользователя одним только сканером? А если ШКИ неправильный или затертый? Тогда придется править с клаиватуры.
Наоборот сканер в паре с клавой дает наилучшие результаты, и ничего отличать не надо. И то и другое устройство выдает нужные тебе символы, которые при определенных обстоятельствах образуют кодировку ШКИ.
Цитата:
а если подключить сканер другой марки?
90% сканеров стандартизированны, и любой из них должен уметь выдавать ASCII коды, которые могут интерпретироваться штрихами при соответствующем фонте.
Цитата:
читаешь com и все, а что там подключено по барабану!
Замечтательно надейться на то что у сканера будет соответствующий коннектор для СОМ )
Т.е. USB или даже Блютуз сканеры ты сразу отмел, зарубив перспективу на корне. Вот как раз если будешь менять сканер на другой не поддерживающий СОМ тебе и придется переписывать прогу и возможно даже весьма кардинально.
Сканеры потому и сделали а-ля клавиатурами чтоб избежать таких несовместимостей.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.12.2013, 23:31   #9
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
Сообщение

Хорошо, тогда помогите мне найти ошибку.
у меня есть
1. edit1 (поиск по штрихкоду в БД).
2. DbgridEh - отображение данных.
3. TpFibDataset с sql.selectsql равным
Код:
SELECT G.*
FROM
    GOODS G
WHERE G.BARKODE LIKE :BARKODE
4. TDataSourse

на событии Edit1Change(Sender: TObject);
я делаю так

Код:
  
Procedure Edit1Change(Sender: TObject);
var
    BAR : string;
begin
BAR:=Trim(Edit1.Text);
  if BAR<>'' then
    begin
    with QGood do
    begin
      Active:=False;
      ParamByName('BAR').AsString:='%'+BAR+'%';
      Active:=True;
    end;
    end;
end;
Если набираю с клавиатуры, то все нормально, а если со сканера то вываливается в exeption.
tarakan1983 вне форума Ответить с цитированием
Старый 22.12.2013, 23:45   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ха! Я удивлен что с клавиатуры отрабатывает нормально )
Сканер нужно настроить чтоб он выдавал вместе со ШКИ нажатие клавиши Энтер. Делается это (надеюсь ты знаешь) настроечными таблицами для сканера.
После чего твой код нужно перенести в OnKeyPress, и прописать условие нажатия энтера:
Код:
Procedure Edit1OnKeyPress(...);
var
    BAR : string;
begin
if key<>#13 then exit;
BAR:=Trim(Edit1.Text);
  if BAR<>'' then
    begin
    with QGood do
    begin
      Active:=False;
      ParamByName('BAR').AsString:='%'+BAR+'%';
      Active:=True;
    end;
    end;
end;
Это даст гарантию что ШКИ введен полностью.
Сам сканер настраивается на добавление к ШКИ либо клавиши TAB либо ENTER, что и дает подобие ввода с клавиатуры, причем законченного ввода.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор БД для работы на сервере и компонентов доступа к ней для разработки клиентской части zizz БД в Delphi 9 24.01.2013 03:27
для работы написать макрос для Excel и Word.... smanna Microsoft Office Excel 2 30.11.2010 12:43
Для облегчения работы с TFS - приложение для работы над дефектами и задачами Аякс Софт 1 18.03.2009 11:43