串口打印机直接写入命令问题(100)

W

wglifs

Unregistered / Unconfirmed
GUEST, unregistred user!
我的代码如下,一般几十张能正常打印,但打印几百张或更多时出现数据混乱的情况:while not QryData.Eof dobegin PrnStr := '^XA'; Barcode0 := Copy(Barcode,1,10); Barcode1 := Copy(Barcode,11,5); Barcode2 := Copy(Barcode,16,5); PrnStr := PrnStr + '^FO10,10^ARN,70,62^FD'+Barcode0+'-'+'^FS'; PrnStr := PrnStr + '^FO10,50^ARN,105,93^FD'+Barcode1+'^FS'; PrnStr := PrnStr + '^FO10,100^ASN,120,105^FD'+Barcode2+'^FS'; PrnStr := PrnStr + '^FO50,150^BY6^BCN,380,N,N,N,A^FD' + Barcode + '^FS'; PrnStr := PrnStr + '^FO50,200^AVN,45,26^FD'+Barcode+'^FS'; PrnStr := PrnStr + '^FO300,300^BY4^B3N,N,250,N,N^FD' + Barcode + '^FS'; PrnStr := PrnStr + '^FO500,350^ATN,45,26^FDPO CUT: '+POCut+'^FS'; PrnStr := PrnStr + '^FO150,500^ATN,45,26^FDSize:'+Size0+'^FS'; PrnStr := PrnStr + '^XZ'; try fHandle := fileopen('COM1', fmOpenWrite); if fHandle > 0 then begin SetupComm(fHandle,4096,4096); GetCommState(fHandle,dcb); dcb.BaudRate := 9600; dcb.ByteSize :=8; dcb.Parity :=NOPARITY; dcb.StopBits :=ONESTOPBIT; filewrite(fHandle, pchar(prnstr)^, length(prnstr)) ; end finally fileclose(fHandle); end; QryData.Next;end;
 
串口条码打印机吧?我用这个办法的 AssignFile(prn, 'com1'); rewrite(prn);s := '^XA' + #13; writeln(prn, s); s := '^LH 0,20^PRB^BY 2,3,90 ^FS' + #13; writeln(prn, s); s := '^FO 50,40 ^BEN,60,Y ^FD' + mdm.Text + '^FS' + #13; writeln(prn, s); s := '^FO 320,40 ^BEN,60,Y ^FD' + mdm.Text + '^FS' + #13; writeln(prn, s); s := '^FO 25,10 ^AC 24,1,1 ^XGBL1 ^FS' + #13; writeln(prn, s); s := '^FO 295,10 ^AC24,1,1 ^XGBL1 ^FS' + #13; writeln(prn, s); s := '^FO 80,155 ^AC24,1,1^XGBL2 ^FS' + #13; writeln(prn, s); s := '^FO 360,155 ^AC24,1,1 ^XGBL2 ^FS' + #13; writeln(prn, s); s := '^FO 30,125 ^AC24,1,1^XGBL3 ^FS' + #13; writeln(prn, s);
 
你是用怎样的串口打印机?是直接串口连接的打印机还是,并口打印机用串并口转换线转接到电脑串口的打印系统?
 
com口直接连打印机--并口打印机用串并口转换线转接到电脑串口的打印系统???这个直接连lpt口不就可以了??
 
加点 延时 吧,可能太快了,打印机的速度跟不上
 
渡鸦,可能这个电脑要直接接两个打印机呢?一个已经占用了并口,另一个就只能用串口转罗。
 
主要原因是打印机速度与PC机速度不匹配所致,加点延时是必要的,当然可以不要直接发送到端口。。。
 
楼上说的不对,打印机和端口都有缓存的,没碰到你说的问题,条码打印机用指令直接控制端口速度很快!
 
顶部