POS E58 小票打印机,重叠打印如何才无效?

yxtyxt3311 2010-05-12 09:06:42
POS E58 小票打印机

选择重叠打印 ESC G
取消重叠打印 ESC H

重叠打印如何才有效,怎么打,都不能打印成同一行,有没有把小票滚回滚的指令?

StringBuilder sb = new StringBuilder();

sb.AppendLine("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");

sb.Append((char)0x1B);
sb.Append((char)0x47); //选择重叠打印
sb.Append("ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCDEF");
sb.Append((char)0x1B);
sb.Append((char)0x48); //取消重叠打印

sb.Append((char)0x0A); //换行

sb.AppendLine("BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB");
sw.Write(sb.ToString());
...全文
570 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
afeng124 2010-05-21
  • 打赏
  • 举报
回复

/// <summary>
/// POS字体样式
/// </summary>
///
public uint POS_FONT_TYPE_STANDARD = 0x00;// 标准 ASCII
public uint POS_FONT_TYPE_COMPRESSED = 0x01;// 压缩 ASCII
public uint POS_FONT_TYPE_UDC = 0x02; // 用户自定义字符
public uint POS_FONT_TYPE_CHINESE = 0x03; // 标准 “宋体”
public uint POS_FONT_STYLE_NORMAL = 0x00; // 正常
public uint POS_FONT_STYLE_BOLD = 0x08; // 加粗
public uint POS_FONT_STYLE_THIN_UNDERLINE = 0x80; // 1点粗的下划线
public uint POS_FONT_STYLE_THICK_UNDERLINE = 0x100; // 2点粗的下划线
public uint POS_FONT_STYLE_UPSIDEDOWN = 0x200; // 倒置(只在行首有效)
public uint POS_FONT_STYLE_REVERSE = 0x400; // 反显(黑底白字)
public uint POS_FONT_STYLE_SMOOTH = 0x800; // 平滑处理(用于放大时)
public uint POS_FONT_STYLE_CLOCKWISE_90 = 0x1000; // 每个字符顺时针旋转 90 度

/// <summary>
/// 把将要打印的字符串数据发送到打印缓冲区中,并指定X 方向(水平)上的绝对起始点位置,
/// 指定每个字符宽度和高度方向上的放大倍数、类型和风格。
/// </summary>
/// <param name="pszString">指向以 null 结尾的字符串缓冲区</param>
/// <param name="nOrgx">指定 X 方向(水平)的起始点位置离左边界的点数。</param>
/// <param name="nWidthTimes">指定字符的宽度方向上的放大倍数。可以为 1到 6。</param>
/// <param name="nHeightTimes">指定字符高度方向上的放大倍数。可以为 1 到 6。</param>
/// <param name="nFontType">指定字符的字体类型。</param>
/// <param name="nFontStyle">指定字符的字体风格。</param>
/// <returns></returns>

[DllImport("POSDLL.dll", SetLastError = true)]
public static extern IntPtr POS_S_TextOut([MarshalAs(UnmanagedType.LPStr)]string pszString,
uint nOrgx, uint nWidthTimes, uint nHeightTimes,
uint nFontType, uint nFontStyle);

/// <summary>
/// 设置POS的打印模式 (只有两种 页模式和标准模式)
/// </summary>
/// <param name="nPrintMode">
/// POS_PRINT_MODE_STANDARD 0x00 标准模式(行模式)
/// POS_PRINT_MODE_PAGE 0x01 页模式
/// POS_PRINT_MODE_BLACK_MARK_LABEL 0x02 黑标记标签模式
/// POS_PRINT_MODE_WHITE_MARK_LABEL 0x03 白标记标签模式 </param>
/// <returns></returns>
[DllImport("POSDLL.dll", SetLastError = true)]
public static extern IntPtr POS_SetMode(uint nPrintMode);
/// <summary>
/// 设置字符的行高。
/// </summary>
/// <param name="nDistance">指定行高点数。可以为 0 到 255。每点的距离与打印头分辨率相关。</param>
/// <returns></returns>
[DllImport("POSDLL.dll", SetLastError = true)]
public static extern IntPtr POS_SetLineSpacing(uint nDistance);
/// <summary>
/// 设置字符的右间距(相邻两个字符的间隙距离)。
/// </summary>
/// <param name="nDistance">指定右间距的点数。可以为 0 到 255。每点的距离与打印头分辨率相关。</param>
/// <returns></returns>
[DllImport("POSDLL.dll", SetLastError = true)]
public static extern IntPtr POS_SetRightSpacing(int nDistance);
afeng124 2010-05-21
  • 打赏
  • 举报
回复

BeiYangOPOS.POS_S_TextOut(dr["TableNo"].ToString() + " " + MenuText, 0, 1, 1, opos.POS_FONT_TYPE_STANDARD, opos.POS_FONT_STYLE_BOLD);
BeiYangOPOS.POS_S_TextOut(" --------------", 0, 1, 1, opos.POS_FONT_TYPE_STANDARD, opos.POS_FONT_STYLE_NORMAL);
BeiYangOPOS.POS_FeedLine();

afeng124 2010-05-21
  • 打赏
  • 举报
回复

