API打印POS机

fengchuippliang 2009-06-17 02:28:42

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.IO;
using System.Windows.Forms;
namespace qk_oa
{
class Print
{
[StructLayout(LayoutKind.Sequential)]
private struct OVERLAPPED
{
int Internal;
int InternalHigh;
int Offset;
int OffSetHigh;
int hEvent;
}
[DllImport("kernel32.dll")]
private static extern int CreateFile(
string lpFileName,
uint dwDesiredAccess,
int dwShareMode,
int lpSecurityAttributes,
int dwCreationDisposition,
int dwFlagsAndAttributes,
int hTemplateFile
);
[DllImport("kernel32.dll")]
private static extern bool WriteFile(
int hFile,
byte[] lpBuffer,
int nNumberOfBytesToWrite,
ref int lpNumberOfBytesWritten,
ref OVERLAPPED lpOverlapped
);
[DllImport("kernel32.dll")]
private static extern bool CloseHandle(
int hObject
);
private int iHandle;
public bool Open()
{
iHandle = CreateFile("lpt1", 0x40000000, 0, 0, 3, 0, 0);
if (iHandle != -1)
{
return true;
}
else
{
return false;
}
}
public bool Write(String Mystring)
{
if (iHandle != -1)
{
OVERLAPPED x = new OVERLAPPED();
int i = 0;
byte[] mybyte = System.Text.Encoding.Default.GetBytes(Mystring);
return WriteFile(iHandle, mybyte, mybyte.Length,
ref i, ref x);
}
else
{
throw new Exception("端口未打开!");
}
}
public bool Close()
{
return CloseHandle(iHandle);
}
}
}


以上是我的打印类,可以满足我的打印需求,但是现在有个问题,就是打印出来的字体的原因,倒是很多字母和数字看不清楚,很容易混淆。有没有高手能帮个忙,告诉下在哪限定输出的字体,最好有源代码,因为本人是菜鸟,对于API更是一窍不通。谢谢了
...全文
60 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangjt18 2011-07-07
  • 打赏
  • 举报
回复
up 问题解决?
fengchuippliang 2009-07-02
  • 打赏
  • 举报
回复
并没有让我十分满意的答案,很遗憾。不过算是解决了燃煤直接了吧
jdhlowforever 2009-07-01
  • 打赏
  • 举报
回复
不错.学习!
fengchuippliang 2009-07-01
  • 打赏
  • 举报
回复
楼上说的方法,我试了,效果稍微好点,但是还是没有解决根本问题。。。我主要是想改打印的字体类型和字体大小。。。难道就没有高手能解决吗?CSDN的高手们呢???
ximi82878 2009-06-30
  • 打赏
  • 举报
回复
前两天碰到个哥们,他说可能是计算机默认字体的关系,你这样改下看看、

byte[] mybyte = System.Text.Encoding.GetEncoding("GB2312").GetBytes(Mystring);


或者用UTF-8看看。。。不知道能不能解决
fengchuippliang 2009-06-27
  • 打赏
  • 举报
回复
是并口的,需要装驱动,但是好像这个跟驱动没什么关系吧
cl98 2009-06-26
  • 打赏
  • 举报
回复
看上去好像是并口的,不知道你的POS是什么品牌和型号,如果是EPSON的,可以使用官方的打印驱动,然后做一个printDoc就可以控制字体和文字大小了
Lost_Ben 2009-06-26
  • 打赏
  • 举报
回复
LZ你是想直接往并口发送数据打印还是装驱动程序打印?后者可以使用.net打印控件设置字体。前者貌似设置不了。

我最近做的程序往并口发送打印控制码控制打印,没有发现控制字体的打印指令
angel6709 2009-06-26
  • 打赏
  • 举报
回复
ding
oneatree 2009-06-26
  • 打赏
  • 举报
回复
API 应该有设置字体
龙宜坡 2009-06-26
  • 打赏
  • 举报
回复
不知道用图片方式打印是否行得通,可以一试!
wuhongxj 2009-06-26
  • 打赏
  • 举报
回复
帮顶。。也学习一下
ximi82878 2009-06-26
  • 打赏
  • 举报
回复
继续帮你顶,我就不信了
ximi82878 2009-06-23
  • 打赏
  • 举报
回复
继续帮你顶~多给点分哈
saturn4263195 2009-06-18
  • 打赏
  • 举报
回复
LZ说得POS机打印问题,
我以前做个超市的收银项目时打单也遇到过,
关注!
qiweihero 2009-06-18
  • 打赏
  • 举报
回复
用一些特殊的方法来实现它的打印吧,正在关注这个问题
kangbo818 2009-06-18
  • 打赏
  • 举报
回复
帮顶
fengchuippliang 2009-06-18
  • 打赏
  • 举报
回复
难道就没有人能帮解决下吗??高手都去哪了
biny237 2009-06-17
  • 打赏
  • 举报
回复
顶,有用,不过还没用,也不会解决。。。
fengchuippliang 2009-06-17
  • 打赏
  • 举报
回复
楼上的意思是说我如果想改变字体的话就必须换种打印方法吗??
加载更多回复(4)

110,571

社区成员

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

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

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