You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

串行打印机打印文档开头乱码问题排查求助

串行打印机打印乱码问题排查

问题背景

使用lpr命令通过Craden DP-9串行打印机打印文档,打印机在CUPS中注册为printer1,通过USB转串行适配器连接笔记本。打印任务有响应,但输出始终乱码。打印机自检文档打印正常,硬件状态确认良好。

使用的打印脚本

#!/bin/bash
# Created on 2023-09-10T17:52:18-04:00
# Author: nate

set -eo pipefail

if [[ -z "$1" || ! -f "$1" ]] ; then
    echo "Please provide an input file."
    exit 0
fi

tempfile="$(mktemp)"
trap "rm -f $tempfile" EXIT

WIDTH="90"
LINES="60"
MARGIN="0"

cat "$1" \
    | unix2dos\
    | tee "$tempfile"\
    | lpr -P printer1 -o raw

cat "$tempfile"

测试情况

执行命令 ./print.sh ./print.sh 打印脚本自身时,输出文档开头出现乱码;打印机自检文档输出正常。

CUPS打印机配置(lpoptions输出)

copies=1 device-uri=serial:/dev/ttyUSB0?baud=38400+bits=8+parity=none+flow=soft finishings=3 job-cancel-after=10800 job-hold-until=no-hold job-priority=50 job-sheets=none,none marker-change-time=0 number-up=1 print-color-mode=monochrome printer-commands=AutoConfigure,Clean,PrintSelfTestPage printer-info printer-is-accepting-jobs=true printer-is-shared=true printer-is-temporary=false printer-location printer-make-and-model='IBM ProPrinterII Foomatic/ibmpro (recommended)' printer-state=3 printer-state-change-time=1694275126 printer-state-reasons=none printer-type=8564740 printer-uri-supported=ipp://localhost/printers/printer1

疑问

  1. 为何文档开头会出现乱码?
  2. 排查这类行式打印机打印乱码问题的常规方法有哪些?

解答

问题1:文档开头乱码的可能原因

  1. 驱动不匹配:当前配置的IBM ProPrinterII Foomatic/ibmpro驱动与Craden DP-9不兼容,驱动发送的初始化指令被打印机误解析为打印内容,导致开头乱码。
  2. 串行参数不匹配:虽然配置了baud=38400+bits=8+parity=none+flow=soft,但打印机实际默认波特率、流控等参数可能与当前设置不符,初始数据传输同步失败,出现乱码。
  3. Raw模式冲突:使用-o raw时,CUPS仍可能插入驱动自带的控制码,这些指令未被打印机正确识别,表现为开头乱码。
  4. USB转串口适配器问题:部分适配器在数据传输初始阶段存在信号不稳定,导致前几个字节传输错误,出现开头乱码。

问题2:行式打印机打印乱码的常规排查方法

  • 驱动适配检查:
    • 查找打印机官方CUPS驱动或兼容驱动,替换当前的IBM ProPrinter驱动;若无官方驱动,尝试Generic Text Only通用文本驱动。
  • 串行参数校准:
    • 查阅打印机手册确认默认波特率、数据位、奇偶校验、流控设置,在CUPS中修改device-uri对应参数,逐一测试不同组合(比如波特率尝试9600、19200)。
  • 简化打印流程:
    • 跳过脚本直接执行lpr -P printer1 -o raw test.txt打印纯文本,排除unix2dos等步骤的影响;尝试不使用-o raw,让驱动处理转换,对比输出结果。
  • 硬件链路测试:
    • 更换USB转串行适配器排除故障;尝试不同USB端口,避免供电或信号干扰;检查串行线缆(若用延长线)是否接触不良。
  • 日志分析:
    • 查看CUPS日志(通常在/var/log/cups/目录下的error_log和access_log),查找打印任务中的错误信息或初始化指令异常。
  • 打印机重置:
    • 执行打印机重置操作(参考手册),清除残留错误设置后重新发送打印任务。

内容的提问来源于stack exchange,提问作者firstname gklsodascb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 20:13:12