超市小票打印是怎么实现

csdn小虫 2008-02-20 11:47:05
写一个小的销售软件
现在用到pos58打印机
想问一下
那种超市的那种小票是怎么打印出来的?
最好有源码
谢谢赐教
不胜感激
有人说是用报表 有人说什么硬字库
都怎么实现?
...全文
1305 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengxuan 2008-04-30
  • 打赏
  • 举报
回复
就是做报表
meiZiNick 2008-04-30
  • 打赏
  • 举报
回复
lz要干嘛?
wl85721 2008-04-22
  • 打赏
  • 举报
回复
请问如果是B/S结构的,用ASP写的代码,怎么打印到小票上呢?
csdn小虫 2008-02-22
  • 打赏
  • 举报
回复
打印机说明书上的手册上有写 
但不知道实际上怎么用
比如说有说 设置字符的倍宽,倍高打印
FS !
----------------
格式:
 ascii码:FS ! n
十进制: 28 33 n
 

实际上怎么可以控制字符的放大????
csdn小虫 2008-02-22
  • 打赏
  • 举报
回复
楼上的 是不是 针对的是 串口的??

要是并口的,该怎么整??

还有就是打印出来的字符的字体 比如说 倍宽 倍高该怎么控制????
newfang 2008-02-21
  • 打赏
  • 举报
回复
function TForm1.OpenPort(sPortName: string): THandle;
var cc: TCOMMCONFIG;
begin
Result:=CreateFile(PChar(sPortName),GENERIC_READ
or GENERIC_WRITE,0,nil,OPEN_EXISTING,0,0);
if Result <= 0 then Exit;
if Copy(sPortName,1,3) = 'Com' then
begin
GetCommState(Result,cc.dcb);
cc.dcb.BaudRate := CBR_9600;
cc.dcb.ByteSize := 8;
cc.dcb.Parity := 0;
cc.dcb.StopBits := 0;
if not SetCommState(Result,cc.dcb) then
begin
CloseHandle(Result);
Result:= 0; Exit;
end;
end;
end;

procedure TForm1.PrintChar(s: string);
var lrc: LongWord;
begin
hndComm := OpenPort(Trim(ComboBox1.Text));
if hndComm > 0 then
WriteFile(hndComm,PChar(s)^,Length(s),lrc,nil);
CloseHandle(hndComm);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
PrintChar(#27 + #64); //初始化打印机
end;

procedure TForm1.XPButton1Click(Sender: TObject);
var i: Integer;
begin
if Memo1.Text = '' then Exit;

for i := 0 to Memo1.Lines.Count - 1 do
begin
PrintChar(Memo1.Lines[i] + #13 + #10);
Sleep(20);
end;
end;

这个例子是研科打印机的,应该和POS58的一样.
直接写口对打印机控制的更灵活方便一些
newfang 2008-02-21
  • 打赏
  • 举报
回复
给你个例子(打印Memo1里面的内容):
要USES Printers单元

Printer.BeginDoc;
for i := 0 to Memo1.Lines.Count - 1 do
begin
Printer.Canvas.TextOut(5,i * 30 + 5,Memo1.Lines[i]);
end;
Printer.EndDoc;

如果引用打印指令直接写口效率应该会更快点,不过热敏打印机速度不是问题.
gjw310 2008-02-21
  • 打赏
  • 举报
回复
要是不想学就用现成的傻瓜式的打印套件,如SailPrint,Ehlib组件等
zhangpuqing 2008-02-21
  • 打赏
  • 举报
回复
楼上的说得不错,一般来说小票格式都很简单,而POS收银机,如IBM的,虽然都有驱动,控件,但用着不爽,一般来说直接写COM口比较快,但如果要对齐格式这类的就不好整了.
chenzhuo 2008-02-21
  • 打赏
  • 举报
回复
最简单的方法就是直接写串口或者并口

var
pF : TextFile;
begin
AssignFile(pF, 'LPT1');
Rewrite(pF);
Writeln(pF, '欢迎光临');
Writeln(pF, '品名 数量 价格 金额');
Writeln(pF, 切纸命令);
CloseFile(pF);
end;
licese2002 2008-02-20
  • 打赏
  • 举报
回复
超市的pos机打印,格式比较简单,建议使用一楼的办法,这样,打印和打印格式生成可以分开实现,会为下面减轻很大的工作量,优点大大的
sharpman2004 2008-02-20
  • 打赏
  • 举报
回复
用,fastreport3 可以轻松实现此功能,可以动态控制报表的长度
luxuewei5214 2008-02-20
  • 打赏
  • 举报
回复
最简单的,做个报表然后打印就好了;你不会是没用过报表吧?
阿三 2008-02-20
  • 打赏
  • 举报
回复
我以前做的程序中,打印的小票,一票都保存在一个文本中,因为有的客户会需要重新打印小票等。
然后用画布直接输出到打印机打印。
也可以用rave或quickreport来打印。

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