在熟悉了串口、并口打印后,网口打印就容易明白了。与前两者的区别是:网口通过socket通信。

    /// <summary>/// 网口通信/// </summary>public interface INetContact : IPortContact{ActionResult Connect(string ip, int port);}public class NetContact : INetContact{Socket _socket = null;private readonly int TryReconnectTimes = 3;private readonly int Timeout = 5000;public bool Opened { get; set; }/// <summary>/// Connects the specified ip.连接网口打印机/// </summary>/// <param name="ip">The ip.</param>/// <param name="port">The port.</param>/// <returns></returns>public ActionResult Connect(string ip, int port){if (string.IsNullOrEmpty(ip)){return new ActionResult(false, "网口打印机未指定有效IP地址");}// 先关闭if (Opened){_socket.Close();Opened = false;}try{for (int i = 0; i < TryReconnectTimes; i++){// 创建socket并连接到服务器_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);var result = _socket.BeginConnect(IPAddress.Parse(ip), port, null, null);bool success = result.AsyncWaitHandle.WaitOne(Timeout, true);if (success){try{_socket.EndConnect(result);Opened = true;return new ActionResult(true);}catch (SocketException){continue;}}else{_socket.Close();}}return new ActionResult(false, string.Format("打印机IP:{0}连接超时,请检查网络是否存在异常!", ip));}catch (Exception ex){return new ActionResult(false,string.Format("连接网口打印机失败:{0}", ex.Message));}}/// <summary>/// Sends the specified data.发送文本到打印机/// </summary>/// <param name="data">The data.</param>/// <returns></returns>public int Write(string data){return Write(Encoding.GetEncoding("gb2312").GetBytes(data));}/// <summary>/// Sends the specified data.发送byte数据到打印机/// </summary>/// <param name="data">The data.</param>/// <returns></returns>public int Write(byte[] data){if (!Opened){return 0;}int offset = 0;try{int timeout = TimeSpan.FromSeconds(10).Milliseconds;int waitTime = TimeSpan.FromMilliseconds(30).Milliseconds;_socket.SendTimeout = timeout;while (offset != data.Length){if (_socket.Poll(waitTime, SelectMode.SelectWrite)){offset += _socket.Send(data, offset, data.Length - offset, SocketFlags.None);}}}catch (Exception ex){throw new Exception(string.Format("向网口打印机发送数据失败:{0}", ex.Message));}return offset;}/// <summary>/// Closes this connection.关闭网络连接/// </summary>public void Close(){if (Opened){_socket.Shutdown(SocketShutdown.Both);_socket.Close();Opened = false;}_socket = null;}public byte[] Read(int length){byte[] buffer = null;if (Opened){buffer = new byte[length];_socket.Receive(buffer);}return buffer;}}

View Code

转载于:https://www.cnblogs.com/zzq417/p/Print_NetPort.html

POS打印机系列之 = 网口相关推荐

  1. POS打印机系列之 = 并口

    并口是什么 并行接口:一次传输多个bit.常见25针接口. 并口通信 /// <summary>/// 并口通信/// </summary>public interface I ...

  2. C#版OPOS打印(基于北洋OPOS SDK二次开发包,支持EPSON和北洋、佳博、商祺等支持标准ESC/POS指令的POS打印机)

     C#版OPOS打印 基于北洋OPOS SDK二次开发包,支持EPSON和北洋.佳博.商祺等支持标准ESC/POS指令的POS打印机 支持并口,串口,网口,USB口,驱动方式等多种端口 支持开关钱箱 ...

  3. EPSON ESC/POS打印机指令

    原文地址::http://blog.csdn.net/feng88724/article/details/17474351 相关文章 1.微型热敏打印机指令集----https://wenku.bai ...

  4. c# 中崎_C#版OPOS打印(基于北洋OPOS SDK二次开发包,支持EPSON和北洋、佳博、商祺等支持标准ESC/POS指令的POS打印机)...

    C#版OPOS打印(基于北洋OPOS SDK二次开发包,支持EPSON和北洋.佳博.商祺等支持标准ESC/POS指令的POS打印机) 收藏 C#版OPOS打印 基于北洋OPOS SDK二次开发包,支持 ...

  5. 基于北洋OPOS SDK二次开发包,支持EPSON和北洋、佳博、商祺等支持标准ESC/POS指令的POS打印机

    C#版OPOS打印 基于北洋OPOS SDK二次开发包,支持EPSON和北洋.佳博.商祺等支持标准ESC/POS指令的POS打印机 支持并口,串口,网口,USB口,驱动方式等多种端口 支持开关钱箱 支 ...

  6. [转]Java 实现 POS 打印机无驱打印

    来源:http://www.ibm.com/developerworks/cn/java/j-lo-pos/ Java 实现 POS 打印机无驱打印 文档选项 <tr valign=" ...

  7. Java 实现 POS 打印机无驱打印 【转】

    Java 对硬件的控制一直以来都不是其强项,特别是打印,Java 很难实现对 POS 打印机的直接控制,并判断打印是否成功.本文将探讨一种方法,讲述如何使用 Java 技术与网口的 POS 打印机连接 ...

  8. delphi控制POS打印机

    delphi控制POS打印机 delphi控制POS打印机 RPrinter为TextFile类型: SContent为TStringList类型. // 建立打印连接并打印数据 Assignfile ...

  9. java热敏POS打印机编程

    今天有时间,就整理一下关于java控制热敏POS打印机的一些注意事项,不然怕以后会忘记. 所谓热敏POS打印机,就是小超市的小票打印机.对于此打印机,我也只是半懂而已,如以下说的不对的地方,还请指正. ...

最新文章

  1. 第6周小组作业:软件测试和评估
  2. Redis的keys命令到底有多慢?
  3. Redis 缓存使用技巧和设计方案
  4. 走向通用智能的核心:任务树的建立
  5. LINUX正则表达式-- grep
  6. PostgreSQL源码分析
  7. 回答一位朋友关于 SAP SRM 行业 转 CRM 行业的咨询
  8. Sybase常见问题
  9. weightedrandomSamplers(1)
  10. 腾讯用微信、QQ 把微视送上了 App Store 第一 | 畅言
  11. solr4 mysql自动更新_solr7.4 定时增量更新数据-Go语言中文社区
  12. pandas读取Excel文件
  13. linux安装consul集群
  14. 数据库理论:计算机数据库技术在信息管理中的应用分析
  15. 常见的游戏有哪些分类?
  16. 农夫山泉又上热搜,虚假宣传、拒不认错让网友反感至极!
  17. 《MINECRAFT我的世界 新手完全攻略(第3版)》一1.1 注册与下载
  18. java 阿里云 发送短信功能实现
  19. 微博登录显示服务器解析失败怎么办,微博air登录失败, air无法登录的原因 -电脑资料...
  20. 《Linux Kernel Development》读书笔记

热门文章

  1. 【C】Data type
  2. php5.4 ksweb版本多少,KSWEBapp下载_KSWEB安卓版app下载3.61_一聚教程网
  3. 从一款芯片架构来看ip公司和soc公司是什么?
  4. 哪些网站租用服务器需要接入大带宽
  5. 在eclipse中配置Tomcat详细配置
  6. Unity 之 实现读取代码写进Word文档功能实现 -- 软著脚本生成工具
  7. 一文读懂MES是什么,浅谈EMS系统带给企业的好处
  8. 编程,因为懂得,所以热爱
  9. 植物微生物组文章目录(2020.01)
  10. 头条搜索SEO优化规则解析