C #如何判断打印机缺纸?

姑娘出来我爬山坡 2013-08-06 09:57:18
用C#写了个winform程序,连接的是USB端口的热敏pos打印机,(类似于超市打印小票的那种)。

怎么判断打印机里面是否还有纸。?
...全文
594 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
馒头仔 2013-08-07
  • 打赏
  • 举报
回复
引用 10 楼 u011206051 的回复:
[quote=引用 4 楼 KJ_Wang 的回复:] 点意思,个人觉得最好是供应商提供串口接口,然后先判断纸是否够,然后再打印
厂商有没有提供API怎么看?[/quote]
引用 10 楼 u011206051 的回复:
[quote=引用 4 楼 KJ_Wang 的回复:] 点意思,个人觉得最好是供应商提供串口接口,然后先判断纸是否够,然后再打印
厂商有没有提供API怎么看?[/quote]厂商没有提供相应接口,你怎么和打印机通信呢
  • 打赏
  • 举报
回复
没人。。 自己顶。
  • 打赏
  • 举报
回复
引用 16 楼 xupeihuagudulei 的回复:
那就要看厂商提供的说明书了。
那我去看看。 谢谢了。
xupeihuagudulei 2013-08-06
  • 打赏
  • 举报
回复
那就要看厂商提供的说明书了。
  • 打赏
  • 举报
回复
引用 14 楼 xupeihuagudulei 的回复:
[quote=引用 13 楼 u011206051 的回复:] [quote=引用 12 楼 xupeihuagudulei 的回复:] 缺纸了,你点打印之后,把纸放进去。 会自动打印的啊? 为什么会需要判断缺纸这种功能?
我知道。。 但是速度太快。 放进去才打出来一半[/quote]那就把等待纸的时间设置稍微长一点[/quote] 怎么设置呢?
xupeihuagudulei 2013-08-06
  • 打赏
  • 举报
回复
引用 13 楼 u011206051 的回复:
[quote=引用 12 楼 xupeihuagudulei 的回复:] 缺纸了,你点打印之后,把纸放进去。 会自动打印的啊? 为什么会需要判断缺纸这种功能?
我知道。。 但是速度太快。 放进去才打出来一半[/quote]那就把等待纸的时间设置稍微长一点
  • 打赏
  • 举报
回复
引用 12 楼 xupeihuagudulei 的回复:
缺纸了,你点打印之后,把纸放进去。 会自动打印的啊? 为什么会需要判断缺纸这种功能?
我知道。。 但是速度太快。 放进去才打出来一半
xupeihuagudulei 2013-08-06
  • 打赏
  • 举报
回复
缺纸了,你点打印之后,把纸放进去。 会自动打印的啊? 为什么会需要判断缺纸这种功能?
  • 打赏
  • 举报
回复
引用 8 楼 llyyqq123 的回复:
这个问题不是C#怎么做的问题,主要还是看打印机厂商的API有没有提供这项功能
厂商有没有提供API怎么看?
  • 打赏
  • 举报
回复
引用 4 楼 KJ_Wang 的回复:
点意思,个人觉得最好是供应商提供串口接口,然后先判断纸是否够,然后再打印
厂商有没有提供API怎么看?
  • 打赏
  • 举报
回复
引用 8 楼 llyyqq123 的回复:
这个问题不是C#怎么做的问题,主要还是看打印机厂商的API有没有提供这项功能
没有API就不能实现啊??
馒头仔 2013-08-06
  • 打赏
  • 举报
回复
这个问题不是C#怎么做的问题,主要还是看打印机厂商的API有没有提供这项功能
馒头仔 2013-08-06
  • 打赏
  • 举报
回复
引用 2 楼 qq34196940 的回复:
if (printQueue.IsBusy) printStateText = "打印机正忙"; else if (printQueue.IsDoorOpened) printStateText = "打印机门被打开"; else if (printQueue.IsInError) printStateText = "打印机出错"; else if (printQueue.IsInitializing) printStateText = "打印机正在初始化"; else if (printQueue.IsIOActive) printStateText = "打印机正在与打印服务器交换数据"; else if (printQueue.IsManualFeedRequired) printStateText = "打印机出错"; else if (printQueue.IsNotAvailable) printStateText = "打印机状态信息不可用"; else if (printQueue.IsTonerLow) printStateText = "打印机墨粉用完"; else if (printQueue.IsOffline) printStateText = "打印机脱机"; else if (printQueue.IsOutOfMemory) printStateText = "打印机无可用内存"; else if (printQueue.IsOutputBinFull) printStateText = "打印机输出纸盒已满"; else if (printQueue.IsPaperJammed) printStateText = "打印机卡纸"; else if (printQueue.IsOutOfPaper) printStateText = "打印机中没有或已用完当前打印作业所需的纸张类型"; else if (printQueue.QueueStatus == PrintQueueStatus.PaperProblem) printStateText = "打印机中的纸张导致未指定的错误情况"; else if (printQueue.IsPaused) printStateText = "打印队列已暂停"; else if (printQueue.IsPendingDeletion) printStateText = "打印队列正在删除打印作业"; else if (printQueue.IsPrinting) printStateText = "设备正在打印"; else if (printQueue.IsProcessing) printStateText = "设备正在执行某种工作,如果此设备是集打印机、传真机和扫描仪于一体的多功能设备,则不需要打印."; else if (printQueue.IsServerUnknown) printStateText = "打印机处于错误状态"; //else if (printQueue.IsWarmingUp) // printStateText = "打印机正在预热";
这么长的IF ELSE。。。。 明显应该用SWITCH啦
  • 打赏
  • 举报
