立象dx4300打印机调试。

1 环境搭建

1.1 下载软件

登录

http://www.argox.com.cn/Pages/servicedownload.aspx

下载驱动和手册。

1.2 正常安装即可,电脑要先接上打印机的USB口。

1.3 通过USB连接打印机,打开Printer Tool工具。

如果没有检测到打印机,可能是驱动安装有问题。

1.4 获取打印机的参数

可以看到IP,端口和波特率等信息。

一般来说,打印机的出厂IP是0.0.0.0,如果想设置固定IP(用于远程IP打印),需要先将打印机连接到网口上(墙上的网口或者路由器都可以,最主要是要有一个AP给它分配IP),然后再通过USB设置它的固定IP。

如果你不知道怎么设置IP,你可以先将笔记本通过网线连接到网口上,然后看电脑分配的IP是多少

然后打开cmd,ping一个同一网段下的IP,如果不通的话,说明没人用,就可以分配给打印机。

IP打印的方法我们在后面可以讲到。

2 Hello World

2.1 创建文件

任意找个位置(桌面也行),新建一个文本文档,另存为utf-8编码模式

2.2 打印指令

输入以下内容

```

^XA

^LL200

^PW700

^MNN

^MMC

^MTT

~SD16

^MD0

^PR4

^CI28

^FO0,0

^A0N,60,60

^FD Hello World!^FS

^PQ1

^XZ

```

保存。

2.3 发送

2.4 打印效果

2.5 指令说明(为了统一,可以设置的参数均用a,b,c等表示):

^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 指令结束

3 打印中文字符

3.1 导入中文字体

由于点阵字体效果实在是不好,所以还是考虑通过存入字体去实现中文打印。

我们打开Windows的字体库,找一个适当大小的字体

通过工具导入打印机

3.2 打印指令

然后在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

```

3.3 打印效果如下:

3.4 指令说明:

^CWa,b:c^FS 该指令有三个参数,a代表设置该字体的编号,以便在后面引用它;b代表从哪里找该字体,刚刚我们存入了flash,所以选择为E,其他参数有R (RAM),B (USB memory);c代表字体的名称,刚刚我们存入的是SIMYOU.TTF。

^A8N,60,60 第一个参数是引用字体类型的编号,也就是^CW指令的第一个参数。

4 打印中文二维码

```

^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 通过IP打印

一般用于服务器向终端发起打印

5.1 Python 2.7

任意位置新建两个文本文档,将其中一个拓展名改为py(假设你已经安装好了Python环境)

将txt文件打开,另存为,以UTF-8编码方式保存,覆盖原文件

在txt中写入我们的打印中文字符指令,这里略过。

然后打开py文件

py代码:

```

# -*- coding: cp936 -*-

# -*- coding: utf-8 -*-

import socket

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

s.connect(("10.2.3.102",9100))

printCommand=open("./print.txt")

line=printCommand.readline();

while line:

    s.send(line)

    print line

    line =printCommand.readline()

s.close()

```

看起来效果还不错。

5.2 java

新建一个java工程(eclipse或者intellij都可以),新建一个java文件,新建一个txt(忽视其他无关紧要的东西)

然后在java文件中输入如下内容,注意IP和端口

```

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket; public class Socket180929 { public static void main(String[] args) {
try {
FileReader fileReader = new FileReader("./src/print.txt");
BufferedReader bufferedReader=new BufferedReader(fileReader);
StringBuilder stringBuilder = new StringBuilder();
String string= "";
while((string=bufferedReader.readLine())!=null){
stringBuilder.append(string).append("\n");
}
bufferedReader.close(); Socket socket=new Socket("10.2.3.102",9100);
OutputStream outputStream=socket.getOutputStream();
outputStream.write(stringBuilder.toString().getBytes());
socket.close();
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
} }
}

```

指令还是之前的指令,这次尝试打印字符串和二维码都没问题。

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= .ToString();

        }

        private void button_Click_SendTxt(object sender, EventArgs e)

        {

            //读取txt文件内容

            String stringTxtContent = textBoxShowTxtContent.Text;

            byte[] buffer = new byte[];

            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) < )

                {

                    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 = ;

            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 < '') || (e.KeyChar > ''))//这是允许输入0-9数字  

                {

                    e.Handled = true;

                }

            }

        }

    }

}

感兴趣的可以下载这个C#源码

https://github.com/drihfu/568

