TWAIN Specification Chapter 4 ¡°Advanced Application Implementation¡±Ò롪¡ªÓ¦ÓóÌÐò¶ËµÄ¸ß¼¶ÊµÏÖ
±¾ÎÄÊǶÔTWAIN¹æ·¶µÄµÚËÄÕ¡¶Ó¦ÓóÌÐò¶ËµÄ¸ß¼¶ÊµÏÖ¡·µÄ·Òë¡£Òò¹¤×÷ÐèÒªÁ˽âTWAIN£¬ËùÒÔ˳±ãÒëÁËһϡ£ÕâÊÇ˽È˹¤×÷£¬Äú¿ÉÒԲο¼£¬µ«±¾È˲»±£Ö¤²»´æÔÚ·ÒëµÄ²î´í»ò²»ºÏÒË¡£Èç¹ûÄú·¢ÏÖÓв»Í׵ĵط½£¬¾´Çë¸æÖ®ÎÒ(yedaoq@126.com)¡£
4.1 ÐÔÄÜ
Ó¦ÓóÌÐòÓëÔ´½øÐÐÐÔÄÜÐÉ̵ÄÄÜÁ¦Ê¹ÈËÃÇÄܹ»¿ØÖÆTWAIN¼æÈݵijÌÐò¡£ÔÚµÚËÄÕ¡°Ó¦ÓóÌÐò¶ËµÄ¸ß¼¶ÊµÏÖ¡±ÖУ¬Ä㽫¿´µ½¶ÔCAP_XFERCOUNTÐÔÄܵÄÐÉÌ¡£ÐÔÄÜÔÚ²¢ÇÒ×ÜÊÇÔÚ״̬4ÆÚ¼ä½øÐÐÐÉÌ£¬³ý·ÇÓ¦ÓóÌÐòºÍÔ´Ë«·½Í¬ÒâÑÓ³ÙÐÉÌ¡£ÊÂʵÉÏ£¬¹ØÓÚÐÔÄÜ»¹Óиü¶àÐèÒªÎÒÃÇÈ¥Á˽⡣
4.1.1 ÐÔÄÜÖµ
TWAINΪÿÖÖÐÔÄܶ¨ÒåÁËÒ»¸öĬÈÏÖµºÍÒ»×éÔÊÐíʹÓõÄÖµ£¨¼ûµÚ10Õ£©¡£Ó¦ÓóÌÐò²»ÔÊÐíÐÞ¸ÄĬÈÏÖµ£¬µ«ÔÊÐí½«ÏòÓû§ÌṩµÄÖµÏÞ¶¨ÎªÒ»¸öÔÊÐíʹÓÃÖµµÄ×Ó¼¯£¬ÒÔ¼°Ñ¡ÔñÐÔÄܵĵ±Ç°Öµ¡£ 4.1.1.1 ĬÈÏÖµ
Ò»¸öÔ´±»´ò¿ªÊ±£¬Ã¿ÖÖÐÔÄܵĵ±Ç°Öµ¶¼±»ÉèÖÃΪTWAIN¶¨ÒåµÄĬÈÏÖµ¡£ÈôTWAIN䶨Ò壬ÔòÔ´½«Ñ¡ÔñÒ»¸öÖµ×÷ΪĬÈÏÖµ¡£³ÌÐò¿ÉÒÔʹÓÃDG_CONTROL/ DAT_CAPABILITY / MSG_RESET²Ù×÷½«Ä³ÐÔÄÜÖØÖÃΪTWAIN¶¨ÒåµÄĬÈÏÖµ¡£
ËäÈ»TWAINΪÐí¶àÖÖÐÔÄܶ¨ÒåÁËĬÈÏÖµ£¬Ô´Ò²¿ÉÄÜÒòΪÄܹ»»ñµÃ¸ü¸ßµÄЧÂʶøÊ×ѡһ¸ö²»Í¬µÄÖµ¡£ÀýÈ磬Դͨ³£ÔÚºÚ°×ͼÏñÖÐÓÃλֵ0À´´ú±í°×É«£¬µ«ÊÇICAP_FIXELFLAVORµÄĬÈÏֵΪTWPF_CHOCOLATE£¬´ËÖµ±íʾ0´ú±íºÚÉ«¡£¼´Ê¹TAWINĬÈÏֵΪTWPF_CHOCOLATE£¬Ô´Ò²¿ÉÄܽ«TWPF_VANILLA×÷ΪÊ×ѡֵ¡£µ±Ó¦ÓóÌÐò·¢³öÒ»¸ö
DG_CONTROL/DAT_CAPABILITY/MSG_GETDEFAULT²Ù×÷ʱ£¬Ô´½«·µ»ØËüµÄÊ×ѡֵµÄÐÅÏ¢¡£»ùÓÚ´ËÐÅÏ¢Ô´ºÍÓ¦ÓóÌÐò½«Äܹ»ÐÉ̳öÒ»¸ö¸üÓÐЧµÄ´«ËÍ·½Ê½¡£
×¢ÒâÕâ²¢²»ÊÇÔÚ°µÊ¾TWAIN¶¨ÒåµÄĬÈÏÖµÓ¦±»ÍêÈ«ºöÂÔ¡£ÔÚ´¦ÀíÌØÊâÊý¾ÝÔ´ÐÔÄܵÄÊ×ѡֵºÍTWAINĬÈÏÖµÖ®¼äµÄ³åͻʱ£¬Ó¦¿¼Âǵ½´ËÎÊÌâÓëÔڻỰ¼ä±£´æºÍ»Ö¸´Í¼ÏñÊôÐÔÀàËÆ¡£¼Ù¶¨Ò»¸öÊý¾ÝÔ´Ïë±£´æÄ³Ð©ÐÔÄܵĵ±Ç°ÖµÒÔÔÚ½«À´µÄij¸ö»á»°Öлָ´ÊǺÏÀíµÄ£¬ÆÚÍû»Ö¸´ÖµÄܹ»·´Ó³ÐÔÄÜ
µÄµ±Ç°ÉèÖÃÒ²ÊǺÏÀíµÄ¡£Èô±£´æÉèÖöÔͼÏñÊôÐÔȷʵÓÐÓã¬ÄÇôӦÉùÃ÷Êý¾ÝÔ´µÄÊ×ѡֵҲ²ÉÓÃͬÑù·½Ê½½øÐд¦Àí¡£
¼ÓÔØÊý¾ÝԴʱ£¬Ïà¹ØÐÔÄܵĵ±Ç°ÖµÓ¦±»ÉèÖÃΪ´ÓÉÏÒ»¸ö»á»°»Ö¸´µÄÖµ»òÊý¾ÝÔ´Ê×Ñ¡µÄÖµ¡£´ËÖµ½«±£³ÖÖ±ÖÁ±»Ó¦ÓóÌÐòÏÔʽ¸ü¸Ä»òÓ¦ÓóÌÐò·¢³öMSG_RESET²Ù×÷¡£
²¢·ÇËùÓÐÐÔÄܶ¼ÊÊÓÃÊ×ѡֵ£¬ÁíÍâÐí¶àÐÔÄܲ»ÊʺÏÔÚ¶à¸ö»á»°¼ä±£´æºÍ»Ö¸´¡£ ÒÔÏÂÊÇ×îºÃµÄÀý×Ó£º
Àý1£ºÉ¨Ãè²ÎÊýÔÚÒ»¸ö»á»°Öб£´æ²¢ÔÚÁíÒ»¸ö»á»°Öлָ´
1. Óû§Ê¹ÓÃÒÔϲÎÊýÅäÖÃÊý¾ÝÔ´Óû§½Ó¿Ú£º24λ4*6Ó¢´çͼÏñ£¬Ë®Æ½ÊúÖ±·½ÏòµÄDPI¾ùΪ200¡£
2. Óû§Ñ¡Ôñ¡°É¨Ã衱ȻºóÊý¾ÝԴ֪ͨ³ÌÐò½øÐд«ËÍ¡£ 3. Ó¦ÓóÌÐò³É¹¦»ñµÃͼÏñ¡£ 4. Ó¦ÓóÌÐò½ûÓÃÊý¾ÝÔ´¡£
5. Ó¦ÓóÌÐò״̬4ÏÂѯÎÊÖ¡£¬ÏñËØÀàÐÍ£¬Î»Éî¶ÈºÍ·Ö±æÂʵĵ±Ç°Öµ¡£
6. Êý¾ÝÔ´±¨¸æÓû§ÉèÖõĵ±Ç°Öµ£º24λ4*6Ó¢´çͼÏñ£¬Ë®Æ½ÊúÖ±·½ÏòµÄDPI¾ùΪ200¡£ 7. Ó¦ÓóÌÐò¹Ø±ÕÊý¾ÝÔ´¡£
8. ÔÚ¹Ø±ÕÆÚ¼ä£¬Êý¾ÝÔ´±£´æµ±Ç°Ö¡£¬ÏñËØÀàÐÍ£¬Î»Éî¶ÈºÍ·Ö±æÂÊ¡£ 9. Ó¦ÓóÌÐò´ò¿ªÊý¾ÝÔ´¡£
10. ÔÚ´ò¿ªÆÚ¼ä£¬Êý¾ÝÔ´»Ö¸´Ö¡£¬ÏñËØÀàÐÍ£¬Î»Éî¶ÈºÍ·Ö±æÂÊ¡£
11. Ó¦ÓóÌÐòÔÚ״̬4ÏÂѯÎÊÖ¡£¬ÏñËØÀàÐÍ£¬Î»Éî¶ÈºÍ·Ö±æÂʺ͵±Ç°Öµ¡£
12. Êý¾ÝÔ´±¨¸æ´ÓÉÏÒ»¸ö»á»°Öлָ´µÄÊý¾Ý£º24λ4*6Ó¢´çͼÏñ£¬Ë®Æ½ÊúÖ±·½ÏòµÄDPI¾ùΪ200¡£
Àý2£ºÊý¾ÝԴʹÓÃÊ×Ñ¡Pixel Flavor´úÌæTWAIN¶¨ÒåµÄĬÈÏÖµ 1. Ó¦ÓóÌÐòÊ״δò¿ªÊý¾ÝÔ´¡£
2. Ó¦ÓóÌÐòÔÚ״̬4ÏÂѯÎÊĬÈÏPixel Flavor¡£
3. Êý¾ÝÔ´±¨¸æPixel FlavorĬÈÏΪTWPF_CHOCOLATE¡£ 4. Ó¦ÓóÌÐòÔÚ״̬4ÏÂѯÎʵ±Ç°Pixel Flavor¡£
5. Êý¾ÝÔ´±¨¸æPixel Flavorµ±Ç°ÎªTWPF_VANILLA£¨ÒòΪÉ豸±¾Éí²ÉÓÃÕâÖÖ·½Ê½·µ»ØÊý¾Ý£©¡£ 6. Ó¦ÓóÌÐòÒªÇóÖØÖÃPixel Flavor¡£
7. ÔÚÖØÖÃÆÚ¼ä£¬Êý¾ÝÔ´½«µ±Ç°Öµ±ä¸üΪTWPF_CHOCOLATE²¢×¼±¸ÔÚ´«Êä¹ý³ÌÖÐת»»Êý¾ÝÒÔÊÊÓ¦Ó¦ÓóÌÐòÒªÇó¡£
´ËÂß¼ÔÚÒ»ÖÖÇé¿öÏ»áʧЧ¡£Èç¹ûÊý¾ÝÒª¶ÔÒ»¸öÊÜÏÞÖÆµÄÐÔÄܵÄMSG_GET·µ»Ø
TW_ENUMERATION£¬ TAWIN¶¨ÒåµÄĬÈÏÖµÓпÉÄܲ»ÔÚÖµµÄÔ¼Êø¼¯ºÏÄÚ¡£ÔÚÕâÖÖÇé¿öÏ£¬Ó¦ÓóÌÐò½«ÈÏΪĬÈÏֵ䶨Òå¡£Ò»¸ö³£Ê¶ÊÇ£¬³öÓÚ°²È«ÐԵĿ¼ÂÇ£¬Êý¾ÝÔ´Ó¦ÔÚµ±Ç°¿ÉÓÃÖµ¼¯ºÏÖÐÌṩһЩºÏÀíµÄĬÈÏÖµ£¨TW_ENUMERATIONÖд洢һ¸ö»µË÷ÒýÊÇÔÖÄÑÐԵģ©¡£µ±Ä¬ÈÏÖµÊÂʵÉÏÕý±»Ê¹ÓÃʱ£¨Í¨¹ýMSG_RESET£©£¬´ËÏÞÖÆ½«ÎÞЧ²¢ÇÒµ±Ç°Ä¬ÈÏÖµ¿ÉÔٴδæÔÚ²¢±»¶¨Òå¡£ÕâÊÇÒ»¸ö½öÏÞÓÚTW_ENUMERATIONÈÝÆ÷µÄÎÊÌ⣬ÒòΪËü°üº¬Ä¬ÈÏÖµµÄË÷Òý¡£ 4.1.1.2 µ±Ç°Öµ
Ó¦ÓóÌÐò¿ÉÄÜÒªÇóÉèÖÃÐÔÄܵĵ±Ç°Öµ¡£Èç¹ûÔ´µÄÓû§½çÃæÕýÔÚÏÔʾ£¬µ±Ç°ÖµÒ²ÐíÄÜ´ÓÖп´³ö£¨ÀýÈç¸ßÁÁ£©¡£Èç¹ûÓ¦ÓóÌÐòÉèÖÃÁ˵±Ç°Öµ£¬ËüÓÃÓڲɼ¯ºÍ´«ÊäÖ±ÖÁ±»Óû§»òÒ»¸ö×Ô¶¯Ô´½ø³Ì¸ü¸Ä¡£Ó¦ÓóÌÐò¿ÉÔÚ״̬6ÏÂͨ¹ý¼ì²éµ±Ç°ÖµÅжÏÊÇ·ñÓиü¸Ä·¢Éú¡£
Èô½öÐèҪȷ¶¨ÐÔÄܵĵ±Ç°Öµ£¬ÇëʹÓÃMSG_CONTROL / DAT_CAPABILITY / MSG_GETCURRENT£»ÈôҪȷ¶¨µ±Ç°ÖµÒÔ¼°¿ÉÓÃÖµ£¬ÇëÓÃDG_CONTROL /
DAT_CAPABILITY / MSG_GET¡£ÀýÈçÄú¿ÉÒÔ¶ÔICAP_PIXELTYPEʹÓÃMSG_GET£¬Ô´½«·µ»ØÒ»¸ö°üº¬¿ÉÓÃÖµTWPT_BW¡¢TWPT_GRAYºÍTWPT_RGBµÄTW_ENUMERATIONÈÝÆ÷¡£ ÈôÒªÉèÖõ±Ç°Öµ£¬ÇëʹÓÃDG_CONTROL / DAT_CAPABILITY / MSG_SETÒÔ¼°ÏÂÁÐÈÝÆ÷Ö®Ò»£º
? TWON_ONEVALUE£º½«TW_ONEVALUE.ItemÖÃΪҪÇóµÄÖµ¡£ ? TWON_ARRAY£º½«TW_ARRAY.ItemListÖÃΪҪÇóµÄÖµ¡£ ÆäÖÐÖµ±ØÐëΪMSG_GET²Ù×÷·µ»ØÖµµÄÒ»¸ö×Ó¼¯¡£
ͬÑù»¹¿ÉÒÔͨ¹ýTW_ENUMERATIONºÍTW_RANGEÈÝÆ÷À´ÉèÖõ±Ç°Öµ¡£ 4.1.1.3 ¿ÉÓÃÖµ
ΪÁËÏÞÖÆÔÚ»ñÈ¡ºÍ´«Ë͹ý³ÌÖÐÏÞÖÆÔ´¿ÉÓõÄÉèÖã¬Ó¦ÓóÌÐò¿ÉÏÞ¶¨¿ÉÓÃÖµ£¬Ô´²»»áʹÓÃÕâЩֵÒÔÍâµÄÖµ¡£ÕâЩÏÞÖÆ½«ÌåÏÖÔÚÔ´µÄÓû§½çÃæÉÏ£¬Òò´Ë²»¿ÉÓõÄÖµ½«²»»áÌṩ¸øÓû§¡£
ÀýÈ磬Èç¹ûICAP_PIXELTYPEÉϵIJÙ×÷MSG_GET±íÃ÷Ô´Ö§³ÖTWPT_BW£¬TWPT_GRAYºÍTWPT_RGBͼÏñ£¬µ«Ó¦ÓóÌÐòÖ»ÏëÒªºÚ°×ͼÏñ£¬ÄÇôËü¿ÉÒÔÒªÇóÏÞÖÆ¿ÉÓÃֵΪTWPT_BW¡£
ÈôÒªÉèÖÿÉÓÃÖµ£¬ÇëʹÓÃDG_CONTROL / DAT_CAPABILITY / MSG_SETÒÔ¼°ÏÂÁÐÈÝÆ÷Ö®Ò»£º
? TWON_ENUMERATION£º½«TW_ENUMERATION.ItemListÓòÖÃΪҪÇóµÄÖµ¡£Í¨¹ý½«CurrentIndexÖ¸¶¨ÎªItemListÖÐij¸öÖµµÄË÷Òý£¬Ò²¿ÉÔÚ´ËʱÉèÖõ±Ç°Öµ¡£ ? TWON_RANGE£º½«TW_RANGEÓòÉèÖÃΪҪÇóµÄÖµ¡£´ËʱͬÑù¿ÉÉèÖõ±Ç°Öµ¡£ ×¢£ºTW_ONEVALUEºÍTW_ARRAYÈÝÆ÷²»¿ÉÓÃÓÚÏÞÖÆ¿ÉÓÃÖµ¡£
4.1.2 ÐÔÄÜÐÉÌ
ÐÉ̹ý³Ì°üÀ¨ÒÔϼ¸¸ö»ù±¾µÄ²¿·Ö£º ? Ó¦ÓóÌÐòÈ·¶¨Ô´Ö§³ÖÄÄЩÐÔÄÜ¡£ ? Ó¦ÓóÌÐò°´ÒªÇóÉèÖÃÖ§³ÖµÄÐÔÄÜ¡£ ? Ó¦ÓóÌÐòУÑéÉèÖÃÊÇ·ñÒѱ»Ô´½ÓÊÜ¡£ 4.1.2.1 È·¶¨Ô´Ö§³ÖÄÄЩÐÔÄÜ
²½ÖèÒ»
Ó¦ÓóÌÐò·ÖÅäÒ»¸öTW_CAPABILITY½á¹¹²¢ÈçÏÂÌî³ä£º
Cap = ¸ÐÐËȤµÄÐÔÄܵÄÃû³Æ£¬Ò»°ãΪCAP_name»òICAP_name ConType = TWON_DONTCARE16 hContainer = ÉèÖÃΪNULL ²½Öè¶þ
Ö´ÐÐDG_CONTROL / DAT_CAPABILITY / MSG_GET²¢´«µÝTW_CAPABILITY¡£ ²½ÖèÈý
Ô´¼ì²éCapÓò²¢ÅжÏÊÇ·ñÖ§³Ö´ËÐÔÄÜ¡£ÈôÖ§³Ö£¬ÔòΪӦÓóÌÐòÉú³ÉÐÅÏ¢£¬·ñÔòÉèÖÃÒ»¸öºÏÊʵķµ»ØÖµ¡£ ²½ÖèËÄ
Ó¦ÓóÌÐò¼ì²é²Ù×÷µÄ·µ»ØÖµ£¨Ò²ÐíÊÇ״̬Â룩£º ÈôΪTWRC_SUCCESS£¬ÔòÔ´Ö§³Ö¸ÃÐÔÄܲ¢ÇÒ£º