pb9中的问题!高分求救!

wjlforever 2005-07-02 04:33:49
long pn

pn=printopen()
if pn=-1 then
messagebox("ok","print error")
return
end if
//行距
printsend(pn,char(27)+char(48))
//页长
printsend(pn,"~h1b~h43~h01")
printdatawindow(pn,dw_3)
printclose(pn)

最早,我用的是PB6.5在EPSONLQ300K打印机上都没有问题.
现在,我用PB9.0做了一个程序,但是,根本就控制不了打印机走纸了!
各位高手在PB9.0下如何呢?
(解决此问题100分)


偶个英文不是很好,谁将printsend()这个函数解释清楚!(50分)

...全文
168 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjlforever 2005-07-04
  • 打赏
  • 举报
回复
自己顶!
wjlforever 2005-07-03
  • 打赏
  • 举报
回复
to hbdkfk(卡夫卡) :
  有很多不清楚,什么是“使用非打印字符的ASCII码值表示非打印字符;”
  “用程序需要使用其它字符在参数string中替代数值0,并用zerochar参数指明这个替代字符”
怎样指明呢,我又是怎么知道的哪个是0?

对不起, 能否举个例子说一下!
wjlforever 2005-07-03
  • 打赏
  • 举报
回复
to lzheng2001(1加1):
首先感谢你的回答。
不过,我上面的代码不只是在lq300k中可以,在lq1600k 和 一款名叫德实的打印机也没有事!
现在想问一下,我应该下什么补丁?我想在pb9中控制打印机的走纸的代码应该怎么写呢!
da21 2005-07-02
  • 打赏
  • 举报
回复
楼上的已经很详细了
hbdkfk 2005-07-02
  • 打赏
  • 举报
回复
PrintSend()

功 能:直接向打印机发送任意字符串,通常用于发送打印机的控制代码。

语 法:PrintSend ( printjobnumber, string {, zerochar } )

参 数:printjobnumber:用PrintOpen()函数打开的打印作业号;

string:string类型,指定发送到打印机的字符串。在该字符串中,使用非打印字符的ASCII码值表示非打印字符;

zerochar:integer类型,可选项,指定在string参数中用于表示数值0的ASCII码值。有效取值在1到255之间。

返回值:Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL,PrintSend()函数返回NULL。

用 法:应用程序使用PrintSend()函数可以直接向打印机发送控制序列(换码序列),比如,设置打印文字的浓淡、打印页的四周空白等。不同类型的打印机使用不同的控制序列,你需要翻一翻你的打印机手册。

由于PowerBuilder使用数值0(即ASCII码为0的字符)结束每个字符串,因此,如果打印控制序列中包含了数值0,应用程序需要使用其它字符在参数string中替代数值0,并用zerochar参数指明这个替代字符。一般来说,应该选择一个打印机控制序列中不使用的字符作为0值字符的替代字符。

通常情况下,按下述次序组织打印作业:

1. 使用PrintOpen()函数打开打印作业;

2. 使用PrintSend()函数设置打印机特性,比如打印方向、四周空白等;

3. 使用PrintDefineFont()和PrintSetFont()函数设置该打印作业使用的字体;

4. 使用该组的其它函数打印输出文字或图形5. 执行PrintClose()函数关闭打印作业。
lzheng2001 2005-07-02
  • 打赏
  • 举报
回复
printsend只是向打印机发送指令,关键是你要知道打印机支持哪些指令

1.可以试试打补丁
2.如果楼主换了别的打印机是有可能不支持某些指令的

1,079

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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