POS打印机系列之 = 网口
在熟悉了串口、并口打印后,网口打印就容易明白了。与前两者的区别是:网口通过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打印机系列之 = 网口相关推荐
- POS打印机系列之 = 并口
并口是什么 并行接口:一次传输多个bit.常见25针接口. 并口通信 /// <summary>/// 并口通信/// </summary>public interface I ...
- C#版OPOS打印(基于北洋OPOS SDK二次开发包,支持EPSON和北洋、佳博、商祺等支持标准ESC/POS指令的POS打印机)
C#版OPOS打印 基于北洋OPOS SDK二次开发包,支持EPSON和北洋.佳博.商祺等支持标准ESC/POS指令的POS打印机 支持并口,串口,网口,USB口,驱动方式等多种端口 支持开关钱箱 ...
- EPSON ESC/POS打印机指令
原文地址::http://blog.csdn.net/feng88724/article/details/17474351 相关文章 1.微型热敏打印机指令集----https://wenku.bai ...
- c# 中崎_C#版OPOS打印(基于北洋OPOS SDK二次开发包,支持EPSON和北洋、佳博、商祺等支持标准ESC/POS指令的POS打印机)...
C#版OPOS打印(基于北洋OPOS SDK二次开发包,支持EPSON和北洋.佳博.商祺等支持标准ESC/POS指令的POS打印机) 收藏 C#版OPOS打印 基于北洋OPOS SDK二次开发包,支持 ...
- 基于北洋OPOS SDK二次开发包,支持EPSON和北洋、佳博、商祺等支持标准ESC/POS指令的POS打印机
C#版OPOS打印 基于北洋OPOS SDK二次开发包,支持EPSON和北洋.佳博.商祺等支持标准ESC/POS指令的POS打印机 支持并口,串口,网口,USB口,驱动方式等多种端口 支持开关钱箱 支 ...
- [转]Java 实现 POS 打印机无驱打印
来源:http://www.ibm.com/developerworks/cn/java/j-lo-pos/ Java 实现 POS 打印机无驱打印 文档选项 <tr valign=" ...
- Java 实现 POS 打印机无驱打印 【转】
Java 对硬件的控制一直以来都不是其强项,特别是打印,Java 很难实现对 POS 打印机的直接控制,并判断打印是否成功.本文将探讨一种方法,讲述如何使用 Java 技术与网口的 POS 打印机连接 ...
- delphi控制POS打印机
delphi控制POS打印机 delphi控制POS打印机 RPrinter为TextFile类型: SContent为TStringList类型. // 建立打印连接并打印数据 Assignfile ...
- java热敏POS打印机编程
今天有时间,就整理一下关于java控制热敏POS打印机的一些注意事项,不然怕以后会忘记. 所谓热敏POS打印机,就是小超市的小票打印机.对于此打印机,我也只是半懂而已,如以下说的不对的地方,还请指正. ...
最新文章
- 第6周小组作业:软件测试和评估
- Redis的keys命令到底有多慢?
- Redis 缓存使用技巧和设计方案
- 走向通用智能的核心:任务树的建立
- LINUX正则表达式-- grep
- PostgreSQL源码分析
- 回答一位朋友关于 SAP SRM 行业 转 CRM 行业的咨询
- Sybase常见问题
- weightedrandomSamplers(1)
- 腾讯用微信、QQ 把微视送上了 App Store 第一 | 畅言
- solr4 mysql自动更新_solr7.4 定时增量更新数据-Go语言中文社区
- pandas读取Excel文件
- linux安装consul集群
- 数据库理论:计算机数据库技术在信息管理中的应用分析
- 常见的游戏有哪些分类?
- 农夫山泉又上热搜,虚假宣传、拒不认错让网友反感至极!
- 《MINECRAFT我的世界 新手完全攻略(第3版)》一1.1 注册与下载
- java 阿里云 发送短信功能实现
- 微博登录显示服务器解析失败怎么办,微博air登录失败, air无法登录的原因 -电脑资料...
- 《Linux Kernel Development》读书笔记