Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.05;
Скачать: CL | DM;

Вниз

Сканер Штрих-кодов   Найти похожие ветки 

 
DelphiNew ©   (2003-12-17 12:12) [0]

Возникла такая проблема: Когда я считываю сканером код мне иногда приходят 2 строки, причём 2-ая строка мешает в работе. Сделал проверку по времени, т.е если за опред. промежуток времени приходит вторая строка то она не обработывается. Но после этого у меня считывается строка толька один раз, когда пытаюсь считать вторй раз ничего не происходит. Вот код:

procedure TFrmMain.OnGetDataFromScaner;
var
ScanSt: string;
T1,T2: TTime;
r: real;
begin
ScanerThread.Suspend;
T1:=Time;
if ReadTime=0 then
ReadTime:=Time-0.0007;
r:=T1-ReadTime;
if r<0.000001 then
begin
ScanerThread.Resume;
exit;
end;
ReadTime:=Time;
ScanSt:=copy(ScanerThread.StrResult,1,2);
showmessage (ScanerThread.StrResult);
FrmTara.IBQTar.Close;
FrmTara.IBQTar.SQL.Clear;
FrmTara.IBQTar.SQL.Add("select namecode, A1,EANCODE, A3, A4, JC1, PRICE from view_1500001");
FrmTara.IBQTar.SQL.Add("where eancode="""+ScanSt+"""");
FrmTara.IBQTar.Open;
if FrmTara.IBQTar.RecordCount <> 0 then
begin
FrmTara.IBQInsTar.ParamByName("NAMETARA").AsString:=FrmTara.IBQTarA1.AsString;
FrmTara.IBQInsTar.ParamByName("CODETARA").AsString:=ScanerThread.StrResult;
FrmTara.IBQInsTar.ParamByName("VES").AsFloat:=FrmTara.IBQTarA3.AsFloat;
FrmTara.IBQInsTar.ParamByName("NCTARA").AsInteger:=FrmTara.IBQTarNAMECODE.AsInteger;
FrmTara.IBQInsTar.ParamByName("LINKHEAD").AsInteger:=nc;
FrmTara.IBQInsTar.ParamByName("QUAN").AsInteger:=1;
FrmTara.IBQInsTar.ParamByName("VESTOTAL").AsFloat:=FrmTara.IBQTarA3.asFloat * StrToFloat(FrmTara.EdtVes.Text);
FrmTara.IBQInsTar.ParamByName("PRICE").AsFloat:=FrmTara.IBQTarPRICE.AsFloat;
FrmTara.IBQInsTar.ParamByName("SUMMATOTAL").AsFloat:=FrmTara.IBQTarPRICE.AsFloat * StrToFloat(FrmTara.EdtVes.Text);
FrmTara.IBQInsTar.ExecSQL;
FrmMain.IBTransaction1.Commit;
FrmMain.IBTransaction1.StartTransaction;
FrmMain.IBQSpec.Open;
end;
ScanerThread.Resume;
end;
Буду благодарен за все идеи


 
DelphiNew ©   (2003-12-17 12:16) [1]

Дополнение: Сканер подключен к com порту
и на всякий случай:

procedure TThread.Suspend;
var
OldSuspend: Boolean;
begin
OldSuspend := FSuspended;
try
FSuspended := True;
{$IFDEF MSWINDOWS}
CheckThreadError(Integer(SuspendThread(FHandle)) >= 0);
{$ENDIF}
{$IFDEF LINUX}
CheckThreadError(pthread_kill(FThreadID, SIGSTOP));
{$ENDIF}
except
FSuspended := OldSuspend;
raise;
end;
end;


 
Talla2k ©   (2003-12-18 00:45) [2]

Во первых,запрограммируй сканер ПРАВИЛЬНО!!!(с ним книжечка идет при покупке).
Во-вторых,скан-код ВСЕГДА ограничен chr($0d)!!!Соответственно,все что до chr($0d) это скан-код,а остальное ...
И еще сколько я не писал прог для работы со сканером такого никогда не было!!!Наверно с портом не правильно работаешь!ВОТ!!


 
tesseract   (2003-12-18 15:11) [3]

я вообще не вижу работы с портом. И хотелось бы взглянуть на то, что же пришло с порта.



Страницы: 1 вся ветка

Текущий архив: 2004.03.05;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.021 c
6-12470
ALEIIIKA
2003-12-29 10:17
2004.03.05
Как на сервер отправить запрос?


8-12458
LEON88
2003-10-31 00:43
2004.03.05
Программа поверх игры


14-12516
Knight
2004-02-11 18:56
2004.03.05
Alcatel 331


1-12446
dub daze
2004-02-22 23:50
2004.03.05
работа с файлами ресурсов


14-12536
volkodav
2004-02-11 23:23
2004.03.05
1C