android nv位图打印机_通过C#中的comport将位图图像打印到pos打印机
我是通过以下方式通过串口直接将收据打印到POS打印机,SerialPort port = new SerialPort("com6",9100,Parity.None,8,StopBits.One);
port.Open();
port.Write("Some Text");
port.Close();
我的问题是我将如何使用上述方法打印位图图像?任何帮助将不胜感激.
我还没有决定使用Microsoft POS for.net,因为它很慢并且需要时间来初始化打印机,客户不喜欢等待.
谢谢.
这应该会从位图中获取一个您可以发送到打印机的字符串:
public string Getlogo()
{
string logo = "";
if (!File.Exists(@"C:\bitmap.bmp"))
return null;
BitmapData data = GetBitmapData(@"C:\bitmap.bmp");
BitArray dots = data.Dots;
byte[] width = BitConverter.GetBytes(data.Width);
int offset = 0;
MemoryStream stream = new MemoryStream();
BinaryWriter bw = new BinaryWriter(stream);
bw.Write((char)0x1B);
bw.Write('@');
bw.Write((char)0x1B);
bw.Write('3');
bw.Write((byte)24);
while (offset < data.Height)
{
bw.Write((char)0x1B);
bw.Write('*'); // bit-image mode
bw.Write((byte)33); // 24-dot double-density
bw.Write(width[0]); // width low byte
bw.Write(width[1]); // width high byte
for (int x = 0; x < data.Width; ++x)
{
for (int k = 0; k < 3; ++k)
{
byte slice = 0;
for (int b = 0; b < 8; ++b)
{
int y = (((offset / 8) + k) * 8) + b;
// Calculate the location of the pixel we want in the bit array.
// It'll be at (y * width) + x.
int i = (y * data.Width) + x;
// If the image is shorter than 24 dots,pad with zero.
bool v = false;
if (i < dots.Length)
{
v = dots[i];
}
slice |= (byte)((v ? 1 : 0) << (7 - b));
}
bw.Write(slice);
}
}
offset += 24;
bw.Write((char)0x0A);
}
// Restore the line spacing to the default of 30 dots.
bw.Write((char)0x1B);
bw.Write('3');
bw.Write((byte)30);
bw.Flush();
byte[] bytes = stream.ToArray();
return logo + Encoding.Default.GetString(bytes);
}
public BitmapData GetBitmapData(string bmpFileName)
{
using (var bitmap = (Bitmap)Bitmap.FromFile(bmpFileName))
{
var threshold = 127;
var index = 0;
double multiplier = 570; // this depends on your printer model. for Beiyang you should use 1000
double scale = (double)(multiplier/(double)bitmap.Width);
int xheight = (int)(bitmap.Height * scale);
int xwidth = (int)(bitmap.Width * scale);
var dimensions = xwidth * xheight;
var dots = new BitArray(dimensions);
for (var y = 0; y < xheight; y++)
{
for (var x = 0; x < xwidth; x++)
{
var _x = (int)(x / scale);
var _y = (int)(y / scale);
var color = bitmap.GetPixel(_x,_y);
var luminance = (int)(color.R * 0.3 + color.G * 0.59 + color.B * 0.11);
dots[index] = (luminance < threshold);
index++;
}
}
return new BitmapData()
{
Dots = dots,Height = (int)(bitmap.Height*scale),Width = (int)(bitmap.Width*scale)
};
}
}
public class BitmapData
{
public BitArray Dots
{
get;
set;
}
public int Height
{
get;
set;
}
public int Width
{
get;
set;
}
}
android nv位图打印机_通过C#中的comport将位图图像打印到pos打印机相关推荐
- tplink 跨路由器 共享打印机_焦作联通案例分享:跨网段通过防火墙共享打印机设置...
跨网段通过防火墙共享打印机设置 焦作联通网络部:薛培延 两个不同的局域网间如何实现打印机共享操作呢?以下将与大家分享一下处于同一个路由器连接下(即处于同一个域中的计算机之间)不同局域网段之间打印机共享 ...
- 打印机服务器纸张属性不显示,为什么我的打印机能在打印机服务器属性里设置自定义纸张大小,却无法? 爱问知识人...
问题原因及解决方法 1.在以往的Windows 98操作系统中,打印机属性里的"纸张大小"中有"自定义"一项.而Windows 2000和Windows XP中 ...
- php 热敏打印,从PHP打印到POS打印机
我们希望打印到运行apache的POS打印机.由于应用程序的设计和部署,应该从服务器进行打印(它应该检测订单并发送到不同的打印机和不同格式的打印-账单,厨房订单等--).出于这个原因和其他(例如来自i ...
- android nv位图打印机_如何打印位图图片
展开全部 常用的矢量图格式 *.bw是包含各种像素信息的一种黑白图形文件格32313133353236313431303231363533e58685e5aeb931333262383561式. *. ...
- android调用python框架_在Java中从Android应用程序执行Python脚本?
我正试图找到一种在Android中从Java代码执行Python脚本的方法.我对这个问题做了一个研究,但我发现的唯一问题是,如何在APK for android(Kivy e.t.c.)中转换pyth ...
- java windows 打印机_使用Java中的客户端计算机打印机(不是部署应用程序的服务器)进行打印...
我使用Spring开发了一个使用Java 8的应用程序 . 用户故事是客户端应该选择要打印的许多文档(PDF),然后按一个按钮并将它们全部打印到默认的客户端机器打印机(浏览器中的Ctrl P功能在尝试 ...
- python调用打印机打印图片_在python中通过图像发送到打印机上的文本
在 windows系统中使用 python,wx python和sqlite.我正在尝试打印一些证书/文凭/卡片,背景中有图像,上面有人/文字的名称. 我知道使用来自Pywin32的win32prin ...
- python 3d打印机_如何使用Python构建自己的CNC控制器和3D打印机
python 3d打印机 by Nikolay Khabarov 通过尼古拉·哈巴罗夫(Nikolay Khabarov) 如何使用Python构建自己的CNC控制器和3D打印机 (How you c ...
- python打印指定行数的分割线_在Python中的分隔线上打印列表元素
我正在尝试使用以下方法打印出Python路径文件夹: import sys print sys.path 输出是这样的: >>> print sys.path ['.', '/usr ...
最新文章
- 文件哈希审计工具md5deep/hashdeep
- 特性Attribute
- 在SQL中使用DEFAULT约束
- (18)css常用样式—定位属性
- 为什么volatile能保证有序性不能保证原子性
- 【Web学习笔记】easyui框架
- 小规模票表比对不通过_实用 | 增值税纳税申报比对失败怎么办?操作指南来啦...
- python label背景透明_如何使tkinter标签的背景透明,以便只看到文本?
- 多媒体计算机的媒体信息包括文字,多媒体计算机中的媒体信息是指什么
- java io 系列(转载skywang12345)
- vscode 突然无法切换输入法(切换中文输入法)
- CGAL::2D Arrangements
- 一文详解BQSR-碱基质量矫正原理和实战
- 我的第一个WFF项目
- HTML5+获取设备信息
- Python 实现 PDF转图片 图片转PDF
- 工商银行提前还房贷流程
- 豫让刺杀赵襄子故事原文/白话文翻译?士为知己者死,女为说己者容出自哪?
- 华为M3平板升级鸿蒙系统,华为m3平板 日版刷国行 没有重力感应怎么解决?(篇二)...
- firefox省流量攻略
热门文章
- “SEO是什么意思?”Kyw的通俗回答
- 实时渲染大赛太卷了,来看提前交卷的优秀参赛作品
- Hive 自定义UDF函数讲解
- jetson xiaver NX 安装tensorflow object detection api 遇到的tensorflow-addons 不能安装问题
- [react] addons
- 《Web 测试精要》- 第6章:浏览器控制台与调试方法
- win10系统 CAJ文件打不开 老弹出 File doesn't existed or can't be visited normally! 文件不存在或不能正常访问
- 学习云计算哪里好?云计算新的前景出路
- http响应最大时长 nginx_请问一下该如何用nginx 设置响应时间?
- Java入门教程:最全面最简单的Java基础教程