///   <summary>
/// POSPrinter的摘要说明。
/// 此类处理网络打印,使用了IP端口.
/// </summary>
public class NetPOSPrinter
{
string ipPort = "192.168.1.212"; public NetPOSPrinter()
{ } public NetPOSPrinter(string IpPort)
{
this.ipPort = IpPort;//打印机端口
} /// <summary>
/// 输出文字到打印机
/// </summary>
/// <param name= "str "> 要打印的内容 </param>
public void PrintLine(string str)
{
//建立连接
IPAddress ipa = IPAddress.Parse(ipPort);
IPEndPoint ipe = new IPEndPoint(ipa, );//9100为小票打印机指定端口
Socket soc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
soc.Connect(ipe); //string str= "hello,123456789,大家好! "; byte[] b = System.Text.Encoding.GetEncoding("GB2312").GetBytes(str);
soc.Send(b);
soc.Close();
} public void PrintPic(Bitmap bmp)
{
//把ip和端口转化为IPEndPoint实例
IPEndPoint ip_endpoint = new IPEndPoint(IPAddress.Parse(ipPort), );
//创建一个Socket
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//连接到服务器
socket.Connect(ip_endpoint);
//应对同步Connect超时过长的办法,猜测应该是先用异步方式建立以个连接然后,
//确认连接是否可用,然后报错或者关闭后,重新建立一个同步连接
//socket.SendTimeout = 1000; //初始化打印机,并打印
Byte[] byte_send = Encoding.GetEncoding("gb18030").GetBytes("\x1b\x40");
//发送测试信息
socket.Send(byte_send, byte_send.Length, ); byte[] data = new byte[] { 0x1B, 0x33, 0x00 };
socket.Send(data, data.Length, );
data[] = (byte)'\x00';
data[] = (byte)'\x00';
data[] = (byte)'\x00'; // Clear to Zero. Color pixelColor;
// ESC * m nL nH 点阵图
byte[] escBmp = new byte[] { 0x1B, 0x2A, 0x00, 0x00, 0x00 };
escBmp[] = (byte)'\x21';
//nL, nH
escBmp[] = (byte)(bmp.Width % );
escBmp[] = (byte)(bmp.Width / );
// data
for (int i = ; i < (bmp.Height / ) + ; i++)
{
socket.Send(escBmp, escBmp.Length, ); for (int j = ; j < bmp.Width; j++)
{
for (int k = ; k < ; k++)
{
if (((i * ) + k) < bmp.Height) // if within the BMP size
{
pixelColor = bmp.GetPixel(j, (i * ) + k);
if (pixelColor.R == )
{
data[k / ] += (byte)( >> (k % ));
}
}
}
socket.Send(data, , );
data[] = (byte)'\x00';
data[] = (byte)'\x00';
data[] = (byte)'\x00'; // Clear to Zero.
}
byte_send = Encoding.GetEncoding("gb18030").GetBytes("\n");
//发送测试信息
socket.Send(byte_send, byte_send.Length, );
} // data byte_send = Encoding.GetEncoding("gb18030").GetBytes("\n");
//发送测试信息
socket.Send(byte_send, byte_send.Length, );
socket.Close();
} /// <summary>
/// 打开钱箱
/// </summary>
public void OpenCashBox()
{
IPAddress ipa = IPAddress.Parse(ipPort);
IPEndPoint ipe = new IPEndPoint(ipa, );//9100为小票打印机指定端口
Socket soc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
soc.Connect(ipe);
char[] c = { Convert.ToChar(), 'p', Convert.ToChar(), Convert.ToChar(), Convert.ToChar() };
byte[] b = System.Text.Encoding.GetEncoding("GB2312").GetBytes(c);
soc.Send(b);
soc.Close();
}
}

