WinCE, сканер штрихкодов

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

WinCE, сканер штрихкодов

Сообщение tria » 05.03.2010 17:02:09

Проблема в следующем.
Имеется 2-а КПК со встроенным сканером. На одном все ОК, винда 4.21.1088

На другом (BITATEK IT8000) 5.00.1400 при нажатии на кнопку "сканировать" программа вылетает.

При чем вылет происходит даже при ShowMessage('')
Код: Выделить всё
  Application.Initialize;
  ShowMessage('');
  Application.CreateForm(TForm1, Form1);
  Application.Run;

Может быть у кого-то есть какие-то идеи?

Добавлено спустя 37 минут 58 секунд:
Программа вылетает, даже если она неактивна.
А например, активен ворд....
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Re: WinCE, сканер штрихкодов

Сообщение Timid » 05.03.2010 19:02:11

Пиши логи.
Без ShowMessage внутрь Form1.onFormCreate попадаешь?

Пока все видится (телепатический шлем сбоит, наверное :) ) что проблема в инициализации памяти.
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15

Re: WinCE, сканер штрихкодов

Сообщение tria » 05.03.2010 19:13:59

Программа открывается, работает нормально.
Но при нажатии на кнопку сканирования она закрывается. Без сообщений.
Точнее вроде бы мелькает какое-то окошко, но оно пропадает.
При чем запускаю свою программу, после этого открываю Ворд. Стою в этом ворде, нажимаю кнопку "Скан" - мелькает окошко моей программы и она закрывается. При этом кстати, сканер не сканирует. При повторном нажатии, когда уже вылетела програ, он начинает сканировать.
Если запущено две Лазарусовские проги, то вылетают обе.
При чем так происходит и с пустым пробным проектом. В нем попробовал вставить
Код: Выделить всё
  Application.CreateForm(TForm1, Form1);
  Application.OnException:=@Form1.OnExcept;


Код: Выделить всё
Procedure TForm1.OnExcept(Sender : TObject; E : Exception);
BEGIN
  ShowMessage('111');
  Application.ShowException(E);
end;

Ни одно из сообщений не появляется.
Или может быть и появляется, но приложение "вылетает".
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Re: WinCE, сканер штрихкодов

Сообщение Timid » 05.03.2010 23:57:08

Как вы считываете показания сканера? Как обычный ввод с клавиатуры? Или есть специализированная библиотека. Может дело в ее инициализации? В СЕ5.
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15

Re: WinCE, сканер штрихкодов

Сообщение tria » 09.03.2010 12:00:12

Сканер работает как клавиатурный.
Т.е. если в WordPad нажать кнопку Scan, то вводится текст штрихкода.
Никаких доп. драйверов, отлова событий - только ввод с клавиатуры.
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Re: WinCE, сканер штрихкодов

Сообщение Timid » 09.03.2010 12:36:03

Хм, код можно посмотреть?
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15

Re: WinCE, сканер штрихкодов

Сообщение tria » 09.03.2010 12:45:50

Да нету никакого кода!
Сделал пробную программу - форма, на форме поле ввода и кнопкка.
Все.

Любая Лазарус-программа вылетает. Без единой строчки кода.
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Re: WinCE, сканер штрихкодов

Сообщение Timid » 09.03.2010 12:59:30

Нашел вот обсуждение.
http://navispace.ru/forum/index.php?showtopic=87

Проблема может быть в дровах CE5. Сканер не встал как клавиатура.

Хотя, попробуй собрать fpc приложение без лазаря. например на KolCE. Примеры есть на форуме/сайте.
Вылетит или нет?
Если нет, то проблема в подключении Lasarus к клавиатуре, на WinCE. Когда он встраивается в очередь сообщений.
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15

Re: WinCE, сканер штрихкодов

Сообщение tria » 09.03.2010 13:26:16

Ссылку еще не читал, сейчас гляну
Нашел интересную вестчь
пишем:
Код: Выделить всё
Application.OnException:=@Form1.OnExcept;

Если в OnExcept ничего не делать - вылета нет
Если:
Код: Выделить всё
Application.ShowException(E);

или просто
Код: Выделить всё
ShowMessage('111');

то вылетает...
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Re: WinCE, сканер штрихкодов

Сообщение Timid » 09.03.2010 13:48:00

А зачем тебе вообще сдался перехват исключений?
? Кстати, в коде Form1 есть хотя бы один
Код: Выделить всё
try
except
end;


Добавлено спустя 4 минуты 36 секунд:
Кстати, проверь как перед присвоением
Form1.onExcept на nil


и.и.и.и.

А почему ты присваиваешь ссылку на обработчик таким "левым" образом - @Form1.onExcept ?

нужно просто работать ссылка-ссылка, т.е.
Application.onException = Form1.DoExcept - кстати, обработчик то onExcept установлен внутри Form1.Create ?
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15

Re: WinCE, сканер штрихкодов

Сообщение tria » 09.03.2010 14:01:18

Timid писал(а):А зачем тебе вообще сдался перехват исключений?

Это я ищу, где же проблема...

Timid писал(а):? Кстати, в коде Form1 есть хотя бы один
Код: Выделить всё
try
except
end;



В форме нет никакого кода. Более того, если в проекте написать

Код: Выделить всё
  Application.Initialize;
  ShowMessage('xxx');
  Application.CreateForm(TForm1, Form1);
  Application.OnException:=@Form1.OnExcept;
  Application.Run;

То если при появлении сообщения нажать на Скан, то программа тоже вылетит.

Timid писал(а):А почему ты присваиваешь ссылку на обработчик таким "левым" образом - @Form1.onExcept ?
нужно просто работать ссылка-ссылка, т.е.
Application.onException = Form1.DoExcept - кстати, обработчик то onExcept установлен внутри Form1.Create ?


Потому что у меня стоит
{$mode objfpc}, а не Делфи.
OnExcept - это "рукописный" метод, а не событие формы.

Кстити, возникающее исключение - EAccessViolation
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Re: WinCE, сканер штрихкодов

Сообщение Timid » 09.03.2010 15:18:10

Остается последнее, попробовать отловить WM_KeyDown и все остальное, связанное с клавиатурой прямо в модуле приложения.
Хорошо бы пописать клавиатурный ввод прямо в файл побайтово. Может пересылается какой-нибудь 0 (nil).

Вставь после каждой строки что-нибудь вроде writeln(logfile,'добрались до инициализации формы'), открыв сначала файл, естественно.
Мне кажется, что проблема, все же где-то дальше. То есть ShowMessage срабатывает нормально.

Можно еще попробовать другой какой-нибудь диалог. MsgBox, к примеру.
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15


Вернуться в Lazarus

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

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

Рейтинг@Mail.ru