首页 新闻 会员 周边 捐助

c# winform中如何实现通用串口、并口的小票打印?

0
悬赏园豆:10 [已解决问题] 解决于 2021-01-05 17:05

小票格式固定好了,但是小票打印机各不一样,请问能不能实现LPT1+端口或者COM1+端口来实现通用打印,如果可以的话,我要怎么去调用指令呢 ?
还请各位能给小老弟指点下,给点思路,愁的头发都掉光了,无从下手。

尾随前行的主页 尾随前行 | 初学一级 | 园豆:0
提问于:2020-11-20 11:45
< >
分享
最佳答案
0

这种要用 report 一类的,而其中有打印功能。至于打印机类型不用管。只要是 Windows 环境的打印机设备就能作为打印输出

收获园豆:10
capital2012 | 菜鸟二级 |园豆:265 | 2020-11-20 19:28

应该不需要报表类的吧,找了几天资料应该可以实现的。调用kernel32的CreateFile接口是可以的,目前还在探索中

尾随前行 | 园豆:0 (初学一级) | 2020-11-22 00:27

@尾随前行:既然是CSharp那么应该是Windows系统,那么就有打印机设备可供CSharp访问。如果从串口访问做起的话很累的

capital2012 | 园豆:265 (菜鸟二级) | 2020-11-22 18:57

@capital2012:  嗯, 目前是按串口思路去做的,因为需求是直接设置端口就能打印,不要选择打印机啥的,小票机打印也不需要设置模板,固定格式打印了 。。。

尾随前行 | 园豆:0 (初学一级) | 2020-11-23 09:46
其他回答(3)
0

我觉得不通的厂商可能数据格式不一样把。个人认为可以这样,看下设计模式中的策略模式,给不通的设备编写不同的代码,只要保证接口一致就好,改起来比较方便,结构也清晰。

会长 | 园豆:12463 (专家六级) | 2020-11-20 12:07

 你好呀, 你说的这个方法好像不是我想要的解决方案。

 我在网上搜了下,可以使用kernel32来打开lpt1或者com3端口来进行打印,不需要知道打印机型号,但是更具体的操作我就不知道了, 比如某行字体加粗,设置字体代下,裁纸,开钱箱等等。。

支持(0) 反对(0) 尾随前行 | 园豆:0 (初学一级) | 2020-11-20 13:56
0

这种情况完全可以走虚拟打印,在程序中只需要给定打印机名称即可,可以选择使用FastReport

Jonny-Xhl | 园豆:691 (小虾三级) | 2020-11-20 13:23

 你好, 能具体说下使用FastReport怎么实现吗 ? 

 我这边的场景需求是在收银机上,不用设置打印模板, 我自己固定好打印格式就好了。

 现在知道的是用户用的lpt1还是com3打印,其他的都不知道

支持(0) 反对(0) 尾随前行 | 园豆:0 (初学一级) | 2020-11-20 13:58

@尾随前行: 参考https://github.com/FastReports/FastReport

支持(0) 反对(0) Jonny-Xhl | 园豆:691 (小虾三级) | 2020-11-25 17:39
0

C# 自带有打印方法,不用去调用厂商的底层协议

jqw2009 | 园豆:2341 (老鸟四级) | 2020-11-23 08:44

c#自带的打印是需要调起打印窗口的吧? 这种的话不可行哎。

支持(0) 反对(0) 尾随前行 | 园豆:0 (初学一级) | 2020-11-23 09:44

@尾随前行: 不用调起窗口,直接打印就行了,我做的打印条码就直接打印的

支持(0) 反对(0) jqw2009 | 园豆:2341 (老鸟四级) | 2020-11-23 10:55

@jqw2009:   请问你有对应的相关博文或者代码片段能借鉴下吗 ? 

支持(0) 反对(0) 尾随前行 | 园豆:0 (初学一级) | 2020-11-24 13:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册