ByRef FingerBuf As string
站在用户的角度思考问题,与客户深入沟通,找到临夏网站设计与临夏网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、网站建设、外贸网站建设、企业官网、英文网站、手机端网站、网站推广、主机域名、网页空间、企业邮箱。业务覆盖临夏地区。
指针传递要用 ByRef,另外 FingerBuf 参数需要缓存区,不得小于256×304字节
这个应该是打印机命令格式,不同的打印机命令格式不尽相同,你可以找这一款打印机的命令说明看一看,一般光盘里有带的,或者到官网上下也可以。下面一些你可以先看看:
英文模式下的命令
代码 功能
CR 回车
ESC ! 设置打印方式
ESC % 选择或取消用户自定义字符集
ESC 定义用户自定义字符集
ESC * 设置位映射方式
ESC @ 初始化打印机
ESC ~ LED ON/OFF
ESC 返回行首
ESC 2 选择行间距为1/6英寸
ESC 3 设置行进为最小间距
ESC BEL 蜂鸣器ON/OFF
ESC C 设置单页长度
ESC c0 选择打印页
ESC c1 选择行间距
ESC c3 选择纸结束信号输出
ESC c4 选择打印纸及检测器(终止打印)
ESC c5 禁止/使能面板开关
ESC c6 禁止/使能ON-LINE开关
ESC d 打印及N行进纸
ESC D 设置TAB位置
ESC e 打印病退回N行
ESC f 设单页等待时间
ESC F 选择或取消单页退纸区
ESC i 全切割
ESC J 以最小间距进行打印和进纸
ESC K 以最小间距进行打印和退纸
ESC l 选择或取消倒过来的字符
ESC m 局部切割
ESC o 印章
ESC p 产生指定脉冲
ESC q 释放纸
ESC r 选择打印颜色
ESC R 选择国际字符子集
ESC SP 设置右边界
ESC t 选择字符码表
ESC U 选择或取消单向打印
ESC V 发送打印机状态
ESC z 设置或取消两页并行打印
FF 打印送出单页
HT 水平TAB
LF 换行
RS 流水TAB
中文模式下的命令
代码 功能
FS – n 设置中文字符下划线模式开关
FS ! n 选择中文字体
FS 选择中文字符模式
FS . 取消中文模式
EPSON打印控制指令集
打印命令 功能
格式: ASCII: 以标准ASCII字符序列表示
十进制: 以十进制数字序列表示
十六进制: 以十六进制数字序列表示
说明:该命令功能和使用说明。
HT 水平制表
格式: ASCII: HT
十进制: 09
十六进制: 09
说明:
打印位置进行到下一水平制表位置。
如果当前打印位置超过了最后一个水平制表位置,则HT命令不被执行。
水平制表位置由 ESC D命令设置。
LF 打印并换行
格式: ASCII: LF
十进制: 10
十六进制: 0A
说明:
打印存放在行编辑缓存中的一行数据并按当前设定的行距向前走纸一行。ESC2,ESC3指令可设定行距的长短。
如果行编辑缓存空,则只按当前设定的行距向前走纸一行。
CR 打印回车
格式: ASCII: CR
十进制: 13
十六进制: 0D
说明:
当打印在行编辑缓存中的一行数据之后,不进行走纸操作。
DLE EOT n 实时状态传送
格式: ASCII: DLE EOT n
十进制: 16 04 n
十六进制: 10 04
说明:
1 ≤ n ≤ 4
传送以实时的方式,n代表被选择的打印机状态,基于下列参数:
n = 1: 打印机状态
n = 2: 脱机状态
n = 3: 错误状态
n = 4: 纸检测器状态
返回的字节每位设置如下:
n = 1: 打印机状态
n = 2: 脱机状态
n = 3: 错误状态
n = 4: 纸检测器状态
DLE ENQ n 对打印机的实时请求
格式: ASCII: DLE ENQ n
十进制: 16 05 n
十六进制: 10 5
说明:
n = 0, n = 2
打印机对主机请求作出反应,n值定义如下:
n = 0: 恢复到联机状态
n = 2: 清除接收和打印缓冲区,并恢复错误.
ESC SP n 设置字符右间距
格式: ASCII: ESC SP n
十进制: 2732 n
十六进制: 1B20 n
说明:
以半点为设定单位(1/144英寸),设置字符右边间距为n个半点距。
默认值n=0。
ESC ! n 设置字符打印方式
格式: ASCII: ESC ! n
十进制: 2733 n
十六进制: 1B21 n
说明:
0≤n≤255
ESC ! n是综合性的字符打印方式设置命令,用于选择打印字符的大小和下划线。
打印参数n的每位定义为:
位 功能 值
0 1
0 字模选择 7×9 5×7
1 无定义
2 无定义
3 着重模式 取消 设定
4 倍 高 取消 设定
5 倍 宽 取消 设定
6 无定义
7 下划线 取消 设定
默认值n=0,
ESC % n 允许/禁止用户自定义字符
格式: ASCII: ESC % n
十进制: 2737 n
十六进制: 1B25 n
说明:
参数n为一个字节,只有最低位有效。
当n=<*******1>B时,选择用户自定义字符集;
当n=<*******0>B时,选择内部字符集。
0≤n≤255,默认值n=0。
ESC 设置用户自定义字符
格式: ASCII: ESC y n m x d1 d2……db
十进制: 27 38 y n m x d1 d2……db
十六进制: 1B 26 y n m x d1 d2……db
说明:
该命令用于自定义字符。各参数为:
y:字符的纵向字节数。这里取 y=1,2。
n:自定义字符集的起始ASCII码,n≥32。
m:自定义字符集的终止ASCII码,m≤127。自定义字符个数为m-n+1,最多可定义96个字符。
当只有一个自定义字符时,取m=n。
a:自定义字符的水平方向的点数。
d1 d2……db:自定义字符的数据。每个字符 y×x个字节,m-n+1个自定义字符共有:
(y×x)×(m-n+1)个字节。
每个自定义字符数据的格式:
d1 d3 … d(y×x)×(m-n+1)-1
d2 d4 … d(y×x)×(m-n+1)
样例如下:
发送的命令如下:
ESC y c1 c2 X p1 p2 p3 d4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14
Code 1B 26 02 20 20 07 1F 80 20 00 44 00 80 00 44 00 20 00 1F 80
ESC * 设置图形点阵
格式: ASCII: ESC * m n1 n2 D1,D2 … Dk
十进制: 27 42 m n1 n2 D1,D2 … Dk
十六进制: 1B 2A m n1 n2 D1,D2 … Dk
说明:
该命令用来设置点阵图形模式(m)和横向图形点阵。
m = 0,1: 表示打印密度。
0≤n1≤255,0≤n2≤1,0≤Dk≤255,k= n1+ n2×256。
n1,n2为两位十六进制数,n1这低字节,n2这高字节,k= n1+ n2×256,表示该命令下载的要打印图形的横向点数,该值应小于打印机的最大行宽打印点数。如果下送的点图数据超出一行的最大行宽打印点数时,超出的部分被忽略。
m 垂直方向点数 点密度 最大点数 图形打印模式
0 8 单密度 210 相邻点打印
1 8 双密度 420 相邻点不打印
Dk 定义为:
ESC -n 设置/取消下划线模式
格式: ASCII: ESC - n
十进制: 27 45 n
十六进制: 1B 2D n
说明:
n = 0, 1, 48, 49
n = 0 or 48,取消下划线模式。
n = 1 or 49, 设置下划线模式。
ESC 2 设定1/6英寸换行量
格式: ASCII: ESC 2
十进制: 2750
十六进制: 1B32
说明:
此指令将打印机的换行量设定为1/6英寸。
ESC 3 n 设定 n/144英寸换行量
格式: ASCII: ESC 3n
十进制: 2751 n
十六进制: 1B33 n
说明:
此指令将打印机的换行量设定为 n/144英寸。
n=1 - 255。
ESC 〈 打印头归位
格式: ASCII: ESC 〈
十进制: 2760
十六进制: 1B3C
说明:
执行该指令后,打针头会回到原位(home的位置)。
ESC =n 设备设置/取消
格式: ASCII: ESC = n
十进制: 27 61 n
十六进制: 1B 3D n
说明:
1 ≤n ≤3
默认 n = 1
位 功能 值
0 1
0 打印机选择 取消 设定
1 顾显选择 取消 设定
2 无定义
3 无定义
4 无定义
5 无定义
6 无定义
7 无定义
ESC ?n 取消用户自定义字符
格式: ASCII: ESC ? n
十进制: 27 63 n
十六进制: 1B 3F n
说明:
32 ≤n ≤126
ESC @ 初始化打印机
格式: ASCII: ESC @
十进制: 2764
十六进制: 1B40
说明:
该命令初始化打印机:使打印机恢复到最初的联机状态,清除以前留下的程序。
ESC D NULL 消除所有的水平制表位置
格式: ASCII: ESC D NULL
十进制: 27 68 0
十六进制: 1B44 0
说明:
ESC D NUL命令消除所有的水平制表位置,之后再执行的HT命令将无效。
命令(ASCII) 十六进制 功能说明
HT 9 打印位置进行到下一水平制表位置
LF 0a 打印行缓冲器里的内容,并向前走纸一行
CR 0D 打印回车
ESC SP 1B 20 n 设置字符右边的字间距为n个半点距(1/140英寸)
DLE EOT n 10 04 实时状态传送
DLE ENQ n 10 5 对打印机的实时请求
ESC SP n 1B 20 n 设置字符右间距
ESC ! n 1B 21 n 设置字符打印方式
ESC % n 1B 25 n 允许/禁止用户自定义字符
ESC 1B 26 设置用户自定义字符
ESC * 1B 2A 设置图形点阵
ESC - n 1B 2D n 设置/取消下划线模式
ESC 2 1B 32 设定1/6英寸换行量
ESC 3 n 1B 33 n 设定 n/144英寸换行量
ESC 〈 1B 3C 打印头归位
ESC = n 1B 3D n 设备设置/取消
ESC ? n 1B 3F n 取消用户自定义字符
ESC @ 1B 40 初始化打印机
ESC D NULL 1B 44 0 消除所有的水平制表位置
ESC E n 1B 45 0 设置/取消着重模式
ESC G n 1B 47 0 设置/取消重叠模式
ESC J n 1B 4A n 执行n/144英寸走纸
ESC K n 1B 4B n 打印并反向走纸
ESC R n 1B 52 n 选择国际字符集
ESC U n 1B 55 n 设置/取消单向打印
ESC a n 1B 61 n 选择对齐模式
ESC c 3 n 1B 63 33 n 输出纸尽传感器
ESC c 4 n 1B 63 34 n 设定缺纸时停止打印
ESC c 5 n 1B 63 35 n 允许/禁止走纸按键
ESC d n 1B 64 n 打印并进纸n字符行
ESC e n 1B 65 n 打印并反向进纸n字符行
ESC p 1B 70 产生钱箱驱动脉冲
ESC r n 1B 72 n 选择打印颜色
ESC t n 1B 73 n 选择字符集
ESC { n 1B 7B n 设置/取消倒向打印模式
FS ! 1B 75 n 汉字综合选择
FS & 1C 26 进入汉字打印方式
FS ~ S 1C 7E 53 n 选择汉字打印速度
FS · 1C 2E 退出汉字打印方式
FS 2 1C 32 用户自定义汉字
FS ? c1 c2 1C 3F c1 c2 取消用户自定义汉字
FS C n 1C 43 n 设定日文汉字编码系统
FS S n1 n2 1C 53 n1 n2 设定全角汉字字间距
FS W n 1C 57 n 设定/取消四倍角汉字模式
GS ( F pL pH a m nL nH 1D 28 设置黑标定位偏移量
GS In 1D 49 n 传送打印机ID
GS V 1D 56 m 走纸到切纸位置
1D 56 m n
GS a n 1D 61 n 设定/取消自动返回状态
GS r n 1D 72 n 状态传送
GS z 1D 7A 设置联机恢复等待时间
.NET开发框架的几个主要组成部分:首先是整个开发框架的基础,即通用语言运行时以及它所提供的一组基础类库;在开发技术方面,.NET提供了全新的数据库访问技术ADO .NET,以及网络应用开发技术ASP .NET和Windows编程技术Win Forms;在开发语言方面,.NET提供了VB,VC++,C#, Jscript等多种语言支持;而Visual Studio .NET则是全面支持.NET的开发工具。下面就让我们来一步步的来了解它们:
通用语言运行时,即Common Language Runtime 。Microsoft .NET 给开发人员带来了一种全新的开发框架,而通用语言运行时则处于这个框架的最低层,是这个框架的基础。开发人员对于所谓的C运行时、VB运行时、Jave虚拟机这些概念已经非常熟悉了,而通用语言运行时则为多种语言提供了一种统一的运行环境。另外它还提供了更多的功能和特性,比如统一和简化的编程模型,用户不必迷惑于Win32 API和COM;避免了DLL的版本和更新问题(常称为DLL地狱),从而大大简化了应用程序的发布和升级;多种语言之间的交互,例如我们甚至可以在VB中使用C++编写的类;自动的内存和资源管理等等。Microsoft .NET正是基于通用语言运行时,实现了这些开发人员梦寐以求的功能。
基于通用语言运行时开发的代码称为受控代码,它的运行步骤大体如下:首先使用一种通用语言运行时支持的编程语言编写源代码,然后使用针对通用语言运行时的编译器生成独立于机器的微软中间语言(Microsoft Intermediate Language),同时产生运行所需的元数据,在代码运行时再使用即时编译器(Just In Time Compiler)生成相应的机器代码来执行。
当然对于开发者而言,他们除了关心通用语言运行时提供那么多新特性外,它究竟给开发者提供了什么样的编程接口,这就是基础类库(Base Class Library)。这组基础类库包括了从输入输出到数据访问等各方面,提供了一个统一的面向对象的、层次化的、可扩展的编程接口。它使用一种点号分隔的方法,使得查找和使用类库非常容易。例如基础类库中的根,它的命名空间是System,提供数据访问的类库的命名空间是System.Data。在使用时,开发者只需在自己的应用中添加所需的基础类库的引用,然后就可以使用这个类库中的所有方法、属性等等。跟传统的Windows编程相比,使用和扩展基础类库都非常容易,这使得开发者能够高效、快速的构建基于下一代互联网的网络应用。
几乎所有的应用程序都需要访问从简单的文本文件到大型的关系型数据库等各种不同类型的数据 。在Microsoft .NET中访问数据库的技术是ADO .NET。ADO .NET提供了一组用来连接到数据库,运行命令,返回记录集的类库,与从前的ADO(ActiveX Data Object)相比,Connection和Command对象很类似,而ADO .NET的革新主要体现在如下几个方面:
首先,ADO .NET提供了对XML的强大支持,这也是ADO .NET的一个主要设计目标。在ADO .NET中通过XMLReader,XMLWriter, XMLNavigator, XMLDocument等可以方便的创建和使用XML数据,并且支持W3C 的 XSLT、DTD、XDR等标准。ADO .NET对XML的支持也为XML成为Microsoft .NET中数据交换的统一格式提供了基础。
其次,ADO .NET引入了DataSet的概念,这是一个驻于内存的数据缓冲区,它提供了数据的关系型视图。不管数据来源于一个关系型的数据库,还是来源于一个XML文档,我们都可以用一个统一的编程模型来创建和使用它。它替代了原有的Recordset的对象,提高了程序的交互性和可扩展性,尤其适合于分布式的应用场合。
另外,ADO .NET中还引入了一些新的对象,例如DataReader可以用来高效率的读取数据,产生一个只读的记录集等等。简而言之,ADO .NET通过一系列新的对象和编程模型,并与XML紧密结合,使得在Microsoft .NET中的数据操作十分方便和高效。 ASP .NET是Microsoft .NET中的网络编程结构,它使得建造、运行和发布网络应用非常方便和高效 。我们可以从以下几个方面来了解ASP .NET:
1. ASP .NET网络表单
ASP .NET网络表单的设计目的就是使得开发者能够非常容易的创建网络表单,它把VB中的快速开发模型引入到网络开发中来,从而大大简化了网络应用的开发。具体的说:在ASP .NET中可以支持多种语言,不仅仅支持脚本语言,通用语言运行时支持的所有语言在ASP .NET中都可以使用;代码和内容分开,在现在的ASP(Active Server Pages)开发中,内容和脚本交错,维护和升级很困难,将他们分开可以使得开发人员和设计人员能够更好的分工合作,提高开发效率;另外在ASP .NET中通过引入服务器端控件,将类似VB的快速开发应用到了网络开发中来,这样大大提高了构建网络表单效率,并且服务器端控件是可扩展的,开发者可以建造自己需要的的服务器端控件。
2. ASP .NET网络服务
网络服务(Web Service)是下一代可编程网络的核心,它实际上就是一个可命名的网络资源,可用来在Internet 范围内方便的表现和使用对象,就像使用今天的 COM对象一样,不同的是使用和表现网络服务是通过SOAP(简单对象访问协议)甚至HTTP来实现的。在ASP .NET中,建造和使用网络服务都非常方便:
在ASP .NET中建造网络服务就是编写一个后缀为.ASMX的文件,在这个文件中加入想要表现出来的方法就可以了,网络服务的建造者不需要了解SOAP,XML的细节,只需要把精力集中在自己的服务本身,这也为独立软件服务开发商提供了很好的机会;使用网络服务最简单的方式就是使用HTTP协议(HTTP GET 或HTTP POST),用户只需要直接访问网络服务(.ASMX文件)的URL即可;当然用户还可以通过SOAP在自己的应用中更灵活的使用网络服务。
3. ASP .NET应用框架
ASP .NET应用不再是解释脚本,而是编译运行,再加上灵活的缓冲技术,从根本上提高了性能;由于ASP .NET的应用框架基于通用语言运行时,发布一个网络应用,仅仅是一个拷贝文件的过程,即使是组件的发布也是如此,更新和删除网络应用,可以直接替换/删除文件;开发者可以将应用的配置信息存放XML格式的文件中,管理员和开发者对应用程序的管理可以分开进行;提供了更多样的认证和安全管理方式;在可靠性等多方面都有很大提高。
传统的基于Windows的应用(Win Forms),它仍然是Microsoft .NET战略中不可或缺的一部分。在Microsoft .NET中开发传统的基于Windows的应用程序时,除了可以利用现有的技术例如ActiveX控件以及丰富的Windows接口外,还可以基于通用语言运行时开发,可以使用ADO .NET、网络服务等,这样也可以实现诸如避免DLL地狱、多语言支持等.NET的新特性。从上面的介绍中我们已经知道Microsoft .NET开发框架支持多种语言,在目前的测试版中已经支持 VB,C++,C#和Jscript四种语言以及它们之间的深层次交互
。而且微软支持第三方生产针对Microsoft .NET的编译器和开发工具,这也就是说几乎所有市场上的编程语言都有可能应用于Microsoft .NET开发框架。这样开发者可以任意选择自己喜爱的语言,这种开放和交互的特性正是开发者所热爱的。
需要特别指出的是,微软在Microsoft .NET中推出了全新的C#语言,这种全新的面向对象的语言使得开发者可以快速的构建从底层系统级到高层商业组件的不同应用。C#在保证了强大的功能和灵活性的同时,给C和C++带来了类似于VB的快速开发,并且它还针对.NET作了特别设计,比如C#允许XML数据直接映射为它的数据类型等等,这些特性结合起来使得C#成为优秀的下一代网络编程语言。
与此同时Microsoft .NET对原有的VB和C++也做了很大的改进,使得它们更加适应Microsoft .NET开发框架的需求。例如在Visual Basic .NET中增加了继承等面向对象的特性,结构化的出错处理等等;可管理的C++扩展,大大提高了利用C++来开发Microsoft .NET应用的效率等。
Visual Studio .NET作为微软的下一代开发工具,它和.NET 开发框架紧密结合,是构建下一代互联网应用的优秀工具,目前已经有Beta测试版面世。Visual Studio .NET通过提供一个统一的集成开发环境及工具,大大提高了开发者的效率;集成了多种语言支持;简化了服务器端的开发;提供了高效地创建和使用网络服务的方法等等。 .NET框架的一个主要目的是使COM开发变得更加容易
。COM开发过程中最难的一件事是处理COM基本结构。因此,为了简化COM开发,.NET框架实际上已自动处理了所有在开发人员看来是与“COM”紧密相关的任务,包括引用计算、接口描述以及注册。 必须认识到,这并不意味着.NET框架组件不是COM组件。事实上,使用Visual Studio 6.0的COM开发人员可以调用.NET框架组件,并且在他们看来,后者更像是拥有iUnknown数据的COM组件。相反,使用Visual Studio.NET的.NET框架开发人员则将COM组件视作.NET框架组件。
为了避免引起误解,这里需对这种关系加以特别说明:COM开发人员必须手动去做大多数.NET框架开发人员可以在运行时自动执行的事情。例如,必须手写COM组件的安全性模块,且无法自动管理模块占用的内存,而在安装COM组件时,注册条目必须放进Windows注册表中。对.NET框架而言,运行时实现了这些功能的自动化。例如,组件本身是自我描述型的,因而无需注册到Windows注册表中便能安装。
当把COM与Microsoft事务服务器(MTS)和分布式COM(DCOM)结合在一起时,就变成了COM+。COM+提供了一组面向中间层的服务。特别是COM+提供了进程管理功能和数据库与对象连接池处理功能。在将来的版本中,它还将提供一种称为分区的功能——专门为应用程序服务提供商设计的更强大的进程隔离功能。
COM+服务主要面向中间层应用程序开发,并主要为大型分布式应用程序提供可靠性和可扩展性。这些服务是对.NET框架所提供服务的补充;通过.NET框架类,可以直接访问这些服务。 .NET框架有几个要素值得一提
。首先是它的安全系统和配置系统。这两个系统协同工作,有力地遏止了运行不安全代码的可能性,并大幅度减少了号称“DLL Hell”的对应用程序进行配置时所面临的挑战。
安全系统是一个高度细化、基于事实的系统,它赋予开发人员和管理员多种代码处理权限(而不仅仅是“on”或“off”)。将来,还会根据代码本身的核心要素来决定如何实施上述权限。
例如,当.NET框架应用程序被下载到某一系统中时,它会申请一组权限(诸如对临时目录的写入权限)。运行时将收集有关应用程序的事实信息(诸如:它是从何处下载的、是否用了有效签名、甚至它访问系统的准确程度),并按管理策略决定是否允许应用程序运行。运行时甚至还可告之应用程序它无法授权申请的所有权限,并允许应用程序自行决定是否继续运行。
有这种安全系统作保障,许多应用程序配置问题便会迎刃而解。开发人员和管理员(最终是用户)所面临的最大挑战之一是版本的管理问题。如果在您新装了某个应用程序之后,一切都限于瘫痪状态,而在这之前系统一直运行得非常良好,那么最大的可能是新安装的应用程序重写了一些共享库,并极有可能修正了现有应用程序正使用的程序错误。这种情况出现的频率很高,以致人们将它称为:“DLL Hell”。
.NET框架拥有的几项高级功能可以彻底消除“DLL Hell”现象。首先,它有一个非常强大的内部命名系统,能够有效地防止两个库因互相重名而被错当为对方的情况发生。除此之外,它还提供一项被称作“并行”配置的新功能。如果前例中新安装的应用程序确实重写了共享库,现有应用程序可对该库进行修复。等现有应用程序再次启动时,它会检查所有的共享文件。如果发现文件被更改,同时这些更改又是不兼容的,则它可以请求运行时提取一个它可以使用的版本。得益于强大的安全系统,运行时可以安全地执行该操作,这样应用程序就完成了本身的修复工作。
总之,Microsoft .NET开发框架在通用语言运行时的基础上,给开发者提供了完善的基础类库、下一代的数据库访问技术ADO .NET、网络开发技术ASP .NET,开发者可以使用多种语言及Visual Studio .NET来快速构建下一代的网络应用。随着相关的互联网标准及技术的普及,可以预言将会有越来越多的开发者采用这种开发结构,开发出丰富多样的下一代互联网应用来。