【打印机】argox入门的更多相关文章

  1. apache-shiro入门<一>

    Apache Shiro是一个强大而灵活的开源安全框架(本来想传到网盘供大家下载,但是鉴于国内网盘动不动就要关闭清楚用户数据:所以我提供了另一个shiro的中文文档下载链接:http://downlo ...

  2. java安全管理器SecurityManager入门

    table { margin-left: 30px; width: 95%; border: 1px; border-collapse: collapse } img { border: 1px so ...

  3. Linux运维入门到高级全套常用要点

    Linux运维入门到高级全套常用要点 目 录 1. Linux 入门篇................................................................. ...

  4. 01 Linux入门介绍

    一.Linux 初步介绍 Linux的优点 免费的,开源的 支持多线程,多用户 安全性好 对内存和文件管理优越 系统稳定 消耗资源少 Linux的缺点 操作相对困难 一些专业软件以及游戏支持度不足 L ...

  5. Linux基础入门学习笔记20135227黄晓妍

    学习计时:共24小时 读书:1小时 代码:8小时 作业:3小时 博客:12小时 一.学习目标 1. 能够独立安装Linux操作系统   2. 能够熟练使用Linux系统的基本命令   3. 熟练使用L ...

  6. VB6 GDI+ 入门教程[1] GDI+介绍

    http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[1] GDI+介绍 2009 年 6 月 18 日 17 ...

  7. Unix 入门

    说明:转自以为大神的笔记. 首先,我们一起看看UNIX的目录,因为清楚了目录,才能对UNIX的框架有个大概的印象!当然这里讲的是系统正常运转所必须的,并且一定不能删除或者修改.  / 是系统的根目录: ...

  8. linux 操作系统下c语言编程入门

    2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理  ...

  9. Linux入门基础教程

    转载自:http://www.centoscn.com/CentOS/2015/0528/5555.html 1. 1      Linux操作系统简介 Linux是一套免费使用和自由传播的类Unix ...

随机推荐

  1. MongoDB使用场景和局限 (转)

    MongoDB的使用场景: 1.Web应用程序.文档能表示丰富的数据结构,建模相同数据库所需的集合数量通常会比使用完全正规化关系型数据库的数据表数量要少.动态查询和二级索引能让你轻松的实现SQL开发者 ...

  2. WEB服务器与应用服务器解疑

    1.WEB服务器: 理解WEB服务器,首先你要理解什么是WEB?WEB你可以简单理解为你所看到的HTML页面就是WEB的数据元素,处理这些数据元素的应用软件就叫WEB服务器,如IIS.apache. ...

  3. 【Spring】Spring boot多数据源历险记

    一.问题描述 笔者根据需求在开发过程中,需要在原项目的基础上(单数据源),新增一个数据源C,根据C数据源来实现业务.至于为什么不新建一个项目,大概是因为这只是个小功能,访问量不大,不需要单独申请个服务 ...

  4. EnrichPipeline文档

    https://sourceforge.net/projects/enrichmentpipeline/

  5. windows8.1 初体验

    昨天装了Win8.1,Office2013 由于是英文版的,需要装一下中文语言包,然后就能使用自带的微软拼音输入法了. 我喜欢双屏时的桌面背景,选择span时一张图片可以跨越2个屏幕,比win7的好. ...

  6. Spark实践 -- 夜出顾客服务分析

    原文链接:https://www.cnblogs.com/stillcoolme/p/10160397.html 1 业务需求 最近做的24小时书店大数据平台中的一个需求:获取一段时间内只在晚上进店, ...

  7. 2018.10.14 loj#6003. 「网络流 24 题」魔术球(最大流)

    传送门 网络流好题. 这道题可以动态建图. 不难想到把每个球iii都拆点成i1i_1i1​和i2i_2i2​,每次连边(s,i1),(i2,t)(s,i_1),(i_2,t)(s,i1​),(i2​, ...

  8. html转jsp部分css不可用

    解决方法 <%String path = request.getContextPath();String basePath = request.getScheme()+"://&quo ...

  9. IntellJ IDEA javax.servlet.ServletException 找不到javax.servlet.ServletException的类 java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory

    误状态:错误显示 解决: (1)说明缺少包---->添加如下包配置 <dependency> <groupId>javax.servlet.jsp</groupId ...

  10. python读写操作

    import sys 1 def test(): a=int(input()) x=[int(i) for i in input().split(' ')] y=[int(j) for j in sy ...