用VB6怎样实现打印机的直接写口打印?回答得精彩,赠送1000分!

topmonkey 2002-05-30 08:35:21
俺的级别不够,发贴最多只能给100分。不过不要紧,哪位大虾能解决俺的问题,或者能对俺有所帮助的,俺都会额外送分。根据情况每人赠送50-1000分。

俺要用VB6实现以下功能:
1、检测一部电脑的可用通讯端口(仅包括并口、串口),如果有可能,USB端口也在考虑之中。
2、检测当前可用端口上面是否有打印机(当然是电源打开的)。
3、检测每个打印机的幅宽、硬字库等信息。
4、对指定端口进行直接写口打印。
4-1、要求能够调用打印机字库;
4-2、要求能向指定端口发送信息(ASCII信息或二进制信息);
4-3、要求能自行控制字体大小;
4-4、要求能自行控制走纸。
5、直接写口打印图形(商标、条码等)

以上功能不一定要全部实现,能解决一个问题俺也送分!重点是在4-2、4-3、4-4三个问题上,拜托各位大虾一定要指点迷津。
...全文
305 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
topmonkey 2002-06-07
  • 打赏
  • 举报
回复
因为承诺的送分分数太高,如果一口气贴出这么多送分帖子,十有八九会被斑竹封杀掉,所以我觉得还是分几天时间分别发帖送分比较保险。
topmonkey 2002-06-07
  • 打赏
  • 举报
回复
测试成功了,谢谢大家帮忙。送分!
因为我级别不够,帖子上面最多能散100分,其它分数就只能再发帖子送分了!
ByTheWay(到此一游) 和 wzsswz(岌岌荆棘) 两位仁兄,各给500分,DownFree(浅滩浮云)给300分。请各位看到主题为“并口打印问题解决,送分”的帖子,就进去发帖子领分吧。(希望斑竹不要以《乱发帖子罪》封杀俺T_T)
jshyjyw 2002-06-04
  • 打赏
  • 举报
回复
我也想知道有关向并口写数据的技术,但不是打印机。谢谢各位了!
no_com 2002-06-04
  • 打赏
  • 举报
回复
我认为也是不用在乎很多底层的!用printer对象也可以实现
itczy 2002-06-04
  • 打赏
  • 举报
回复
控件属性.printer
wzsswz 2002-06-04
  • 打赏
  • 举报
回复
怎么还贴?
ByTheWay 2002-06-04
  • 打赏
  • 举报
回复
用打印机的ESC指令自己干!

Open "PRN" For Output As #1
Print #1, Chr$(27) + "J" + Chr$(255) ‘进纸
Close #1
ccc99 2002-06-04
  • 打赏
  • 举报
回复
我也遇见这个问题,给点阵打印机做一个能绘图和打印字符的程序,不知道怎么答应图形,真是急死我了,但是我想出来了一个笨法!!!!可以给你发过去!!请你与我联系
wzsswz 2002-06-01
  • 打赏
  • 举报
回复
以上代码,我没有控制自动回纸,考虑用户需要撕下票据,有个时间响应问题,用户要求手工控制。
wzsswz 2002-06-01
  • 打赏
  • 举报
回复
以下是我一进销存软件里的票据打印控制,先用printer打印,再用LPT1控制打印走纸多少,实现功能不多,但也挺管用。

Public Sub beforehand_print()
If MsgBox("打印预发通知单?", vbQuestion + vbOKCancel, "提示") = vbOK Then
Dim yy As String
Dim mm As String
Dim dd As String
Dim fpath As String
yy = Right(Year(CDate(RTrim(T_date.Text))), 2)
mm = Month(CDate(RTrim(T_date.Text)))
dd = Day(CDate(RTrim(T_date.Text)))

