sane-apple(5) SANE Scanner Access Now Easy sane-apple(5)

sane-apple - بک‌اند SANE برای اسکنرهای تخت اپل

کتابخانه sane-apple یک بک‌اند SANE (دسترسی آسان به اسکنر) را پیاده‌سازی می‌کند که دسترسی به اسکنرهای تخت اپل (Apple) را فراهم می‌سازد. در حال حاضر، اسکنرهای زیر توسط این بک‌اند پشتیبانی می‌شوند:

--------------- ----- ------------------ ------
AppleScanner    4bit  16 Shades of Gray
OneScanner      8bit  256 Shades of Gray
ColorOneScanner 24bit RGB color          3-pass

اگر صاحب یک اسکنر اپل غیر از مدل‌های فهرست‌شده در بالا هستید که با این بک‌اند کار می‌کند، لطفاً نام مدل اسکنر، شناسه SCSI و نگارش میان‌افزار (فریم‌ور) آن را به sane-devel@alioth-lists.debian.net ارسال کنید و به ما اطلاع دهید. برای جزئیات در مورد نحوه عضویت در sane-devel، به http://www.sane-project.org/mailing-lists.html مراجعه کنید.

این بک‌اند انتظار نام‌های دستگاهی به این قالب دارد:

special

که در آن special مسیر دستگاه ویژه مربوط به یک اسکنر SCSI است. برای اسکنرهای SCSI، نام دستگاه ویژه باید یک دستگاه عمومی SCSI یا یک پیوند نمادین به چنین دستگاهی باشد. تحت لینوکس، چنین نام دستگاهی می‌تواند برای مثال /dev/sga یا /dev/sge باشد. برای جزئیات بیشتر به sane-scsi(5) مراجعه کنید.