回复
引用 4 楼 KJ_Wang 的回复:
点意思,个人觉得最好是供应商提供串口接口,然后先判断纸是否够,然后再打印
如果换一个打印机。 那这一次写在上面的的串口、接口就没用了 对吧?
  • 打赏
  • 举报
回复
引用 3 楼 qq34196940 的回复:
  private PrintQueue GetPrintQueue(string PrinterName)
        {
            LocalPrintServer pr = new LocalPrintServer();
            pr.Refresh();
            EnumeratedPrintQueueTypes[] enumerationFlags = {EnumeratedPrintQueueTypes.Local,
                                                            EnumeratedPrintQueueTypes.Connections,
                                                           };
            foreach (PrintQueue pq in pr.GetPrintQueues(enumerationFlags))
            {
                if (pq.Name == PrinterName)
                {
                    return pq;
                }
            }
            return null;
        }
能不能完整点啊。。。 我是第一次弄这个东西。。
KJ_Wang 2013-08-06
  • 打赏
  • 举报
回复
点意思,个人觉得最好是供应商提供串口接口,然后先判断纸是否够,然后再打印
  • 打赏
  • 举报
回复
  private PrintQueue GetPrintQueue(string PrinterName)
        {
            LocalPrintServer pr = new LocalPrintServer();
            pr.Refresh();
            EnumeratedPrintQueueTypes[] enumerationFlags = {EnumeratedPrintQueueTypes.Local,
                                                            EnumeratedPrintQueueTypes.Connections,
                                                           };
            foreach (PrintQueue pq in pr.GetPrintQueues(enumerationFlags))
            {
                if (pq.Name == PrinterName)
                {
                    return pq;
                }
            }
            return null;
        }
  • 打赏
  • 举报
