树莓派上的扫描图像失败,未完成就停止

问题描述 投票:0回答:1

我正在使用 HP PSC 1610 一体式打印机通过 scanimage 扫描 Raspberry Pi 3 A+ (512MB RAM) 上的图像。扫描在较低分辨率(100 和 200 dpi)下工作良好,但当分辨率高于 300 dpi 时,扫描过程开始但突然停止,并出现错误 scanimage:

sane_read: Error during device I/O.

最初,我认为此错误与超时有关,因为以 600 dpi 进行扫描比以 1200 dpi 进行扫描更进一步。但是,现在我猜这一定是内存错误,因为我尝试设置

export SANE_TIMEOUT=30000
,然后创建 hpaio.conf 文件设置了
dumb-read
connection-timeout
属性。没有任何改变

我尝试创建更多交换,但似乎没有太大区别。

我尝试使用

hp-scan
(安装
hplip
后)和
pyinsane2
进行扫描 - 没有任何变化。

我还尝试更改缓冲区大小(在 scanimage --buffer-size 上),但仍然没有任何反应。

有谁知道如何解决这个问题?还是我真的被低分辨率困住了?

编辑 1 - 收到的建议是:

  1. 使用 CLI 应用程序(我已经使用了)来节省 RAM。但是,运行
    free -h
    会输出有 230Mb 的可用 RAM。考虑到我的 Pi 上什至没有 DE,这正常吗?
  2. 分割扫描文档并使用 ImageMagick 连接。这确实是一个好主意,但我有两个问题:a)扫描仪是否能够精确地从它停止的位置继续扫描? b) 我理想情况下需要分辨率为 1200dpi 的图像。有没有一种方法可以在不花那么长时间的情况下扫描它(即扫描仪不返回到起始位置,执行第二条条纹,返回到起始位置,第三条条纹等等)?

我感谢任何帮助

raspberry-pi scanning sane pyinsane
1个回答
0
投票

几天后我找到了这个问题的“解决方案”;或者更确切地说,是一个临时解决方案。而且还挺出乎意料的……

在我的 Raspberry Pi 上,我尝试更改 SD 卡(更改为 32 GB)以创建更多交换空间。扫描仪仍然无法完成这项工作。我也尝试过扫描部分图像,但花了很长时间。

然后,为了测试/确保我没有遗漏任何东西,我测试了

xsane
。而且...成功了!?我仍然不明白为什么在 GUI(标准树莓派桌面)上运行的 xsane 可以工作,而在命令行(没有 DE)上运行
scanimage
却不能。我最好的猜测是 xsane 对
sane-backend
具有较低级别的访问权限和更好的内存管理,因此程序本身在必要时可以分段扫描图像并将它们连接起来,而无需停止扫描仪,从而允许它扫描在预期/正常时间内以高分辨率完成图像。

但是,有时如果缓存压力太大或交换空间太小,它会无法完成作业并输出 I/O 错误。当缓存压力在70%左右且系统有4GB的swap时,不会发生错误。

现在,关于 @MarkSetchell 将图像与各种扫描结合起来的想法,令我担心的是扫描仪不会从与上一个条纹完全相同的位置恢复扫描(因为 1200dpi 的分辨率约为 21μm/像素) )。但是,对于那些可能需要使用此方法的人,请不要担心,因为如果您将条纹配置为垂直于扫描仪的移动方向,这根本不会成为问题。

如果有人找到命令行 scanimage 方法的明确解决方案,我们将不胜感激。

谢谢您的帮助

© www.soinside.com 2019 - 2024. All rights reserved.