美文网首页
Orange_Pi_PC启用UART1并连接打印机测试

Orange_Pi_PC启用UART1并连接打印机测试

作者: Milotic | 来源:发表于2018-12-11 23:30 被阅读0次

依次进入armbian-config --> System --> Hardware 选中 uart1 并确认重启。
成功启用后可以在 /boot/armbianEvn.txt 中查看
overlays=uart1
uart1对应系统中的/dev/ttyS1

测试设备“歌翼EH400”
测试环境:Armbian Debian Linux
测试套件:Python3 + pyserial3.4
File_name: my_printer.py

#!/usr/bin/env python3
# encoding: utf-8

import serial,binascii

class my_printer:
    def __init__(self,serial_number,baudrate,timeout):
        self.serial_number = serial_number
        self.baudrate = baudrate
        self.timeout = timeout
        self.printer = self.__ready()

        def __ready(self):
        try:
            ser = serial.Serial(port=self.serial_number, 
                                baudrate=self.baudrate, 
                                timeout=self.timeout)
            if ser.isOpen():
                return ser
            else:
                ser.open()
                return ser
        except:
            print('printer connect fail')

    def printer_test(self):
        self.printer.flushInput()
        self.printer.flushOutput()
        self.printer.write(b'\x1B\x40\x12\x54')

    # 将字符串转换成十六进制格式
    def __str_to_hex(self,source_str):
        # 获取字符串长度
        str_len = len(source_str)
        # 将byte格式强制转换成字符串,截取b''中间的字符串
        source_str = str(binascii.b2a_hex(source_str.encode('GB2312')))[2:-1]
        rev = []
        start_flag = 0
        while str_len:
            # 字符转成十六进制后会占用2个字符,所以每两个字符对应原字符串的单个字符
            rev.append(source_str[start_flag:start_flag+2])
            str_len -= 1
            start_flag += 2
        # 返回 ['xx','xx']格式的列表,再转换成'xx xx'格式的字符串
        return ' '.join(rev)

    # 打印机基本指令格式
    # 1B 40   //初始化打印机
    #
    # 1B 33 10  //设定行高距离10  行距范围10,20,30,40,50,60
    # 1B 33 20
    # 1B 33 30
    # 1B 33 40
    # 1B 33 50
    # 1B 33 60
    #
    # 1D 21 00   //正常字体大小
    # 1D 21 11   //字体放大一倍
    # 1D 21 10   //字体宽度放大一倍
    # 1D 21 01   //字体高度放大一倍
    #
    # 1B 61 00    //文本左对齐
    # 1B 61 01    //文本居中对齐
    # 1B 61 02    //文本右对齐
    #
    # BB B6 D3 AD B9 E2 C1 D9   //文本打印内容“欢迎光临”
    #
    # 0D 0A  结束符,也可当换行使用

    # 将需要打印的字符串转换为十六进制的指令格式
    def printer_text_format(self,str):
        # 设置自己需要的格式
        f_1 = '1B 40'
        f_2 = '1B 33 10'
        f_3 = '1D 21 00'
        f_4 = '1D 21 00'
        f_5 = '1B 61 00'
        f_6 = '{}'.format(self.__str_to_hex(source_str=str))
        f_7 = '0D 0A'
        # 将设置好的格式数据转成单个字符串
        full_data = ' '.join([f_1,f_2,f_3,f_4,f_5,f_6,f_7])
        self.printer.write(bytes.fromhex(full_data))


if __name__ == '__main__':
    test_p = my_printer('/dev/ttyS1',9600,1)
    # 打印测试页
    test_p.printer_test()
    test_p.printer_text_format('hello,lalalalalbabab')

如果在Linux下测试,请使用sudo python3 my_printer.py
如果朋友有更好的解决方案,麻烦告知一下。谢谢哈

相关文章

  • Orange_Pi_PC启用UART1并连接打印机测试

    依次进入armbian-config --> System --> Hardware 选中 uart1 并确认重启...

  • Windows打印机共享

    打印机连接电脑并安装驱动(请到对应品牌官网下载驱动),测试打印机是否成功安装。 打开控制面板进入“设备和打印机”选...

  • PrinterTool使用方法

    PrinterTool是一款可以连接热敏打印机的测试工具,可以通过socket,USB和蓝牙连接打印去测试。 软件...

  • Orange_Pi_PC安装Armbian_Debian并启用远

    从官网下载:https://www.armbian.com/orange-pi-pc/选择 “Armbian St...

  • tips

    //测试端口开启情况:(Windows功能开关启用telnet后)telnet ip port //远程连接快捷切...

  • 2020-08-16

    事件:家里的打印机无法远程打印,告诉老公打印合同并连接好打印机。事隔三天还是无法无线打印。问他打印机还是无法打印,...

  • (亲测!)Windows10用WSL安装Ubuntu远程桌面连接

    Windows10使用默认的WSL安装Ubuntu并启用远程桌面连接 一、启用WSL功能 首先进入控制面板, 输入...

  • 连接配置打印机操作指引

    电脑连接打印机有多种方式,常见的连接方式有: 打印机直接usb连接到电脑; 将打印机通过网线连接到电脑所在局域网;...

  • Android 蓝牙相关开发

    描述 最近公司有个项目,App从后台获取到数据,App连接打印机,将数据在打印机上打印。公司提供的测试设备是蓝牙打...

  • 安装M7400/7600D打印机驱动

    工具/原料 Win8.1系统、电脑连接打印机并开机打印机驱动软件 一、在电脑E盘根目录找到 “lenovo m74...

网友评论

      本文标题:Orange_Pi_PC启用UART1并连接打印机测试

      本文链接:https://www.haomeiwen.com/subject/mdmyhqtx.html