C# 使用C/S模式操作小票机打印

此方式适用于市场上大多数的小票机 佳博、POS58 等,不适用于有些标签打印机 比如斑马打印机等

直接贴代码:

 private FileStream fs = null;
        [DllImport("kernel32.dll", CharSet = CharSet.Auto)]//调用系统API打印函数
        public static extern IntPtr CreateFile
        (
            string FileName,          // file name
            uint DesiredAccess,       // access mode
            uint ShareMode,           // share mode
            uint SecurityAttributes,  // Security Attributes
            uint CreationDisposition, // how to create
            uint FlagsAndAttributes,  // file attributes
            string hTemplateFile      // handle to template file
        );

        /// <summary>
        /// 打印小票
        /// </summary>
        /// <param name="msg"></param>
        /// <returns></returns>
        public string PrintMsg(string PosPort, string msg, bool isOpenMoneyBox)
        {
            try
            {
                IntPtr iHandle = CreateFile(PosPort, 0x40000000, 0, 0, 3, 0, null);
                if (iHandle.ToInt32() == -1)
                {
                    return "票机连接失败.或者端口号错误.请测试打印机是否正常!";
                }
                else
                {
                    try
                    {
                        fs = new FileStream(iHandle, FileAccess.ReadWrite);
                        StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default);   //写数据
                        sw.WriteLine(msg);
                        //开启钱箱
                        if (isOpenMoneyBox)
                        {
                            sw.Write(((char)27).ToString() + "p" + ((char)0).ToString() + ((char)60).ToString() + ((char)255).ToString());
                        }
                        sw.Flush();
                        sw.Close();
                        fs.Close();
                        return "";
                    }
                    catch (Exception ex)
                    {
                        return ex.InnerException == null ? ex.Message : ex.InnerException.Message;
                    }
                }
            }
            catch (Exception exp)
            {
                return "TPL或者COM口连接失败!";
            }
        }

时间: 2024-11-20 12:58:23

C# 使用C/S模式操作小票机打印的相关文章

C#后台调用LPT1端口实现小票机打印方法。

public class POSPrinter { const int OPEN_EXISTING = 3; string prnPort = "LPT1"; [DllImport("kernel32.dll", CharSet = CharSet.Auto)] private static extern IntPtr CreateFile(string lpFileName, int dwDesiredAccess, int dwShareMode, int lp

在VMWare Workstation中以独占显示像操作物理机一样使用当前虚拟机?

在VMWare Workstation中以独占显示像操作物理机一样使用当前虚拟机? ?Lander Zhang 专注外企按需IT基础架构运维服务,IT Helpdesk 实战培训践行者博客:https://blog.51cto.com/lander IT Helpdesk 工程师实战培训课程:https://edu.51cto.com/lecturer/733218.html轻松进外企:IT Helpdesk工程师实战自学之路:https://blog.51cto.com/lander/2413

CI 2.2.0可以使用AR模式操作Oracle 10g数据库

一.控制器 <?php if (!defined('BASEPATH'))    exit('No direct script access allowed'); class Topics extends CI_Controller{ function __construct()    {        parent::__construct();        $this->load->helper('url');        $this->load->helper('f

WSFC 维护模式操作粒度控制

之前曾经在WSFC日常管理操作篇和大家介绍过WSFC的维护模式,简单来说,从WSFC 2012开始,通过维护模式可以帮我们完成暂停节点,自动排水,自动回复的半自动化维护 回顾一下WSFC的维护模式运作流程,此处以WSFC 2012开始为例,在WSFC 2012之前,群集的维护模式仅能暂停节点,但无法自动移动负载 1.手动放置节点为暂停模式 2.节点根据群集角色优先级,参考放置策略,依次排水处理群集负载至合适节点 3.负载都排水到该去的节点后,节点宣告为暂停,不接受任何负载的迁移 4.维护完成后参

串口小票打印机打印乱码问题

-------------------------------------- editor:YeungChi date:2016/3/29 describe:小票打印机乱码问题 文章内容:一.参数解释 二.串口连接打印机设置案例 -------------------------------------- 串口是一种非常通用的设备通信的协议: 一.参数解释 波特率 这是一个衡量符号传输速率的参数.它表示每秒钟传送的符号的个数.例如300波特表示每秒钟发送300个符号.当我们提到时钟周期时,我们就

.net 调用小票打印机 打印票据

public class PrintInvoice     { #region 01.获得打印机1获得吧台打印机2获得后厨打印机 /// <summary> /// 获得打印机1获得吧台打印机2获得后厨打印机 /// </summary> public TcpClient GetPrint(int n = 1) { var client = new System.Net.Sockets.TcpClient(); var bll = new PrintAndPlaceBll(); v

unity3d 下操作excel 与打印

因项目需要,需在unity下实现写入excel.打印功能.因之前在winform里操作过excel,故顺心应手=== 说明:本次只实现了简单操作步骤,在实际项目需要中,在此基础上扩展即可. 需求: 1.将各种统计数据插入到excel表格中.文字.数字.图片.时间---- 2.打印excel表格 ==我们首先来做第一步吧. 操作excel,我一直使用的是NPOI插件,自我感觉该插件非常不错,从java移植到.NET下的.抱着一颗激动的心开始流程-- 1.将NPOI.DLL文件拷贝到unity\As

转:C#并口热敏小票打印机打印位图

最近一直在研究并口小票打印机打印图片问题,这也是第一次和硬件打交道,不过还好,最终成功了. 这是DEMO的窗体: 下面是打印所需要调用的代码: [html] view plaincopy class LptControl { private string LptStr = "lpt1"; public LptControl(string l_LPT_Str) { LptStr = l_LPT_Str; } [StructLayout(LayoutKind.Sequential)] pr

365小票打印机打印接口开发文档

API开发文档 接口1:打印内容 参数 说明 deviceNo 打印机编号 key 密钥 printContent 打印内容 times 固定传1 调用方式:HTTP POSTURL:http://open.printcenter.cn:8080/addOrder返回结果:JSON字符串 ----------S1小票机返回的结果有如下几种:---------- {"responseCode":0,"msg":"订单添加成功,打印完成","