if (dr["OrderType"].ToString() == "赠")
{
string MenuText = string.Empty;
if (decimal.Parse(dr["DiscAmount"].ToString()) > 0)
MenuText = "*" + dr["MenuChName"].ToString();
else MenuText = dr["MenuChName"].ToString();
BeiYangOPOS.POS_S_TextOut(dr["TableNo"].ToString() + " " + MenuText, 0, 1, 1, opos.POS_FONT_TYPE_STANDARD, opos.POS_FONT_STYLE_BOLD);
BeiYangOPOS.POS_S_TextOut(" --------------", 0, 1, 1, opos.POS_FONT_TYPE_STANDARD, opos.POS_FONT_STYLE_NORMAL);
BeiYangOPOS.POS_FeedLine();
string PriceAndNum = dr["MenuPrice"].ToString() + "*" + dr["MenuNum"].ToString();
BeiYangOPOS.POS_S_TextOut(PriceAndNum.PadRight(16) + " " +
dr["SaleAmount"].ToString().PadRight(10), 0, 1, 1, opos.POS_FONT_TYPE_STANDARD, opos.POS_FONT_STYLE_BOLD);
BeiYangOPOS.POS_FeedLine();
}
不换行就行了,你看:
BeiYangOPOS.POS_S_TextOut(dr["TableNo"].ToString() + " " + MenuText, 0, 1, 1, opos.POS_FONT_TYPE_STANDARD, opos.POS_FONT_STYLE_BOLD);
BeiYangOPOS.POS_S_TextOut(" --------------", 0, 1, 1, opos.POS_FONT_TYPE_STANDARD, opos.POS_FONT_STYLE_NORMAL);
BeiYangOPOS.POS_FeedLine();
这样就实现了在打的字中间画了一条线
yxtyxt3311 2010-05-21
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ydsunny 的回复:]
现在的热敏打印机,有"回滚"功能的不多吧.
你应该在代码里组织好再打印,通过PrintDocument打印输出!


----------
三易通软件(三易通服装进销存,三易通服装进销存软件,三易通服装进销存管理软件,三易通服装进销存管理系统,三易通服装店软件,三易通服装店管理软件,三易通服装店管理系统,三易通服装销售软件,三易通服装管理软件,三易通服装销售管理软件,三易通服装销售管理系……
[/Quote]


还没研究过在热敏打印机可以发PrintDocument,有这种指令吗?
yxtyxt3311 2010-05-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 gz530 的回复:]
晕,你这个就把他搞成一行来处理就可以了,干嘛还搞什么重叠呢?
现在很多小票机都没有做回纸功能,把你的内容弄得一行处理就OK了,别把自己搞那么累
[/Quote]

不是我想哟,公司要求的哟..非要把那个字放大,放大了,肯定要占两行了,非要那个字,占两行,而且不能有空行.那就要把放大字这行,往上移一行了...
九章落地 2010-05-14
  • 打赏
  • 举报
回复
现在的热敏打印机,有"回滚"功能的不多吧.
你应该在代码里组织好再打印,通过PrintDocument打印输出!


----------
三易通软件(三易通服装进销存,三易通服装进销存软件,三易通服装进销存管理软件,三易通服装进销存管理系统,三易通服装店软件,三易通服装店管理软件,三易通服装店管理系统,三易通服装销售软件,三易通服装管理软件,三易通服装销售管理软件,三易通服装销售管理系统,三易通服装零售管理软件,三易通服装零售管理系统,三易通服装店收银软件)http://www.3etsoft.cn
Flavoring 2010-05-14
  • 打赏
  • 举报
回复
晕,你这个就把他搞成一行来处理就可以了,干嘛还搞什么重叠呢?
现在很多小票机都没有做回纸功能,把你的内容弄得一行处理就OK了,别把自己搞那么累
yxtyxt3311 2010-05-14
  • 打赏
  • 举报
回复
哎,没有人做过这块呀....
缭绕飘渺 2010-05-13
  • 打赏
  • 举报
回复
找硬件提供商啊
他们有技术支持的
yxtyxt3311 2010-05-13
  • 打赏
  • 举报
回复
网上找的"ESC/POS命令集"
说明书没有这一条,网上提到的都是很片面的

http://www.epson.com.cn/store/onlineManual/299/2635/REF_G/ref_g/apcom_3.htm
http://hi.baidu.com/lzycome/blog/item/1e43c0da5ad58dd8b6fd48ce.html

只说重叠打印,看不出效果..
doubleu2005 2010-05-12
  • 打赏
  • 举报
回复
小票打印机没有回滚功能吧?
重叠打印是如何打印?你要看看说明书
JacksonFox 2010-05-12
  • 打赏
  • 举报
回复
有没有试过OPOS驱动?
yxtyxt3311 2010-05-12
  • 打赏
  • 举报
回复
重叠打印能不能打印出这样的效果

我要的效果就是
a"字"
b

"字"的左边上半边是a,下半边是b

如何弄????
mayonglong 2010-05-12
  • 打赏
  • 举报
回复
这应该跟你的机器有关的吧~~机器提供的打印指令~
yxtyxt3311 2010-05-12
  • 打赏
  • 举报
回复
投错贴了,无人问津..

110,547

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