回复
if (printQueue.IsBusy) printStateText = "打印机正忙"; else if (printQueue.IsDoorOpened) printStateText = "打印机门被打开"; else if (printQueue.IsInError) printStateText = "打印机出错"; else if (printQueue.IsInitializing) printStateText = "打印机正在初始化"; else if (printQueue.IsIOActive) printStateText = "打印机正在与打印服务器交换数据"; else if (printQueue.IsManualFeedRequired) printStateText = "打印机出错"; else if (printQueue.IsNotAvailable) printStateText = "打印机状态信息不可用"; else if (printQueue.IsTonerLow) printStateText = "打印机墨粉用完"; else if (printQueue.IsOffline) printStateText = "打印机脱机"; else if (printQueue.IsOutOfMemory) printStateText = "打印机无可用内存"; else if (printQueue.IsOutputBinFull) printStateText = "打印机输出纸盒已满"; else if (printQueue.IsPaperJammed) printStateText = "打印机卡纸"; else if (printQueue.IsOutOfPaper) printStateText = "打印机中没有或已用完当前打印作业所需的纸张类型"; else if (printQueue.QueueStatus == PrintQueueStatus.PaperProblem) printStateText = "打印机中的纸张导致未指定的错误情况"; else if (printQueue.IsPaused) printStateText = "打印队列已暂停"; else if (printQueue.IsPendingDeletion) printStateText = "打印队列正在删除打印作业"; else if (printQueue.IsPrinting) printStateText = "设备正在打印"; else if (printQueue.IsProcessing) printStateText = "设备正在执行某种工作,如果此设备是集打印机、传真机和扫描仪于一体的多功能设备,则不需要打印."; else if (printQueue.IsServerUnknown) printStateText = "打印机处于错误状态"; //else if (printQueue.IsWarmingUp) // printStateText = "打印机正在预热";
1 针式打印机、一体机分类与维修 针式、一体机培训资料全文共34页,当前为第1页。 针式打印机 针式、一体机培训资料全文共34页,当前为第2页。 针式打印机工作原理 针式打印机(简称针打)是利用电路驱动和机械原理,使打印针撞击色带和打印介质,进而打印出点阵,再由点阵组成字符或图形来完成打印任务的。 针式、一体机培训资料全文共34页,当前为第3页。 针式打印机仿真语言 计算机通过打印控制语言,以软件命令的方法来控制打印机操作,解释执行打印数据,获得打印结果。常见的针式打印机仿真语言为:EPSON、OKI及IBM仿真语言,EPSON仿真语言通用Epson lq-1600k驱动;OKI仿真语言通用OKI 5530SP驱动,都是操作系统自带的,IBM仿真语言使用较少。 针式、一体机培训资料全文共34页,当前为第4页。 针式打印机基础知识 不同类型的针式打印机 微型针式打印机: 主要用于POS机、ATM机等设备上。 通用针式打印机: 主要用于普通办公和财务机构。 票据针式打印机: 平推式走纸、具备自动纠偏技术、能够处理超厚纸张,专门用于银行、邮电、保险等服务部门的柜台业务,这类打印机专门发展出了一种存折打印机,还具备磁条读写等特殊功能。 针式、一体机培训资料全文共34页,当前为第5页。 针式打印机基础知识 针式打印机各部分名称和功能(平推式) 针式、一体机培训资料全文共34页,当前为第6页。 针式打印机基础知识 a.打印纸导纸器b.导轨c.过纸控制杆d.控制面板e.电源转换开关f.前部导纸器g.前盖h.打印机盖i.打印纸导纸器盖 针式打印机各部分名称和功能(通用式) 针式、一体机培训资料全文共34页,当前为第7页。 针式打印机基础知识 针式打印机主要技术指标 拷贝能力:也叫复印能力或复写能力,是指针式打印机能够在复写式打印纸上最多打出"几联"内容的能力。目前票据打印机的复写能力一般用"1+N"的方式来标识,1表示打印原件,N表示拷贝(复写)件数,比如"1+6"就代表产品可以最多打印在7层的复写式票据上全部打印出内容来。 接口类型:接口类型指的是针式打印机与电脑系统采用何种方式进行连接。目前票据打印机常见的有并口 (也有称之为IEEE 1284, Centronics)、串口 (也有称之为RS-232接口的)和USB接口。 供纸方式:根据针式打印机供纸的原因,可以把它分为两大类:使用齿轮拖拉的方式供应连续纸和通过摩擦原理供应单页纸。目前绝大多数的针式打印机都具备了这两种供纸的方式,在描述供纸方式时经常是根据连续纸和单页纸的进纸位置加以描述,比如前部、后部、底部。 针式、一体机培训资料全文共34页,当前为第8页。 优点 -可在不同类型的纸张上进行打印。 -如多层的无碳复写纸 -多种的进纸通道。-可打印单页纸、连续纸 -打印成本低,-耗材,纸张 缺点 -打印时的噪音较大 -不适宜高质量打印。如照片、图片打印 -打印速度受打印头及线圈响应限制。 -为避免打印头因出针的摩擦过热,不得不限制打印速度 ---------或在打印过程中强制暂停。 -速度受限 针式打印机优缺点 针式、一体机培训资料全文共34页,当前为第9页。 常见故障及解决方法(1) 出错提示信息: 电源指示灯闪、联机灯灭,表示缺纸或卡纸; 电源指示灯和联机灯同时闪,表示纸斜; 电源指示灯和联机灯交替闪烁,表示选纸杆位置出错; 电源指示灯和联机灯交替快速闪烁,表示回位出错; 电源指示灯亮、联机灯闪,表示打印头过热。 针式、一体机培训资料全文共34页,当前为第10页。 常见故障及解决方法(2) 打印发票后面几联不清晰: (1)根据纸张厚度,将纸张厚度调整杆调到适当位置。 (2)检查打印头,可能是针磨损严重,需要更换打印头。 打印缺笔划: (1)由于打印头头缆九十度折角处与字车架长久擦,头缆破损,几根导线处相碰短路引起主板,打印头,头缆损坏。用透明胶布将打印头头缆固定在字车架上。 (2)检查打印头,可能是断针,需要换针。 (3)检查打印头档片是否对位,重新安装到正确位置。 针式、一体机培训资料全文共34页,当前为第11页。 针式打印机缺笔画样张 缺划 针式、一体机培训资料全文共34页,当前为第12页。 针式打印机不打印: 1、检查打印机有没有脱机或者暂停; 2、检查打印机驱动程序端口是否正确; 3、检查打印机数据线有没有故障; 4、检查打印机的并口,或者电脑并口是否有故障(可以通过更换电脑来测试故障位置); 常见故障及解决方法(3) 针式、一体机培训资料全文共34页,当前为第13页。 打印出文字乱码: 1、检查打印作业,是不是有未打完的作业,如果有,清楚所有打印作业,并关闭打印机,重开打印机测试。 2、检查打印机的仿真语言是否与所安装驱动相对应; 3、更改电脑主板并口模式,一般在主板BIO

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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