فایل apple.conf فهرستی از گزینه‌ها و نام‌های دستگاه متناظر با اسکنرهای اپل است. خطوط خالی و خطوطی که با علامت هش (#) شروع می‌شوند نادیده گرفته می‌شوند. برای جزئیات درباره آنچه یک نام دستگاه معتبر را تشکیل می‌دهد، به sane-scsi(5) مراجعه کنید.

گزینه‌ها در دو نوع ارائه می‌شوند: سراسری و موضعی. گزینه‌های سراسری برای تمام دستگاه‌های مدیریت‌شده توسط بک‌اند اعمال می‌شوند، در حالی که گزینه‌های موضعی فقط برای آخرین دستگاه ذکرشده اعمال می‌گردند. توجه داشته باشید که این به این معنی است که ترتیب قرارگیری گزینه‌ها اهمیت دارد!

اسکنرهای SCSI معمولاً با یک آداپتور ISA SCSI عرضه می‌شوند. متأسفانه این آداپتور ارزش چندانی ندارد، زیرا مبتنی بر وقفه (interrupt driven) نیست. گاهی اوقات ممکن است بتوان کارت ارائه‌شده را به کار انداخت، اما بدون خط وقفه، عمل اسکن بار زیادی بر سیستم وارد می‌کند، به طوری که عملاً آن را برای کارهای دیگر غیرقابل استفاده می‌سازد.

/etc/sane.d/apple.conf
فایل پیکربندی بک‌اند (همچنین توضیحات SANE_CONFIG_DIR در زیر را ببینید).
/usr/lib/sane/libsane-apple.a
کتابخانه ایستا که این بک‌اند را پیاده‌سازی می‌کند.
/usr/lib/sane/libsane-apple.so
کتابخانه اشتراکی که این بک‌اند را پیاده‌سازی می‌کند (در سیستم‌هایی که از بارگذاری پویا پشتیبانی می‌کنند موجود است).

این متغیر محیطی فهرستی از دایرکتوری‌هایی است که SANE در آن‌ها به دنبال فایل پیکربندی می‌گردد. در سیستم‌های شبه‌یونیکس (*NIX)، نام‌های دایرکتوری با دونقطه (:) و در OS/2 با نقطه‌ویرگول (;) از یکدیگر جدا می‌شوند. اگر SANE_CONFIG_DIR تنظیم نشده باشد، SANE به صورت پیش‌فرض دایرکتوری کاری جاری (".") و سپس /etc/sane.d را جستجو می‌کند. اگر مقدار $SANE_CONFIG_DIR با نویسه جداکننده خاتمه یابد، دایرکتوری‌های پیش‌فرض پس از فهرست دایرکتوری‌ها جستجو می‌شوند. برای مثال، تنظیم SANE_CONFIG_DIR به "/tmp/config:" منجر به جستجوی دایرکتوری‌های tmp/config، . و /etc/sane.d (به همین ترتیب) خواهد شد.
سطح اشکال‌زدایی را کنترل می‌کند. مقدار 255 تمام خروجی‌های اشکال‌زدایی را چاپ می‌کند. مقادیر کوچک‌تر میزان جزئیات خروجی را کاهش می‌دهند. نیاز به کتابخانه‌ای دارد که با پشتیبانی از اشکال‌زدایی کامپایل شده باشد.

بک‌اند apple اکنون در نگارش 0.3 (سه‌شنبه ۲۱ ژوئیه ۱۹۹۸) است. از آنجا که من تنها AppleScanner را دارم و مدل‌های دیگر (OneScanner و ColorOneScanner) را در اختیار ندارم، فقط می‌توانم برای AppleScanner به صورت مؤثر توسعه و آزمایش انجام دهم. با این حال با این انتشار تقریباً بخش رابط گرافیکی (GUI) همه اسکنرها را تکمیل کردم. بیشتر قابلیت‌ها وجود دارند. دست‌کم OneScanner باید در حالت‌های سازگار با AppleScanner (یعنی LineArt،‏ HalfTone و Gray16) اسکن کند. باور شخصی من این است که با اندکی اشکال‌زدایی، OneScanner می‌تواند واقعاً قابل استفاده باشد. ColorOneScanner به کار بیشتری نیاز دارد. البته AppleScanner تقریباً به طور کامل پشتیبانی می‌شود.

در حال حاضر هر سه مدل فاقد پشتیبانی از آپلود/دانلود هستند.

نمی‌تواند الگوهای ترام (halftone) را آپلود یا دانلود کند.
نمی‌تواند الگوهای ترام (halftone) یا بردارهای کالیبراسیون را آپلود یا دانلود کند.
نمی‌تواند الگوهای ترام (halftone)، بردارهای کالیبراسیون، جدول‌های سفارشی تصحیح رنگ (CCT) و البته جدول‌های سفارشی گاما را آپلود یا دانلود کند.
برخی از قابلیت‌ها ناموجود هستند.

قابلیت‌های فوق به این دلیل وجود ندارند که من سخت‌افزار لازم برای آزمایش را در اختیار ندارم. دلیل دیگر، عدم آگاهی من از این است که رابط برنامه‌نویسی SANE چگونه یا آیا اصلاً راهکاری برای توصیف هر نوع آرایه‌ای به جز گاما ارائه می‌دهد یا خیر.

«ویژگی‌های» زیر هرگز پشتیبانی نخواهند شد، دست‌کم تا زمانی که من نگهداری بک‌اند sane-apple را بر عهده دارم.

لامپ اسکنر روشن می‌ماند و مجموعه کالسکه (carriage) در جایی که در پایان اسکن متوقف شده، باقی می‌ماند. پس از دو دقیقه، اگر اسکنر دستور SCAN دیگری دریافت نکند، لامپ خاموش شده و کالسکه به موقعیت اولیه (home) بازمی‌گردد.
اسکنر می‌تواند داده‌ها را با الگوریتم یک‌بعدی CCITT Group III (فکس) و الگوریتم پرش از خطوط سفید (Skip White Line) فشرده کند.
دستگاه AppleScanner ممکن است از چند پنجره پشتیبانی کند. اگر می‌توانست گزینه‌های مختلف را برای پنجره‌های مختلف (نواحی اسکن) با هم ترکیب کند، ویژگی جذابی بود و کدنویسی آن برای من یک چالش محسوب می‌شد. به این ترتیب می‌توانست یک سند را در حالت LineArt، اما ارقام و تصاویر داخل آن را در حالت خاکستری (Gray) و با وضوح متفاوتی اسکن کند. متأسفانه این امر غیرممکن است.
جهت اسکن را کنترل می‌کند. (؟)
این گزینه وضعیت دکمه روی مدل OneScanner را کنترل می‌کند. همچنین می‌توانید وضعیت دکمه را از طریق نرم‌افزار بازنشانی کنید.

اشکالات بک‌اند SANE به دو دسته تقسیم می‌شوند: اشکالات GUI (رابط گرافیکی) و اشکالات مختص اسکنر داریم.

ما زمانی متوجه وجود اشکال در رابط گرافیکی می‌شویم که پارامتری در زمان مورد انتظار نمایش داده نشود (فعال نباشد) یا برعکس. پیدا کردن این که کدام پارامترها در حالت‌ها و مدل‌های مختلف اپل بر اساس مستندات فعال هستند، تمرین جالبی است. ممکن است برخی وابستگی‌ها را از قلم انداخته باشم. برای مثال، در راهنمای برنامه‌نویسی اسکنرهای اپل درباره پارامتر آستانه (threshold) چیزی گفته نشده است. مجبور شدم فرض کنم این پارامتر فقط در حالت LineArt معتبر است.

اشکالات مختص اسکنر بیشتر ناشی از گرد کردن‌های اجباری مقادیر به منظور انجام اسکن هستند. در مستندات در یک جا ذکر شده که عرض ناحیه اسکن باید مضربی از بایت باشد. در جای دیگر می‌گوید عرض ناحیه اسکن باید یک مضرب زوج از بایت باشد. خودتان قضاوت کنید...

سایر منابع اشکال مربوط به ارتباطات SCSI، اتصالات و قطع اتصالات SCSI هستند. با این حال اشکالات کلاسیک هنوز هم وجود دارند؛ بنابراین ممکن است با سرریز بافر، اشاره‌گرهای تهی (null pointers)، خرابی حافظه و نقض‌های SANE API مواجه شوید.

خطای SIGSEGV روی SliceBars
هنگامی که سعی می‌کنید ناحیه اسکن را از نوار برش (slice bar) تغییر دهید، یک core dump تروتمیز دریافت می‌کنید! دلیل آن را نمی‌دانم. اگر ناحیه اسکن را از پنجره پیش‌نمایش یا با تایپ دستی اعداد انتخاب کنید، همه‌چیز خوب کار می‌کند. خطای SIGSEGV در اعماق کتابخانه gtk (یعنی gdk) رخ می‌دهد و من واقعاً نمی‌توانم آن را اشکال‌زدایی کنم.
گزینه‌های بسیار زیاد
این احتمال وجود دارد، به‌ویژه برای ColorOneScanner، که پنل گزینه‌های بک‌اند از صفحه نمایش شما فراتر برود. این اتفاق در سیستم من نیز رخ می‌دهد، در حالی که سرور X من با وضوح 1024x768 در حال اجراست. چه می‌توانم بگویم؟ فونت‌های کوچک‌تری را در سرور X امتحان کنید یا از صفحه‌های مجازی کمک بگیرید.
رفتار عجیب SCSI
در اینجا گفته‌های دیوید مایرز (David Myers) را نقل می‌کنم...

>> OS: FreeBSD 2.2.6
>> CC: egcs-1.02
فقط می‌خواستم این موضوع را پیگیری کنم... اخیراً کارت SCSI خود را از Adaptec 2940UW به یک چیپ‌ست دوکاناله Symbios 786 تغییر دادم. وقتی SANE را با درایور شما راه‌اندازی کردم، توانستم طرح‌های خطی (Line Art) را به خوبی اسکن کنم، اما اسکن‌های Gray16 منجر به جریانی از پیام‌های خطای SCSI روی کنسول شد و در نهایت با این پیام متوقف گردید که اسکنر گذرگاه SCSI را آزاد نمی‌کند. ممکن است به این دلیل باشد که Symbios نسبت به سخت‌افزارهای قدیمی سازگاری کمتری دارد، یا شاید اشکالاتی در درایور شما یا در خود SANE باشد...

اگر با یک اشکال در رابط کاربری گرافیکی مواجه شدید، لطفاً متغیر محیطی SANE_DEBUG_APPLE را روی 255 تنظیم کرده و دقیقاً همان توالی کلیدها و گزینه‌های منو را برای بازتولید آن تکرار کنید. سپس گزارشی همراه با لاگ ضمیمه‌شده برای من ارسال نمایید.

اگر یک رایانه Apple Macintosh دارید که درایور AppleScanners روی آن نصب است، گزارش اینکه کدام گزینه‌ها در چه حالت‌هایی خاکستری (غیرفعال) هستند برای من بسیار مفید خواهد بود.

اگر می‌خواهید کمکی ارائه دهید اما اسکنر ندارید، یا مدلی که می‌خواهید به آن کمک کنید را در اختیار ندارید، یا توسعه‌دهنده SANE هستید و فقط می‌خواهید ببینید بک‌اند apple چگونه است، به apple.h بروید و ماکروی NEUTRALIZE_BACKEND را تعریف (#define) کنید. می‌توانید مدل اسکنر را از طریق ماکروی APPLE_MODEL_SELECT انتخاب کنید. گزینه‌های موجود عبارتند از APPLESCANNER، ONESCANNER و COLORONESCANNER.

اگر با خطای گذرگاه SCSI یا تصاویر بریده‌شده و/یا جابه‌جاشده مواجه شدید، لطفاً پیش از ارسال گزارش برای من، متغیر محیطی SANE_DEBUG_SANEI_SCSI را روی 255 تنظیم نمایید.

پشتیبانی از حالت غیرمسدودکننده (Non Blocking Support)
تبدیل sane-apple به یک بک‌اند غیرمسدودکننده. پشتیبانی مناسب از sane_set_io_mode() و sane_get_select_fd().
اسکن (Scan)
امکان‌پذیر کردن اسکن برای تمام مدل‌ها در تمام حالت‌های پشتیبانی‌شده.

افزودن سایر قابلیت‌های ناموجود.

sane(7), sane-scsi(5)

بک‌اند sane-apple تماماً از ابتدا توسط میلون فیریکیس (Milon Firikis) نوشته نشده است؛ این بک‌اند عمدتاً بر پایه بک‌اند sane-mustek(5) اثر دیوید موبرگر (David Mosberger) و آندریاس چکوانوفسکی (Andreas Czechanowski) توسعه یافته است.

11 Jul 2008