关于串口的问题.(200分)

  • 主题发起人 主题发起人 delphiboy
  • 开始时间 开始时间
D

delphiboy

Unregistered / Unconfirmed
GUEST, unregistred user!
目前我们有个小程序,从数据库中取出需要
打印的编码,然后逐个逐个的送到打印机打印,现在我们遇到问题是这样的.
比如现在我们从数据库里面取出10个需要打印的编码,程序先从数据库里面
取出10个编码,然后执行一个循环,先取第一个,送往打印机打印,打印机打印完
后,返回一个消息给我们的程序,我们的程序收到消息后,取第二个编码,然后再打印.
现在的问题是,我们的程序得不到打印机完成打印的消息,或者是得不到扫描仪扫描
到有纸的消息.这样一来,我们的程序一直在循环.打印出的数据就不对.我们希望贵公司
能够提供一个接口给我们,让我们发送一个编码给打印机后就开始等待,当打印机打印完成后,能
返回一个消息,或都打印機的掃描裝置掃描到紙張信息後,也能返回一個信息,我们程序收到消息后,继续发送下一个编码.

procedure TDmn_main01_form.btnPrintClick(Sender: TObject);
var
lrc:LongWord;
begin
if hComm=0 then begin
MessageBox(0,pchar('請首先連接機器!'),'',MB_OK);
exit;
end;
exit_Flag:=False;
btnPrint.Enabled:=False;
while not qryDmntxt00.Eof do begin
Temp:=qryDmntxt00.fieldbyname('txt_content').AsString;
Temp:=chr($1B)+'S'+'001'+Temp+chr($04) ;
try
WriteFile(hComm,Pointer(Temp)^,Length(Temp), lrc, nil);
----------------------------------------------
这里需要加一段代码,来判断打印机打印完成或者扫描仪扫描到纸张,我们程序收到消息后,
就取下一个编码,如果没有收到就等待打印机打印.
----------------------------------------------
except
on e:Exception do begin
MessageBox(0,pchar('發送數據到打印機出錯:'+e.message),'',MB_OK);
btnPrint.Enabled:=True;
exit;
end;
end;//try...
qryDmntxt00.Edit;
qryDmntxt00.FieldByName('txt_flag').Value:='1';
qrydmntxt00.Post;
showmessage(Temp);
qryDmntxt00.Next;
end;
btnPrint.Enabled:=True;
end;
 
跟串口通讯什么关系?
 
需要从串口里面读出返回信息判断,不知道怎么判断?
 
你已经从串口获取了打印机返回的信息了吗?
 
那就把串口中的数据读上来啊!看是不是表示打印结束的意思,是的话就继续下一张,不是的话再读取啊!
 
怎么写?不熟悉这个方面的知识.
 
那你就使用spcomm控件,检测串口返回来的信息。
你设置好通讯参数,打开串口
comm1.StartComm;
如果就数据回来就会触发下面的事件,
procedure Tinput_Form.Comm1ReceiveData(Sender:TObject; Buffer:Pointer;
BufferLength:Word);
begin
end;
 
打印机是并口不是串口

你上文的WriteFile是输出到打印机吗?
那读就用ReadFile :)
 
没错,是用这个:
ReadFile(hComm,inbuff,cs.cbInQue,nBytesRead,nil);
但我不知道怎么判断,是否打印完成的信息?
 
我也正在学串口知识 学习!!
 
后退
顶部