Printer.CurrentX = 0
Printer.CurrentY = 0
Printer.Font.name = "宋体"
Printer.Font.Size = 11
Printer.CurrentY = 700
Printer.CurrentX = 6800
Printer.Print "NO: " + T_number.Text '预发单号
Printer.CurrentY = 1280
Printer.CurrentX = 2900
Printer.Print " " + yy + " " + mm + " " + dd '年月日
Printer.CurrentY = 2138
Printer.CurrentX = 2100
Printer.Print Cb_comp.Text '往来单位
Printer.CurrentY = 2720
Printer.CurrentX = 3200
Printer.Print Cb_class.Text '类型
Printer.CurrentY = 2720
Printer.CurrentX = 6500
Printer.Print T_amount.Text '预发数量
Printer.CurrentY = 3300
Printer.CurrentX = 2438
Printer.Print T_price.Text '单价
Printer.CurrentY = 4470
Printer.CurrentX = 3200
Printer.Print Cb_examine_person.Text '审批人
Printer.CurrentY = 4470
Printer.CurrentX = 6500
Printer.Print Cb_manage_person.Text '经办人
Printer.EndDoc

Call Sleep(4000)
GoTo mylab0
mylab0:
On Error GoTo mylab1
Open "LPT1:" For Output As #1
For i = 0 To 13
Print #1, ""
Next
Close #1
Exit Sub
mylab1:
Err.Clear
Call Sleep(4000)
GoTo mylab0
End If
End Sub
大帮手软件 2002-06-01
  • 打赏
  • 举报
回复
先看看并口资料,很多位是要反相处理的。可惜我是在网吧,我做过一个并口检测的程序。
topmonkey 2002-06-01
  • 打赏
  • 举报
回复
CSDN上高手如云,拜托大家多多帮忙呀,来者有分,决不食言!
topmonkey 2002-05-31
  • 打赏
  • 举报
回复
提示一下,例如在DOS下,敲
c:\>echo 要打印的文字 >> LPT1
就会立刻在LPT1端口连接的打印机上打印出一行字来,不用担心会走一整张纸。我需要弄懂的是在VB6中如何向指定的端口输出信息。
DownFree 2002-05-30
  • 打赏
  • 举报
回复
超市里的打印机不是使用的常见的打印机
那是用单片机控制的小打印机,
在常用的打印机上我不知道怎么实现了!
topmonkey 2002-05-30
  • 打赏
  • 举报
回复
回复 DownFree(浅滩浮云) :
老兄,用Printer对象的时候,不能随意控制走纸,发一个EndDoc,就会走一整张纸,哪怕你只打印了一行;况且如果你打印很多行,超过了规定的一页长度,就会把后面本该连续的信息强行分到第二页去了。
btw,我要求能够达到像超市收款机那样的效果,能够连续打很长,也能只打一两行而不浪费纸张。
topmonkey 2002-05-30
  • 打赏
  • 举报
回复
请注意,现在是Windows时代,要求在Windows下实现。上述功能不一定全部要实现,能实现一条算一条。
可以用VC,但是要能够被VB调用。
btw,能够提供dll的朋友,最好能将源代码公布给大家。
DownFree 2002-05-30
  • 打赏
  • 举报
回复
我暂时只能给这些
在MSDN中有详细的参数说明!祝你好运!
Printer.DrawMode = 1
Printer.DrawStyle = vbSolid
Printer.DrawWidth = 1
Printer.FillColor = vbRed
Printer.FillStyle = vbFSTransparent 'vbSolid
Printer.FontTransparent = False
Printer.PaperSize = vbPRPSA4 '打印纸的的尺寸B5
Printer.Orientation = vbPRORLandscape '横向打印
Printer.PaperSize = vbPRPSB5 '打印纸的的尺寸B5
Printer.PrintQuality = vbPRPQLow '打印质量为低
Printer.RightToLeft = False
Printer.TrackDefault = True '打印机追踪系统默认的打印机
Printer.FontSize = 24 '打印机的字体尺寸
Printer.ColorMode = vbPRCMMonochrome '打印机的颜色模式:单色
Printer.Copies = 1 '打印页数
Debug.Print Printer.DeviceName
Debug.Print Printer.DriverName
Printer.Duplex = 1
Printer.EndDoc '启动打印
wyarrant 2002-05-30
  • 打赏
  • 举报
回复
用c写打印机的驱动
然后调用
julyclyde 2002-05-30
  • 打赏
  • 举报
回复
DOS时代人人都会

7,762

社区成员

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

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