Mon scanner (fonction scanner de l’imprimante multifonction MX860) était reconnu à l’aide du sane-find-scanner
commande ou en utilisant scanimage -L
. Il travaillait avec Simple Scan, le scanimage
utilité, et sane-backend
(avec C ++). Soudainement, il a cessé de fonctionner - le périphérique n'est plus reconnu par sane sous Linux.
J'utilise un double démarrage Lubuntu 18.04 / Windows 10. Windows 10 reconnaît toujours le scanner.
C'est arrivé quand j'utilisais sane-backend
en C ++, mais je ne sais pas comment cela aurait pu causer l'erreur - je ne pense pas que le code aurait pu nuire à la reconnaissance du scanner. L’imprimante est définitivement prise en charge par sane, et elle est correctement connectée à l’alimentation et connectée via un câble USB à mon ordinateur.
Si vous pensez que c'est peut-être le coupable, voici le code C ++. Il lit à partir du scanner et enregistre les données dans un fichier image PNM. Cela fonctionnait bien jusqu'au outFile.open()
a soudainement commencé à retourner le statut de Invalid argument
, qui est quand scanimage -L
cessé de reconnaître le scanner.
unsigned char data[50000];
int maxLength = 50000;
int length;
std::ofstream outFile;
outFile.open("./out/test.pnm");
SANE_Handle handle;
SANE_Parameters parm;
SANE_Status openStatus = sane_open("pixma:04A91735_10C369", &handle);
SANE_Status paramStatus = sane_get_parameters(handle, &parm);
SANE_Status startStatus = sane_start(handle);
SANE_Status readStatus;
// write header of PNM file
outFile << "P6\n# SANE data follows\n" << parm.pixels_per_line << " " << parm.lines << "\n" << ((parm.depth <= 8) ? 255 : 65535) << "\n";
do {
readStatus = sane_read(handle, data, maxLength, &length);
outFile.write((const char *) data, length);
} while(readStatus == SANE_STATUS_GOOD);
sane_close(handle);
outFile.close();
// debugging
std::cout << sane_strstatus(openStatus) << std::endl;
std::cout << sane_strstatus(paramStatus) << std::endl;
std::cout << sane_strstatus(startStatus) << std::endl;
std::cout << sane_strstatus(readStatus) << " " << length << std::endl;
Des pensées?
lsusb
donne Bus 001 Device 007: ID 04a9:1735 Canon, Inc.
, il est donc reconnu par Linux et la fonction d’impression fonctionne toujours lorsqu’elle est connectée par USB. Est-ce que cela vous indique quelque chose?
scanimage
vient avec le système d'exploitation, donc je ne l'ai pas supprimé). Toujours pas de chance. Peut brûler un liveUSB bientôt pour essayer
lsusb
(pourrait vouloir courirlsusb | grep MX860
pour gagner du temps) et s’il le reconnaît, essayez alors une clé USB Linux en direct pour voir si Sane fonctionne là-bas. Si c'est le cas, vous avez probablement rompu avec une nouvelle configuration, si elle apparaît dans lsusb, alors vous savez que Linux le voit, mais pas Sane.