C# 使用IP端口网络打印图片的更多相关文章

  1. android 登录和设置IP/端口功能

    本人第一个Android开发功能:登录以及设置IP/端口. 本人是j2ee开发工程师,所以这个可能有一些处理不太完善的地方,欢迎评论在下面,我会认真改进的. 首先是配置strings.xml文件添加用 ...

  2. 本机ip+端口不能访问web server,外部却可以访问

    本机ip+端口不能访问web server,外部却可以访问! 这个奇葩的问题困扰了我好久,别人通过ip访问我的server一切正常,自己却访问不了,一度怀疑win10的问题,久寻无果! 最后关闭ads ...

  3. Tomcat8 localhost+端口可以访问Manager APP,而IP+端口不可以访问 解决办法

    localhost + 端口可以正常访问Manager APP,而IP + 端口不能访问Manager APP,报403错误.(我的主机环境是Ubuntu16.04) 前提是你已经配好了tomcat_ ...

  4. (转)建站知识:域名/ 空间/ IP/ 端口之间的关系

    先说域名解析吧,比如说你的域名是 www.sunnymould.com,这个域名对应着一个IP地址,域名解析就是把上面的域名转换成这个IP地址的过程,这样你就可以域名访问了上面地址上的内容了. 端口映 ...

  5. 避免 TCP/IP 端口耗尽

    转载:http://www.cnblogs.com/tianzhiliang/archive/2011/06/27/2091214.html 当客户端启动到服务器的 TCP/IP 套接字连接时,客户端 ...

  6. nginx代理tomcat后,tomcat获取真实(非proxy,非别名)nginx服务端ip端口的解决方案

    nginx代理tomcat后,tomcat获取服务端ip端口的解决方案 1.注意修改nginx配置代理,标红地方 #user nginx; worker_processes ; error_log l ...

  7. Nginx配置二级目录/路径 映射不同的反向代理和规避IP+端口访问

       当配置Nginx来映射不同的服务器 可以通过二级路径来反向代理 来解决一个外网端口实现多个服务访问. 配置如下: server { listen ; server_name demo.domai ...

  8. nginx配置二级目录,反向代理不同ip+端口

    场景描述: 通过二级目录(虚拟目录,应用程序)的方式访问同一ip+端口的不同应用,例如location是用户使用页面,location/admin/是管理页面,location部署在192.168.1 ...

  9. linux下使用iptables统计ip/端口流量

    1.添加ip/端口的流量统计 入网流量: iptables -A INPUT -d 出网流量: iptables -A OUTPUT -s 2.查看流量统计信息 iptables -L -v -n - ...

随机推荐

  1. 永远不要去B网(Bittrex.com)

    永远不要去Bittrex.com,没见过这么垃圾的服务! 注册之后基本资料就不能修改了,结果不能提现,充值却是可以充值,就跟今年初禁比特币时的垃圾火币网一样,只进不出,去他奶奶的! 随后网站提示可以高 ...

  2. Ceph源码解析:概念

    Peering:一个PG内的所有副本通过PG日志来达成数据一致的过程.(某PG如果处于Peering将不能对外提供读写服务) Recovery:根据Peering的过程中产生的.依据PG日志推算出的不 ...

  3. Javascript中的对象(二)

    Javascript是一种基于原型的对象语言,而不是我们比较熟悉的,像C#语言基于类的面向对象的语言.在前一篇文章中,我们已经介绍了Javascript中对象定义的创建.接下来我们来介绍一下Javas ...

  4. php+wamp环境部署本地Web应用

    1.创建新的项目(project),创建完成之后单击工具栏的应用运行/调试(Select Run/Debug Configuration)的下拉菜单弹出 Edit Cofigurations选项,单击 ...

  5. Lateral View使用指南

    https://blog.csdn.net/sunnyyoona/article/details/62894761 select sum(pitem) from (select map_values( ...

  6. NHibernate中几个集合的选择

    NHibernate是从Hibernate移植过来的基于NET平台的一个ORM框架,同时跟这框架一起的还有一个开源库,叫做Iesi.Collections,这个库扩展了NET平台下面的几个集合,所谓集 ...

  7. chkconfig 检查、设置系统的各种服务

    chkconfig 检查.设置系统的各种服务 学习了:http://man.linuxde.net/chkconfig chkconfig --add 某某服务

  8. 在android中画圆形图片的几种办法

    在开发中常常会有一些需求,比方显示头像,显示一些特殊的需求,将图片显示成圆角或者圆形或者其它的一些形状. 可是往往我们手上的图片或者从server获取到的图片都是方形的.这时候就须要我们自己进行处理, ...

  9. 在weblogic上配置数据源

    转自:http://blog.csdn.net/weijie_search/article/details/2756585 旁白 这是在weblogic9.0+mysql5.1的环境下配置的数据源.其 ...

  10. Win7开机提示group policy client无法登陆怎么办

    1 开机按F8,进入安全模式 2 进入系统之后运行注册表,定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Prof ...