Форум: "Система";
Текущий архив: 2004.03.05;
Скачать: [xml.tar.bz2];
ВнизСканер Штрих-кодов Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c