登录
http://www.argox.com.cn/Pages/servicedownload.aspx
下载驱动和手册。
任意找个位置(桌面也行),新建一个文本文档,另存为utf-8编码模式
输入以下内容
```
^XA
^LL200
^PW700
^MNN
^MMC
^MTT
~SD16
^MD0
^PR4
^CI28
^FO0,0
^A0N,60,60
^FD Hello World!^FS
^PQ1
^XZ
保存。
^XA 指令开始,没有参数
^LLa 标签的高度,a的值为数字,单位dot
^PWa 标签的宽度,a的值为数字,单位dot
^MNa 纸张模式,a的值为大写字母,默认是Y(非连续纸),这里是N(连续纸模式),还有M(黑标模式)
^MMa 打印模式,C是切刀模式,其他参数P,T,D都不会切
^MTa 传输模式,T代表热转印模式,需要碳带,D代表热敏
~SDa 和^MD一起,决定打印的浓度,可选值1-30
^MDa 可选值-30~30
^PRa 打印速度,可选值2-8
^CIa 字符的编码模式,28代表UTF-8
^FOa,b 要打印机内容的位置,注意^FO有两个参数,第一个代表横坐标,第二个代表纵坐标,这个指令会跟随后面的指令一起生效
^Aab,c,d 字体选择,^A有四个参数,a代表字体类型,可选值0-9,A-Z,其中0是内置字体,其他字体类型可通过^CW定义,在打印中文时可用。b代表方向,有N,I,B,R四个可选项。以下是测试的效果:
c和d分别代表字体的高度和宽度。
^FDa^FS 内容,a是打印内容,之前我们用“ Hello World!”,前面会多一个空格。
^PQa 打印数量,a=1为打印一张
^XZ 指令结束
由于点阵字体效果实在是不好,所以还是考虑通过存入字体去实现中文打印。
我们打开Windows的字体库,找一个适当大小的字体
通过工具导入打印机
然后在txt中添加如下内容:
```
^XA
^LL300
^PW700
^MNN
^MMC
^MTT
~SD26
^MD10
^PR4
^CI28
^CW8,E:SIMYOU.TTF^FS
^FO0,10
^A8N,60,60
^FD中文测试123测试ABC中文^FS
^PQ1
^XZ
```
^CWa,b:c^FS 该指令有三个参数,a代表设置该字体的编号,以便在后面引用它;b代表从哪里找该字体,刚刚我们存入了flash,所以选择为E,其他参数有R (RAM),B (USB memory);c代表字体的名称,刚刚我们存入的是SIMYOU.TTF。
^A8N,60,60 第一个参数是引用字体类型的编号,也就是^CW指令的第一个参数。
```
^XA
^LL300
^PW700
^MNN
^MMC
^MTT
~SD26
^MD10
^PR4
^CI28
^CW8,E:SIMYOU.TTF^FS
^FO200,10
^BQN,2,5
^FH\
^FDLM,B0200 中文测试QR CODE 二维码\0D\0A换行测试123ABC
^FS
^PQ1
^XZ
```
效果:
这个效果不错,指令说明:
^BQa,b,c:a是二维码方向,一般是N;b是二维码的模式,1是原始版,2是增强版,一般用2;c是放大倍数,有1-10可选。
5.3 C# Winform
Winform程序一般我们用于桌面程序的运行,这个程序是为了专门用来调试打印指令用的。可以直接打开电脑里的txt,然后发送到指定的IP,也可以直接在文本框编辑内容发送,不会影响原来的txt文件,效果如下:
同时增加了对IP和port格式的校验
port无法输入非数字,而且不能超出范围
打印效果就不显示了,跟之前的一样。
新建一个C#工程,然后像上面那样添加各个控件,具体就不表了,逻辑实现看代码:
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
namespace SocketSendString
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
textBoxIp.Text = "10.2.3.102";
textBoxPort.Text= 9100.ToString();
}
private void button_Click_SendTxt(object sender, EventArgs e)
{
//读取txt文件内容
String stringTxtContent = textBoxShowTxtContent.Text;
byte[] buffer = new byte[2048];
buffer = Encoding.Default.GetBytes(stringTxtContent);
//判断输入的IP和PORT是否符合格式(IP使用正则表达式判断)
if (Regex.IsMatch(textBoxIp.Text,
@"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$"))
{
if (Convert.ToInt32(textBoxPort.Text) < 66536)
{
Socket socket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
//将string转成ip及port类型
socket.Connect(IPAddress.Parse(textBoxIp.Text),
Convert.ToInt32(textBoxPort.Text));
socket.Send(buffer);
socket.Close();
MessageBox.Show("发送完毕");
}
else {
MessageBox.Show("port超出范围");
}
}
else {
MessageBox.Show("IP格式错误");
}
}
private void button_Click_ChoseFile(object sender, EventArgs e)
{
OpenFileDialog filename = new OpenFileDialog(); //定义打开文件
//初始路径,这里设置的是程序的起始位置,可自由设置
filename.InitialDirectory = Application.StartupPath;
//设置打开类型,设置个*.*和*.txt就行了
filename.Filter = "All files(*.*)|*.*|txt files(*.txt)|*.txt";
//文件类型的显示顺序(上一行.txt设为第二位)
filename.FilterIndex = 2;
filename.RestoreDirectory = true; //对话框记忆之前打开的目录
if (filename.ShowDialog() == DialogResult.OK){
//获得完整路径在textBox1中显示
textBoxFilePath.Text = filename.FileName.ToString();
//将选中的文件在textBox2中显示
StreamReader sr = new StreamReader(filename.FileName,Encoding.UTF8);
textBoxShowTxtContent.Text = sr.ReadToEnd();
sr.Close();
}
}
private void textBoxPort_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar != '\b')//这是允许输入退格键
{
if ((e.KeyChar < '0') || (e.KeyChar > '9'))//这是允许输入0-9数字
{
e.Handled = true;
}
}
}
}
}
感兴趣的可以下载这个C#源码
https://github.com/drihfu/568