我现在通过spcomm读数据,现有一个时间控件,如果spcomm,5秒内成功收到读入数据,则保存进数据库,否则就提示showmessage,不成功,另外请问一下buffer是怎么初始化它的值的,
因为如果扫描速度一快,数据就连续的放在buffer上,
以下这段代码可以实现数据接收,但我以上的问题还未解决?请教
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
PStr: PChar;
S: String;
// i: integer;
begin
PStr := Buffer;
S := String(PStr);
// for i:=0 to bufferlength-1 do
// Pstr[i]:=Pstr[i];
Memo2.Lines.Add(s);
adoquery2.Close ;
adoquery2.sql.clear ;
adoquery2.SQl.text:='select * from table2';
adoquery2.open;
adoquery2.Append;
adoquery2.FieldByName('no').AsString:=trim(memo2.text);
adoquery2.Post;
我串口主要接的是扫描头,主要用来扫描条码,
在扫描头,另一接线处有传感器,当物品触发传感器后,扫描头发射光线,如果5秒内扫描成功,则数据保存,否则提示扫描不正确!
因为如果扫描速度一快,数据就连续的放在buffer上,
以下这段代码可以实现数据接收,但我以上的问题还未解决?请教
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
PStr: PChar;
S: String;
// i: integer;
begin
PStr := Buffer;
S := String(PStr);
// for i:=0 to bufferlength-1 do
// Pstr[i]:=Pstr[i];
Memo2.Lines.Add(s);
adoquery2.Close ;
adoquery2.sql.clear ;
adoquery2.SQl.text:='select * from table2';
adoquery2.open;
adoquery2.Append;
adoquery2.FieldByName('no').AsString:=trim(memo2.text);
adoquery2.Post;
我串口主要接的是扫描头,主要用来扫描条码,
在扫描头,另一接线处有传感器,当物品触发传感器后,扫描头发射光线,如果5秒内扫描成功,则数据保存,否则提示扫描不正确!
因为看你这些处理,根本用不了多长时间。
你的后台只能反映硬件的内容。如果硬件5秒内扫描成功,肯定会给你发送数据,你就保存。
同理,如果没成功,也该给你发个没成功的数据格式,你在后台反应出来。