C# 热敏打印机 Socket 网络链接 打印 图片 (二)

1 IPAddress ip = IPAddress.Parse("192.168.1.212");
2             IPEndPoint iport = new IPEndPoint(ip, 9100);//9100为小票打印机指定端口
3             Socket soc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
4             soc.Connect(iport);
5             bitmap = new Bitmap(@"D:\300X200.bmp");
6             soc.Send(bmpToByte(bitmap));
7             soc.Close();
 1 public static byte[] bmpToByte(Bitmap bmp)
 2         {
 3             int h = bmp.Height / 24 + 1;
 4             int w = bmp.Width;
 5             byte[][] all = new byte[2 + 2 * h + h * w][];
 6
 7             all[0] = new byte[] { 0x1B, 0x33, 0x00 };
 8
 9             Color pixelColor;
10             // ESC * m nL nH 点阵图
11             byte[] escBmp = new byte[] { 0x1B, 0x2A, 0x21, (byte)(w % 256), (byte)(w / 256) };
12
13             // 每行进行打印
14             for (int i = 0; i < h; i++)
15             {
16                 all[i * (w + 2) + 1] = escBmp;
17                 for (int j = 0; j < w; j++)
18                 {
19                     byte[] data = new byte[] { 0x00, 0x00, 0x00 };
20                     for (int k = 0; k < 24; k++)
21                     {
22                         if (((i * 24) + k) < bmp.Height)
23                         {
24                             pixelColor = bmp.GetPixel(j, (i * 24) + k);
25                             if (pixelColor.R == 0)
26                             {
27                                 data[k / 8] += (byte)(128 >> (k % 8));
28                             }
29                         }
30                     }
31                     all[i * (w + 2) + j + 2] = data;
32                 }
33                 //换行
34                 all[(i + 1) * (w + 2)] = PrinterCmdUtils.nextLine(1);
35             }
36             all[h * (w + 2) + 1] = PrinterCmdUtils.nextLine(2);
37
38             return byteMerger(all);
39         }
 1 public static byte[] byteMerger(byte[][] byteList)
 2         {
 3             int Length = 0;
 4             for (int i = 0; i < byteList.Length; i++)
 5             {
 6                 Length += byteList[i].Length;
 7             }
 8             byte[] result = new byte[Length];
 9
10             int index = 0;
11             for (int i = 0; i < byteList.Length; i++)
12             {
13                 byte[] nowByte = byteList[i];
14                 for (int k = 0; k < byteList[i].Length; k++)
15                 {
16                     result[index] = nowByte[k];
17                     index++;
18                 }
19             }
20             return result;
21         }

转自:http://www.cnblogs.com/rinack/p/4838963.html

时间: 2024-11-05 07:15:50

C# 热敏打印机 Socket 网络链接 打印 图片 (二)的相关文章

C# 热敏打印机 Socket 网络链接 打印 图片

C# 热敏打印机 Socket 网络链接 打印 图片 (一) http://www.cnblogs.com/rinack/p/4838211.html C# 热敏打印机 Socket 网络链接 打印 图片 (二) http://www.cnblogs.com/rinack/p/4838963.html

C# 热敏打印机 Socket 网络链接 打印 图片 (一)

using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; namespace POSPrinter { /// <summary> /// POSPrinter的摘要说明. /// 此类处理网络打印,使用了IP端口. /// </summary&

Linux Socket 网络编程

Linux下的网络编程指的是socket套接字编程,入门比较简单.在学校里学过一些皮毛,平时就是自学玩,没有见识过真正的socket编程大程序,比较遗憾.总感觉每次看的时候都有收获,但是每次看完了之后,过段时间不看,重新拾起这些知识的时候又要从头开始,所以,在这里做个笔记也算是做个模板,以后可以直接从某一个阶段开始接着玩... 1. socket套接字介绍 socket机制其实就是包括socket, bind, listen, connect, accept等函数的方法,其通过指定的函数实现不同

socket网络间通信初识

NSOperation: 1. 指定同一时间最大执行的操作数 queue.max…… 2. 设定队列中的任务时间的依赖关系 task1 依赖于 task2: task2 —> task1 3. 回到主线程(找到如何获取主队列的方式)[NSOperation mainQueue]: keyword: iOS main queue Socket: 网络中的两个程序通过双向的通讯,达到交换数据的目的. 发送(客户端):终端控制台 接收(服务器端):  终端控制台(sever.py) 资源:网页(www

HTML5移动开发之路(11)——链接,图片,表格,框架

本文为 兄弟连IT教育 机构官方 HTML5培训 教程,主要介绍:HTML5移动开发之路(11)--链接,图片,表格,框架 一.HTML是什么? HTML(hypertext mark-uplanguage)是 超文本标记语言, 主要的用处是做网页, 可以在网页上显示 文字.图像.视频.声音- HTML只能做静态网页 二.HTML发展历史 html之父-Tim Berners-Lee蒂姆·伯纳斯-李(Tim Berners-Lee)1955年6月8日出生于英国伦敦 关于详细请看:http://b

Python面向对象进阶和socket网络编程-day08

写在前面 上课第八天,打卡: 为什么坚持?想一想当初: 一.面向对象进阶 - 1.反射补充 - 通过字符串去操作一个对象的属性,称之为反射: - 示例1: class Chinese: def __init__(self,name): self.name=name p = Chinese('standby') # 实例化一个对象 print(p) # 打印这个对象 --- <__main__.Chinese object at 0x0000000000B3A978> - 示例2: >&g

socket 网络编程快速入门(一)教你编写基于UDP/TCP的服务(客户端)通信

因为UNIX和Win的socket大同小异,为了方便和大众化,这里先介绍Winsock编程. socket 网络编程的难点在入门的时候就是对基本函数的了解和使用,因为这些函数的结构往往比较复杂,参数大部分都是结构体,令人难以记忆和理解. 但是一旦我们知道这些函数包括其参数的具体含义,socket网络编程也就变得不是那么复杂.这里不赘述 具体函数的详细含义,网络上有很多的文章,同时笔者建议大家参考 MSDN,对返回值,参数等会有更好的理解. 以下均为单线程的简单实例,多线程的请关注下一篇文章. (

socket 网络编程

一,网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机. 而TCP层则提供面向应用的可靠(tcp)的或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的. 目前较为流行的网络编程模型是客户机/服务器(C/S)结构.即通信双方一方作为服务器等待客户提出请求并予以响应.客户则

java socket 网络编程

一,网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机. 而TCP层则提供面向应用的可靠(tcp)的或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的. 目前较为流行的网络编程模型是客户机/服务器(C/S)结构.即通信双方一方作为服务器等待客户提出请求并予以响应.客户则