From 02864b4c55732c3c723ff730874a807e25b2d3b9 Mon Sep 17 00:00:00 2001 From: gb <741021719@qq.com> Date: Thu, 13 Apr 2023 15:05:31 +0800 Subject: [PATCH] Disable UI if protocol was mismatch --- .../sln/usb_tools/Debug/usb_tools.exe | Bin 1738240 -> 1738240 bytes pc/code_twain/sln/usb_tools/DlgScanner.cpp | 19 ++++++++++-------- .../sln/usb_tools/scanner/scanner_handler.cpp | 4 ++-- .../sln/usb_tools/scanner/scanner_handler.h | 2 +- .../usb_tools/scanner/usb/async_usb_host.cpp | 14 ++++++------- .../usb_tools/scanner/usb/async_usb_host.h | 2 +- 6 files changed, 21 insertions(+), 20 deletions(-) diff --git a/pc/code_twain/sln/usb_tools/Debug/usb_tools.exe b/pc/code_twain/sln/usb_tools/Debug/usb_tools.exe index c38b6d8d55ed4b749efea744845526c9142b4e55..4bf4a45f6d3ddc620b537e6fe030c9ab6847dcbc 100644 GIT binary patch delta 25804 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
-gwfOJ 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 delta 25227 zcma)k30zah6Yx7iUVs1r5+GcH9HO8G6Ce;yG2UoU@jmdTo~U50RgoepjZyqRb+xrt zTdlUWRz;1i+G4$^_14y-*5dsrv|gw|(R{P}f zT*4)VPD#~xRCI7UN3*F{r991bWDfpa(TQ`TX;(g77RL^n%kgt$iF5$JTlOjYi;d+6 zIO~`_TK+@lF3g!*{5j`?bS`gk@l$Q}=BS#-HaS&e+3if#bYCi?YIy#8mposWsnFtd z7&_g#7fK)Zf|f55Bz&T4MB4>LP}6py6IG+@%~CZ*k-*T&rBHYGmIqZ+J^+5+{|#EZ z@=IKU0))d-swV79ptKqR`~BJgw5~6}{Al2Rbe%y@;bY}}*<}}`e2F|!R(TE(&7l(h zsC+c@Jd$tYW@EF$Ili^~-)xo>$9s8nWQUb;d>4-_=D-M^_ZY(tddBcJ4;@SO=J<|^ zRQZZ&2?Wd1$H2s)m>tcVGy=>^pT3cabC2kqhK!_R@4EwLc=!vht;o~bmO zpU&~4yi%nPtiW(j{&TMw=96&#yjM@=ri>5rUfb$KJW%*78jydQ1IXRGNT`}jteuhF z0b>Y%$$KO__chJODd*Dd`JKw1>@81*f2EA1U-99pF6_7}Cw{Vur~B}BRXlU~GN0g+ z#Qd)3XZb`jpP%7B_K9XETwy-{*@t0nJMq8xjbWw_<2$OOncaW!!_^w*p(npw9ZAdh zz3M!s?-9P0|6sOsw-Z0tKaH8f@dy03vXj1-^5X-RGl{qOrvV4qUKdz?PvG!~;p;&C z$Q3l-`e)#Les>sgzY-YI3L9|VXBf!vT{#~Y^hBhEGeh?wXO2mJ-!U@8Zw%B7{yNu=|QXb{UNQHTY>!bkVxjk ze|Smgh(I#~Nbh(;_u22lz|T7hX$5qS^)zd6@Ps;Cay_K~XIDSmn7-qY) z;&|9zn$6xPi&z0U#L?wh@+8g(?t(`77-#HfBS;_WK> zM@G`j5g-2jHj&}ASh|6c(D}_c1y!?hF2HvC4Zu460S$l50^{w@A8S+2wsB$j!BJVh zzJ36^yA0|-(E)6Z6R>>y8=5~DwUxPgl^@?WO|w)Dechf9y8GcKlzKb_N}G#;`t%_{ z_`?eL$=L>8Tm1~=oBWlOztmR8F6zwjuI+T}H=Cq<=XS&07H|MDw8y7JNVE{Zf8EY zV;sA#oomIwjw)J~@d$92xp4d}&15EcE?=$jWw!WMG-$FJx;5WRn?WDqE!uOe2MCg@ zyUJ=kBz$t*a<<0waaz64;)Lx9jbN`N>T3b1|o)Sio(?*HMB_xy(W zPE%3XD+E;2z@y&%*-q;`EB@~7PqTaXNO_k&S+tQK+~+*24dD2gz5(prYf`>v-*%~M zdw{l|ECaGH`@@g(co2D9ALyX35)|WtomF`om@&me!^f`Bu%;{Ye6teJu7At#?)#5h z%mo12s)V1`Wm5hd(@D1Ug_NJ0{fXQ74}eCw0BSb#Qa-$&j#lzR`n6_8U+3rdGq#Ne z%?@;j;T^pUv^}pE5Pyuva?Ez1HNq2K2NweF6F0uLpN6H&Xg;|AB6dJBG{*z%>>BaoJ!)LmM9Rt`KN?@)bimP}w zJey|j9_D+D?9V<7lJK97g4{lV zNdnN=G8z<=Yl5HOTZ6u&mtCluM_U;FM(zxHNrh=NIKyUH#g;J;$;u3z zTm+cMCLCa=9APWMCMsyA<^~^^H^RsN7a$Rbqx4Q4h*i4-N?ptNZFwtL<93=)dMA*9 znPl)gAia*svK4fAF1?zWb^HvA7d3Kkp16t~v?~?A|QpKbbVw_t>A%Mx6p} z1`yl22(P2}(|m`?yV&;541a5KCc~YtXftI54T>$D+LxZo|2p**+Y_SuuhTlJ^7a9O z2~%``4!pnj0DdIAdin4Su0-K%|_d(k;96Qo}wtqP$#6V zdyPUTF`ZEEB_`Cm@@v{EVbYdZd+wyWN>Sw`TH;mkvJ140Mmu}Cmmofi^Y^`8_S(LG@U>AC;l1?j|6O-#cHW zJ0N&3Uo)BwM1j|69WwnvuS7Sm(H*V1UUCJE%GeC6Z-W}`eT%S%{v_= zs6^@a-6E}PZqhv&)IEUd4t0Yul(qB@?MkEG0ZbRbY^0Itwu{(m|&WIJS!4g@ozou_FE56TuZ8w>Xa$r`LEll*Vo{=&4rF1LnJ`d&v zgDQ=5sGdmpc`uPtpd1^D%p@@JSTG5eQaG0NU)EC)`x-s^mFb3Zx3~pbr+71o44r2E zLdCea8@?Nfb#^34q=X3+VCqJjQx#27raV^(MG<~f9a|dM$`GVjL95U?qr}PT6wY|E z{usNB|9^F#6-351muP8q8|G`5r0<53k%}R(C#Wu8je<^WC5MxRF(FU~ban!r=JqV} zg8I87j-W}^bPW2U6BEvkyzt6;x)Y;xN+Md}BMG$`#%OsA^)mEBw=r0ZIe zn}}71$<+?$qC02_ssi*U&o<}C`U&eFzXFBI%|<_{Q$n2r^lXuvvV{*Gzd{A`xG>du z4AH`t&bz)wu`9g8u^|Oo>-5Y}2Hm?&r@7R(#+=DaljLZHf${Nv-au1ixGW)HrNaIW z5(;Trv%c1|2IiIm9lk=V{Qf@u%ARPHzv~MIQ6kW$@1~p^O$nccpntB=KJ;QVI*SPq z$1^62`PDm`s9@GB5Y}ibnIoYJT(J(iON2_7mXe!pqu8!YD==FlTG)e$wC)?tob*7I zeOyDM3-PF2tiwcP#F!ese$`?W_FsUuyCZ&*P}Wm3n3=41rR1Sq^mRw1iatxoqleCt zuGW2p%!ED!B{eNd((tP1{Z*BtatamXga$$Yj-Y5ma-6h#(ML)Yr zF=GtqC(uwY1Wk1G?}#LB6H(gljIVX^AIw*tU{8Kg!!VVY>96b_)+WzcqkTIx4m^2I zlh7F?Qdl27V8;2N(sOiZCOeoY4dex{o6s5KN=z0@6dsz7-Jq>X_-XVjyQAi*nm`lN zye`I&BPr-`3FAu$ClA5=lnf$3WyU(QvCbq+948VrXVsarCHw2dt+?BhNt`#m-sTZq-~85=H-7>_loAC5UyHse$QUMcT~4ORF$uo11i zMhCHt8I5SyHCl-xa=-(3F_It!THZn8X8qku^3v7+Y@3#St%_(Q)-0n)aFvlzI5w>j zB@W`+ut^b(XzU;^)XN9Jnuj831ZEK{B^s6Q_lmUMYb8-TvE$MktxSZZz=@%v(42OX zAas|JMzh~(8<96F4e!gV8|@z&Yx|i`n=Go3gg%ro)}zrrcqouIXEkb13sv@)_Tr-s zqZ$v;qNkNZ9HycGz7{MJmvvAcn}>>jb!taK>iB3$TNW*^VBD?iJ4ilKq6z1uX{az$ zqVRd~>?K6gI^pi?mv*peUu@Hp?C9f6$xiwb>fJ>Wj>;RPL2RA65$&A9_4Au_^d;Co zL_0Z=*x^1O*wOjD5+7pW?MRTw#O#4h-D?fcmUi40#1J`02aI&2wb&@}NG8$y4fgzb6(H3 zWK{}#K7MIGZfvA6XvR8B?QPV?bqBu%EP!jcLf|M|KKB*r!EX1m1H2#(z}hkxfTsu1 zj299=W8ZJE<`tk^$hGQ@i~K7n26);Ca2Fkl{}IZSP?kacekhMJ&73~xJu1AvHkLYd z3LT#>>FoX0F~H8M7sh}hL5@F#zmB4S1(J7ZEjs_yeLnWgB~e8ZYgCbwHk~dfXsq(k4GVLjO%|9OEd=cU0e-9C7M!;fL(3sk+8(K23(Q0y%yYSVR;l}>a)XAet#RR=F+WKIi>{4ou$zSbA^~%~r~(BTkRbesoA4ZOS4r~5 zP%y_7mNeMQN)wU z!wyLkm3!KRc75Xw6Ar|PXcAj?tOr;}PB96TB;=H0K@`np%%4nTEc!O@f6JKJN6K!hvrHt3oQoC3VO5%^m1TY-0C zXwVgw_uv^K?_M$5&psk;$C5ci467BW0loJp6Uvm&N9RvV!yW606H=vn^Vr&UKFU}o z4H8>dLMz&$a`mC-VH_pWR7oRMC2Oz(S}c!d%tO1nLRiMDBa~eweJ21LpiQWU!TuNM z*7wn)Gg1QqpOnVX@8dqANrQFQ&(i5MS&gwbx;3Eaa#;}l9_Fl#xFGq@ zFVY35I+c^Uj{OgG0bLCn-+)3VGTwn>|Eo*g9H@e%38tCyyL2>q|CH3)O3d;x=Ii1A zg%SNO=4HI=k#dpvvfKuAIFIRw^3O=STI0`1lf-qHKM~;e^8X@mz5pvkMTP?T{0Y&; z>6}#IGgOD^)d|Bs1fy_F2Rk;P=yRZu3H@C&y)BrM%#^nT#uJCr%J&-3!TzpU%(w>R zI>0q34(t`eF9U7Ghw%bI@DXcRbNwXBuG%@4xKzxn2K(n-AYq+k5=weEpb-OHLp}Ro z+7QVt)e!mxQ&t07F~D_}^GwW=P*!{g61!HMI={c?{=?$V@FZGKV zF&Numlo+F5%m6HshfW~V<0^pM4|W&@d~du#>@b#$q-cC4<_6S5&lsY*VmxrbyzaLl zNYTQMRoG?Z+RElO7&@Z?ZR+ZxMEMt`LzT&9<0ZV7$f-6nFb&y+ISU%l5BKO`m)X;R zSd}noSp&Lvk8bbMEnj3xPN6^MNqV8Bm!#25{8F^{lJqZ{K^uRSW*3n#P_nea?y(Q+ zSxQz{HsQ0igj5G@Q^VgZ9srwACN`+vG(2%M5PLz|*(Dqz?4&@U z*w}zJc2ESO$rq%~%)KsX_62EQX3J!B;sQi_@RYwUfF^P#qr?8(D44u@I_&ayI*lE- zr~wWBoep7zB@O8P-|1HIArRcbNFDa&-OKUT9b21I(;Kz}K{A)L2`L>L?8q~M^<^%; zgT4D*WKzgEbonfus#ijI_Sjb%2F3xSS0@w<5pnjWymf(2U2%+rMg(??pFi|zK(YN@ zm1yKK503dM4?B~X{h&v`Lv-3vO>3FNJT&r&GzLw-F7==TQPFj2XAiQht-t{i#%``=!CW^m%QsBP=1u@m zn0BnP8&Y=~#b-*=P|ly=<7bma8V@qw(nwB3@Bb-%BJ0`?>VzMbqS@8bzUb~4E-+** zjOq!aO#_Z|!dM5t@TkTQl3DL4MWJIkHN%sqkCVbA%n^%d>R8UT@C^~(wZ(?4i->aSuh8!ALbgwzB3o1)iBqHE*VgrXsnv0HXEy; zccpL}qLewS%A9k_OqEGKtUZq_1Bm%tvM7toz`2ce#P%I|k9jmUq%<7u!_bl2QkCkM z21vA=cI>%$N(g%k#015nYqzD{0`OjjL^wV5zfjV1u`P+SUn{Z$_5^YZY%R$hT6*90 zQJ4b_iDFt3=SwgoUex1gWHWar`#omQenJ+EAw;p}zB_mn?kA97qtSPz!OWgcsQ9jQ z8Z-Po^ysei3DYLtdheceG3~s6G?1+lR*Xl5g0vFF{Uwd@FT_063+{OSgy*k4uq{C{ zdu%>>|1W8)0R?0zAg>Vm3E{oTi&+TPkh(YrNOF7hel39T z3ncSVaJT!yIa;Ps^4pmGCJiHYBG6E|@l4!IQ1ZpdnmUaa3V6}rEFlaJZ``d(0 zSOpGCa%@8ufWwRP8OrS?iA3=aq-W9U`D_sS>9*8IwZGL{497l8#{oE)e2#K`xJYK~ zROI(q8c+8}eIHBPw*gVLm4%z(ACLR%iw8JMW|4GnF6z~Om_Qa0f+M>YW2Yd$CsHHb z5689kbT(S{1hV^V43q72|b4hr%cTO>oMR{3|KF9N0XmQ zLy);%>f^Dp1xnxMC{H28wz(@eFnt@)*-|E&sqKSiT$hG0Klj04pCHprX&WENM6nOF z*lKu?g~wwo+4Yb;myTha$QCr3-Tpww*Tzl8HQyOtXUE z4q+-!z%?>QO(W{@Qu?d%3d~aArFn`?qbQ4I+bc+d-b0-lrD2Nk5cVexx0IfOI+L)$ zA8qUbx!c@Esl5GpFugo#Ct#Ff3=`}^HGnAzm1%@nS?NO?tbi=|R~U{e8l~;L{^*AD zd*IqG0t?sBgGOl(-3z(BlByYf8j5-)4IJ@ldyvB-0Wje`u=+e1tac|sH)~&FCRRZ- z!W*DiY%>HxBA}zy>~Ow?x{CgJCG{U+31|*x8!s}zV67SjbN7&JyQ+R7$v2n61b(8_21)?u zh6$_@+zo^yI-WZa@JO2&p$52QQ$k`gNh*8uF*r0SII`B&02S=~6Uw0rYB<1M2Qs+4 z4$63Nu#Q$i850hK`V~;d`oi_g(9f?S^H`{ojrJz)U@%Wq0Oe1DE6nzk6v0c5?o>=Muweoa7oZc1BwyF+Y)snV1uA+}U6oX$Zt zH>JTvPi444VJWSGWcqFM8i*r~I*)x>=d*>qkns}&P7VS%(m?KczQo29cED3`UO8T` z7g;QrQns+ZCE+Ht6hPaw9x{4^@y;xn87;mgjVsC^u*xPT{2X1}8UU~x0oLSU&H61n z&+i`TU^VWbpCE6E1UD4GKI(;U0Lff>5QC5nvT`>Vric0#6G={6JX%=Uuru+vGmIS` zE_kKZ0`xf;EIcTCpp3hsz*2WYc}(F1Y8GYPM{_RXan7;n($;G5QV7^(lZN>T#aJFfDd}D&Vwq5DC+>qDG|r)oq%NF1C58B`z$A>!YOvRO=5+^!lJ{J{ z|3x3AzR}G5^=zByK*bw!?vr3c2?)iw{x8IoR2;@v5=8}y>mZ0bf)NJ3xzy8Ba4=Z zldu*fWyXyq^EXlj?iS-l$0^QLh`RqxX%|qc-D7TT+%I;qzp0CL&>%WRh%Y$Bl#V2J zwLK0!79Z^mRu0}U7PA4)AZ``|*hWX_()nhiPbWGDiMuibUAdm(u8frEwgSED!D*R= zad>D3;Par+0Aj-|Ha7@dR~al8IX)N~*npO8lcmGqD;Svfn)XsSSoYwy(eCk?Z-A0? z4QRb5_cI#r&9!EFHK4N3*fwxVxXYUhpogQ=@Nfm~2HKF4{=*()OBSQ*bE|A`c+WT^2;AFiV zzwJcd_;OL`n2`=_Pryq+Y`i%D%bF&C8V(){LA<$_jEoVx!8=~w1kbxUo(vWEanqrX zJAT{<4H;3b5yXKJeXfQnxM@>ZpdhpV*V4f?nyk}t2Av&DQ2TcgQ9E$WQ9WSQp9Twh z#icgQtG9GSJN!9*C}BzqmVr0?g%F4>qW%@x!h8tp4YU6^f?-I83dSm;{%_m=8&FKAuM66_yzHy$C`@`dfq-=wc8z ziv9~}gSpn^=7p~unuSoXBtoSUW-9PoTLh*OLxQ5XoA)_ncF=9}u2vEtaeLDm+ltF& zTaj_OZ2(Xh(q%BEHithIiiw60q6z|8;(*+7*M{gYZUlQLsR50K0&{~!m0{dSw&))l z3Jr&f_aC8!;ZU*EwE^A46<;Kv^aw6nMr6FL2bcbU4v-xWhQ9Gi>0kusOp_Z9u6%;X zk7xG=G@}IWI1CFykJ@m1w439xOvIH`k8Pkyn0WEgH*5@GR}u!TBI<>`L2@8om1eh- z194_pAbPY`+8JdUn9eSj;v7_D=-VjH$J_VC3vp;gtnTR!Ec76XJ5Pc^cOKFotRZjm zlnKe;_GAv%;(~DI8es;rhM^up#BQ#~f&PFkZrt_>=c3w$VJePOW(?m3X4mHMk~i?y zh3&X_n)P{YL*GSnf1xAoIb+UBNQYsYl(l4Cx2x*Lk<4|0FP^~grUT5mO?$$Ez}RiL z8dL-r1peW80^bMV#kpWgBFqJ$ZsJ_<{wo{I1%hZ(egGq~jThDh0N0eqE=)ulI&dE% zSqCnfeuQ)#xC+$mk~9NFb>yO%6F00m9l7@%cV1>Nt(o=>s9^>(mG;Kl(TO-hTerk= zt_-m(8QGNhyj=sjdc(C9t-visq&<5#)vWr5({vYl83Xz;_8E;q&b|rZD-Q4V9#DlU37h|C@A(q5-j~ z&?JEzqGhk)cEEzBHiPQ_jrBcA$XYVwgu|$K+~ME{@(HYemw{+n_L z%;Ic1<_8jmfARAQu+q8CsIZz2W%-~6^kpZQtbAb)l4!;;Vdk<#GhyNm!{`jIEvtKG zLzWC~KJ(CyF3_b)%z{nAD-_*_3km-H4}#hh$Q`nlfvMo2i4x~Y+PCT7grfs)@Ej$y z@garghSTvG?ohlH;wc{YcwqTpvb=f1hCb`V{lS*~VnZMF<)$Z+y{Hm*M|=Nj%ma}9 z3dV-afsW*-*Rht#PrrKHhYwmmtsy#Ly(n_zU=Nvh*yt#ZqU3 z>`)C0^*y~}UZg=&qvK^!H`y=$| zIHwa0s08Mt_bQmy^eC&MKPRC@d&wBU1)$^{PRY1D#6!4T^z?f;GW9bP?}aFl?ho4CHjoiA8MCF-~_yDVi ztMLgC@Vad;=Cwsa7Wy|j953q#ryIW!TZ|%zPn_^lQSP|XH+0W`pldqj6k4)!?{n%P_-i0zsAyl03Iy;yQS`X-^V!OR&pnz z`zI78{Wj#_ZkCdrhy7qQ&F$|b#3C5C6(HD1GN-C5U~VG*)gmq10GY*#J~Z5^QZatM zQve2^$E7uQvcY#T8warkxD)Nndks)IIXNmM&E<;F>dVs5eivaT!!rC$Cg?AIA|@;* z-ogUVpO`o}ZgpD7%%3gHC15g#rtXM7{UHQTlA+jgxiz$N<_?Hmg3oRnLSwj_%&bdj z?pTO5-~D4pS)JwK=;T{13l~xpjG<&D z@5$*xXIK-%z6w>_s|CGAY#$hcDGUP$e2oQ?^T!_TK#q|h$0&Gu8n0N4SIUg1YCTBe z{``eF0WW4$zOCovF$%_jo5`#w|SRz35OJT zk0%c1tTJOI&`&g;D)a#b8n1{NME|&O0htAJAf<6XV{3l(VAc;fvyq6aTm=LbJfz~G z?>qp%0!D`ASPJFYqo+`)cR1HB_{bxGb0l>qU|gCT^tQ`5*rkCzr;zawH|yAD7{hDP zqN&_SCg~sRovGXuDK=PN;x=-Kf6XoW)mc2Qp%}orzkrkB)X4$5UT6twIr9co-2CVb z0Q>PEH7BSiP}?yX5o*f){{c1lG^Q0ux*hy3Cy*&lTs;KBlm(JEr|EJML;nNNPG~jU zKPalXWwTF`Te7N!Fr3^N>*0WyM;*?$xC)?2>MV|x3=pbetmG8sLMh>8)PSk^6uO!!@2mC%e$2)| za#snC=JRfmqxphb8_GzN`?Ko5ZD?egJcYelXG0s(@kTWsiTn!GJ*2N!sW3%Nho zP@8ml=%}vuz{~SIK(A)txg+ol*A-ZcWeVQnx&0e?Wh|C*{CY`zr7e~{`1P3hN?9yd z@asN!eY2C?h-)_gWhPO8a} z`y{>pE5^D6V#5BbxR2di+{eBK6SKAwTxDFD8(0Q4gpA`I(fAJ?v!R6SQ&R zaKpqj*>UmbstqMxk%oEquWgC7;76EQy1EpTS;g-nc5R%swU||Y_yOB)Co(n4NDepl ziVb~v8|Lja(!`5tz@x=n5OPmZx?2O6aEt^kSjBl+HD*rbjJB-e0vW%P=*TKAjA?TL z1+V6OoM4wgE*2$lr2Pm5t>#ijjhZb+dDs;dqx|G@;HgT;$C*i`30g=`Pn_{?#nx|slR_+o&m98L%WI56u>))!#~YGRO*?2q z0lzb?+4*1FQ2triFx;}13#Zf3$+cXt+o)MM&Afy?y7m-$x|WOR(dRQ8KKPF|XC1^R z?OugMoXLYd-_7@z(}7K0#yGapCHHpoc``PLC3N z)@3&C#8Tn*K(uik7gY3m3b6nnv}qIRw_7uqn{OHiiJb|bVlMCoa!50<@85uFM6f@8 z#0q%R)kkmI50yf1b#ilk*_JyHMa)K&{1N9{TmL^n^!{GulUjpCzzqCAqm07>qS!8^4S z;4X<16SWG;Xjg%AvY4nndMfMeiL}?Gne7JQPT}@>HCz+HmT0_GQVF+Psw`P@L9d0z zhfrk_&W?SKHeQorY!yzBjMXKT z5SN^}=diYbgA`b=l+?(xg@`O%fw!*f1ox!pki<3`o};P1!#&tBO)b?h+A?904C_-a znVFI@{UL1q$f!Lg(*r z#k^u?UpmN<5RyYV@Kl(oAXUteh`A!#`GIo)#yS0gvl`^BT==KN`G@wnWydb( zEc|@sc=q1yoPz;A-|f7hBQAv9a%Koho7>K5q>y*VS*^lNB@NCKNKNev=bN~&Tp z^-QD7e+D8`Jy%{)o^KKlGOVKqxvpZ+>I``x@*L_~fFe4}y;RQk>+uS$c?jP99QE!j zkMKyiO`1pqKIi(hSp;UAwXAQ};)uX!Z@op#6Pvx!%g*xUz#cMZ$~)obkD2mR{IqAv zwK4&?!1*dVd5(#){xsaRPbJbM$QJ_l3Y@e#p)IZCyU?0YxiRoY3c$kPt*||@!v*=$ z1h8*x^ul`)_2}|cCfH>Rharv%Lpju{wR~#-d(Q#VVu{A?JC>@)(AR~k_5eh}svw|D zjBs5TA6pM0AfFiEcDQQ{fJX%rR6=3Dc{OgZNP3!tfzIg9*78)(984H@-5VE#Z}q4{ zm^`dwsMudC+}{Q}0l6-)q(8ip6od<%ao^YRcRWJqbF?r_-X>v*FIF0u^L_w1CydkJ zUM+*6%WNTE=4gWxyQO8_l{Fe1eSy&AXmle??%OHV3ka6>24K@94q&o{6K({htQ0nT zK{i1c`b<;;yb70JKS6Xp(@J0U^ojVD009#v76cyvg%BG5)_(&lu+bD*Q3y3tZ$dA(s~G5bz;z(4NT*pC8s8o!>vuq4`8E# zE)HQ?P{u^@I;bm@v1oWhRX$6wNUpVks zG#!q8^Qr(%*l^F$EnZz+Jw4uVQikA72o8Qg-xK@XO!{nv_Ns{%FHufzOxhg4gpW=#jry2-_Oq zl>uI%88H|>@4A@y&jwY(y?+rQ1|w{Tfh#$LsZa&2uz`^y*y~N_qZ8SBG&{g6qRWgZ z_*??)eTqvxOc_fFo0ip$u#MhNn0EmWs=TbU4(@B1$*<|Vd2ntl%mb6MSTK|j{_F|* zGr&v5%AxQ)z$-|_{6)~j6$Pw;Wx}19dek=1D==s^(_}|^d$z%KA99zMfE>3yL1O~F z^lUm)k3I?X@(&9GSW9U*NC4IbG5rj94TL9?W%Vh--SpE>(6vCX@S?GvSQB#bcJgil zC2yMLEEra(t_LeN%3X~Lk414X{CTEp_;%1++5;T4^9FngD~ue$%$S#U0l;j_>TRU6 z-I1j8=Bg+w6+kT~jA(w4my(tK^#rX7@@mUot9gPdabX7(>VmvN`-OrXHm!IBv$G(B zm;fWiSuDwzxq}K~YM{XAh*7LOBY`N+=VJLRkT2e1~M(=&9qW znbW5iP)mZ1aujTIlSX>NSBJu3n=ArfJc22BDP1yO4rl$i+EFK8N~4ZOx2P@~vjD#lC_&mI1Gz(0kxbyv@#^LuITUD{9g@NY0N*qd$fC0FlgL}z+^3KP&xvahkED#Q!^ zd0VSOlwIJ{YBQ&F8_Ly@S?d)34}D`&_EEhKse@~1z!SdXh41g1gs6XzB3r3sy#7Iv z*~*CaXD`>{!39>SJow@h0^J(J(GWq4R8X&tx+ zq3b|}}_h+iw<)hu4JbC7NIr1ovU>oIG3=r=DHcETJG3`6)BZn2PN)KClY>{Jne zij?r&;%K}0xYnMx7Gjv=y^6++5VVh#pwW8xWOD%dWK#n7MrfyIA`_q=Slo5HT&g9H zYwCb&_-?{tsf1p$EtW2?>=L_hXE93Zuhg;@Ngc}XuMCUm5%t(UiMEtp0jMUHu6fsy ziQI9kY)Aug8K?}5j07Q57#K~D(lQvXCfP8srL;Gw3a;=3)}dB8O0|o`Y}pLj6|`X} zXn@jJQ#J1~XkH0J3Tnl$!cTxViOLhdKM;hEPt*b*d=B5rC;=AIo5VHX0_-k8Fq*|63kz|_zLVs;n&em(cv6rc*OGv&=**9bA2uKY@sji zxu~y8Fp>^^Eq<#nBL=pV?u0H)!Zo!+Uz|fzju~5_jJ1r*pFtVhG0smmKpB(A!FL^$alF9gRZzyR zjLYRv27?#(c%fV{XVmoB<7ZOi=M+%+NHtg)fD%T-*)#bw7stCOAG!t|zc7*-w+V15 zQ*qr!h@Jfh4$8J1QUW*M%|W??=rD0(YJpoF+AvNTSu_x&Yo@bzgFucd!Q~RTa}D`I zMi55-O+X$yUI&OE_b=9xk85Pf|fqtWA)k@0ImijqV4mnw*a8x6F1HGY9a!$O`Wnf(HUxD$_Xu*4!0 zanYgi%6RrUX#E)wD_Zyy=$D!ahq2cM5cH_Tks0Kz#Yx!#cO2j)zyxG**M(!V9^3Jy zYtScr#d%6l6@XWfwDm4Xf5KRadCofrKf>gbgj!kYLg*N1Vs)1s!Y@=o7y&U`;4RrM zRPF?caoH}gf3;v01H*r!hRaHqiIiX_wgUs^)yvSi2}*xv+bvW#LD`nceTaM~DieyX zPR6btD2BdQ$7}61f8w0FY1-URrp;8C42o zAzZ9~RSQ8M4#}WSVj*ms^4d70it;1=d(s2X@K_=-44ejgUkJxi?9NM^qUl%h%&qyZJeYG@lryF6Jz|gu@K|$-*UwG3@^mWM9~spAHny~zp~A&?E(vRcv^D+EfpRg6!X6( z`vK;J8)6+hNdf5#uJ{Rt*-`wk0bQG-?3%C-6c0Ce^D6O%KJ2Ttg9`jyS_`9Y$yzF0 zs3i6R=%&2DJtC0PJ~U{mvQ>hL%&m}ZjKkCeZ-_i$EQMHxze%uNkU+U<96+3>f1q!s zDg)>n=;x`*IL5PX%`~MCqo_lE)0D0Jf5rZV_mjQA8gZu%eluX3Z<;bd4#CT8v4Q%8 z-e=LAY09uMHJCpv9yn*v9MI=iVMPa2!P-aWu+2;tVx1tJTC^MadaYd z{)3o2>AJ90o~Bt-n?KO2Y07BKVY}(dK>9lBHeK0)K89vbSH}54Mq?qnhNiq~tU~dN z-#N$7k?G1l>gNt-1hKGG_!Ad|$cw05zS2Jsf{Del84Gh#98V_)zN>p3%FT!52!wm1 z4jd{#9Rz+1c$k^&bdwDN%UWn_+9No0AL|HbB*F{uT5&_Xmba8*OroULO?){Rgz+ML zZII!a$e|=KFG+->yCle>YgT|ITS}9$rt_}6l@)!7+Rspi(qE#!GnDc0SUf`+tbXQ@ zJVz`n6?)@>z@JBlW`N{w*boaai|N(GYNSn?lh>gqGnDP%Pj&>)RQg5LV>$D%ba*4g zLQ0P7=xre*b6`#Q1&y4k^if0lO9sDGEG!k~;exQZ0a<1$eY?SO$xN1BA~CF@CZ!#? zTWhb4#b5B?|FI=$nuxV&A{I=DjX#HKXDWlWSKnGpL1uHrKY?e$#cyI^sc;$>1m!uD zJWCm^z0wRZy*XlW6XKjE#OVZa-&yq0EM-&+#MI`9kxhs}O^8Z@IP5HXI!oD&u0$yX z%GUH_lv|+8hR5y#Wv|FvZ~a>Nhv?TmcR<_@ftMz?pf97aLS-zy73CBvqu{ZiP^pgF zN(6u-DP3M~j7fY7ZX5~Y-?aGW4QSEQYb!ccsMKe{xZ}9(h#1R%eH$@85X(gMv!UE9 zVoZcrb19w{9OoU=AZWW^sYTi0&VEHzIA(7XW403rh4XUQRPcuIx)cDLK9#vJeI&IV zY!`>!(@@6SAGllvWgKX5`6!feB*9^NKa{bp;}E|a$}x`eb|?or%3Gmago6>D6E?vM zwkTZw7|NF%<#kZ5a+DF2@o5x>Sq)|Ek+`!mC}a1=^`%h8o`LJ%gYsY~V_HvM9(CA-;)f~5pg1~vE@5vWl@(V;iI1D z&&5g~+GM?OTzRSrRA}9}LM2N>bIz-#Se0j0;~2E=W)8S5m@i*f$^mO9QL^?^G^vK|oyfUSGYQNOF)WEcDX#o7tmFfbI z^_s!4@5Cb0UUfWLv{yZt?vDQ0t2W5ar%p**1aK&DpL!&>D~-~~sa#aNPo3?Nk=i$P zQ>tIuyfi9ZPOU|M>{Cb38OYhHo&r3>Uzi+#-m|Jho%ZVw>o22qR&_gc%&PuTzA5EV z%Hq^-Q;(;hdvWp~3PLvgZa%BGZ< z)a|KPfSYw`sPTaM96K-mOY7N#>Z>e07=2l(j-%J344WGM;wx3@Mw!rPn>xVicNip* zy-Z!4_Ep*sY1TPEsr%4Qo`yuj2=vPlbu7INy*i>!k?)8<5MLc%A0M8eNkGX*)x*%b zqw0@Ui$E_KnqHcvnzfoOn%$ZoHK#O}k>Qwn5=~h*A5%+cdKvoixVnei8vQ~2Mg5q> z^@-aO_gL8z>SAX)AO8H9dZN{KPHl1ueVrVZVoDjFaxmq1%Fxsz5M_Vr?6mc16?h2F zDX4|$o!`{aIfpyNYFBC>X|r{^bg^-};$q`>#e3?f>EG8M(bwy##9fK8NxPC(8jc(4 z3{>)jEv0|Tixh3DK6OB9dFuMqN2%@8Qqopp($xwWt*gJO1K#n`CF@MO zGrHg68sil4!SRs^y%Ta19wh|p!}J~X3HluUQ2i+Vcsy46*&xVH=*q{CY%m!{CtpvV zm_j{NP^*AqvF4FxbnN+9sWwKNsXeKc=oGp@UAC@I+_1Qcxazn%H2t!=RrcYeSi=y* zNW&z^yfoX2V& zbrQ6XwZ*#Qy1#XFoLgLJTzT9_aU0?`$8C$-5w|;Tf80-TJK}4x@u9O<)T-daNiz)h z4D#fVa#)MBiF5KpQ*Jc>1RC-nM?+Ru4(;^D;5q`ai_DCnxX6+H)~z$0pn_MrBh zc7kr1ZlmsITz358`0eqP@tYF9(4W%Z)<4xpB*rJ^C(cVm)2^yp>mMZ_PFa}>tWs3E zNIyffOA{JjMv{cu$sW9;6kU#GR5KIA$_-h<#2(kT{o zyrz!xc$AQ>_e?BKJe(vm*bJM{^lNIhv>c%S(V%75)FEN>K$6em_s3t1cS%T07zX3E zG2v9g{RBoIqwk@gqhF-og$`U(cP^r+g`O04+dR#F&6U_Fu#UmnZCabQyKb#cA2&FD zL4rBqVuD1k&`0X~>c{He1;?Tii<6cmtxI~8q&5T_+88<-dK&r~1{j7KRvFeAJ~Mn} zIA%C$IBWRT;E}9M4oZ$lPER%__e?e=|CVe|_DQj)B&T)<*UL@ydX(y&Hav|g_oUVX z6NfdMVo~1j>Q(Mb;cd7ETta(Xr;9_f>*_+9Li4Vx_4GmO-s@^#XVZ&)7w= z<>>NV^;CKsGTu{%`owF8YxA`~X-{Y`YJb-@XkTmL;ob5qj&xXAmmsJaqVlx?9Xa2ps1Oe;8^Ej}0!#`s6Oj1CxuA z*Cb!THlXpLlHsA$glJ+kdJUTJQXLJ!G~I_9hgQE-_h=Vs2uc1uc}mKSl!p*(OsShw z&!_&CN|}5pJ>W?-J2Zl(UPHyoWA`#%_+?X+2H*Z;I^jwe|tTbFGUm zNT<IUlG(aqDX(0!)ct@}xLL3c~{SjT{SR6!5c^-=z(Jm>=JJ9_^(x?gp%Cr>Rd;ZK=J}veTBOJ;y?sf?<^j zvT2ev-8BO=xuE1ZnnfD4Ez!SoQBca|)O&zIrzz4@X|2+k2U}or% zx`>4DZK-=wD^pLwWOpa^VQOQlEKQjfk`|MuPwSFq0`tnlf-MZDSetCheck(BST_UNCHECKED); enable_buttons(pnp != NULL); - GetDlgItem(IDC_CHECK_AUTO)->EnableWindow(pnp != NULL); - GetDlgItem(IDC_BUTTON_RESET_BULK)->EnableWindow(pnp != NULL); - GetDlgItem(IDC_BUTTON_REFRESH)->EnableWindow(pnp != NULL); if (scanner_) { @@ -767,15 +764,18 @@ void CDlgScanner::set_device(usb::LPUSBPNP pnp) else { wchar_t buf[128] = { 0 }; - uint8_t h = 0, l = 0; + uint16_t ver = 0; swprintf_s(buf, _countof(buf) - 1, L"%04X:%04X", pnp->vid, pnp->pid); ::SetWindowTextW(m_hWnd, buf); - err = scanner_->get_protocol_version(&h, &l); - if (err) + err = scanner_->get_protocol_version(&ver); + if (err || ver != PROTOCOL_VER) { - msg_box(m_hWnd, MB_OK, L"Unsupported Scanner", L"Failed to get protocol version with error %d.", err); + if(err) + msg_box(m_hWnd, MB_OK, L"Unsupported Scanner", L"Failed to get protocol version with error %d.", err); + else + msg_box(m_hWnd, MB_OK, L"Unsupported Scanner", L"Protocol version is mismatch: expect %u.%u but return %u.%u", HIBYTE(PROTOCOL_VER), LOBYTE(PROTOCOL_VER), HIBYTE(ver), LOBYTE(ver)); scanner_->release(); scanner_ = NULL; enable_buttons(false); @@ -784,7 +784,7 @@ void CDlgScanner::set_device(usb::LPUSBPNP pnp) { scanner_->set_image_receiver(img_keeper); - swprintf_s(buf, _countof(buf) - 1, L"%u.%u", h, l); + swprintf_s(buf, _countof(buf) - 1, L"%u.%u", HIBYTE(ver), LOBYTE(ver)); SetDlgItemTextW(IDC_EDIT_PROTOCOL_VER, buf); refresh_bulk_status(); @@ -815,6 +815,9 @@ void CDlgScanner::set_device(usb::LPUSBPNP pnp) { ::SetDlgItemTextW(m_hWnd, IDC_BUTTON_SCAN, L"Scan"); } + GetDlgItem(IDC_CHECK_AUTO)->EnableWindow(scanner_ != NULL); + GetDlgItem(IDC_BUTTON_RESET_BULK)->EnableWindow(scanner_ != NULL); + GetDlgItem(IDC_BUTTON_REFRESH)->EnableWindow(scanner_ != NULL); } void CDlgScanner::get_option(const char* name, void* value, size_t size) { diff --git a/pc/code_twain/sln/usb_tools/scanner/scanner_handler.cpp b/pc/code_twain/sln/usb_tools/scanner/scanner_handler.cpp index 2376be6..b9d0789 100644 --- a/pc/code_twain/sln/usb_tools/scanner/scanner_handler.cpp +++ b/pc/code_twain/sln/usb_tools/scanner/scanner_handler.cpp @@ -415,12 +415,12 @@ int scanner_handler::wait_result(cmd_result* reply) } } -int scanner_handler::get_protocol_version(uint8_t* h, uint8_t* l) +int scanner_handler::get_protocol_version(uint16_t* ver) { if (!is_scanner_available()) return ENODEV; - return usb_->get_peer_protocol_version(h, l); + return usb_->get_peer_protocol_version(ver); } int scanner_handler::get_scanner_status(LPEP0REPLYSTATUS status) { diff --git a/pc/code_twain/sln/usb_tools/scanner/scanner_handler.h b/pc/code_twain/sln/usb_tools/scanner/scanner_handler.h index 943cbe2..118fb2f 100644 --- a/pc/code_twain/sln/usb_tools/scanner/scanner_handler.h +++ b/pc/code_twain/sln/usb_tools/scanner/scanner_handler.h @@ -101,7 +101,7 @@ protected: // I/O ... public: // following methods transferred by EP0 - int get_protocol_version(uint8_t* h, uint8_t* l); + int get_protocol_version(uint16_t* ver); int get_scanner_status(LPEP0REPLYSTATUS status); int restart_peer_bulk(uint32_t timeout = 1000/*ms*/); diff --git a/pc/code_twain/sln/usb_tools/scanner/usb/async_usb_host.cpp b/pc/code_twain/sln/usb_tools/scanner/usb/async_usb_host.cpp index dee692f..dbe0d4e 100644 --- a/pc/code_twain/sln/usb_tools/scanner/usb/async_usb_host.cpp +++ b/pc/code_twain/sln/usb_tools/scanner/usb/async_usb_host.cpp @@ -479,20 +479,18 @@ dyn_mem_ptr async_usb_host::handle_data_in(dyn_mem_ptr& data, uint32_t* used, pa } } -int async_usb_host::get_peer_protocol_version(uint8_t* main, uint8_t* sub) +int async_usb_host::get_peer_protocol_version(uint16_t* ver) { - uint16_t ver = 0; + uint16_t v = 0; int err = libusb_control_transfer(usb_handle_, LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_ENDPOINT_IN , USB_REQ_EP0_GET_PROTO_VER, 0, 0 - , (unsigned char*)&ver, sizeof(ver) + , (unsigned char*)&v, sizeof(v) , 1000); - if (main) - *main = (ver >> 8) & 0x0ff; - if (sub) - *sub = ver & 0x0ff; + if (ver) + *ver = v; - return err == sizeof(ver) ? 0 : EFAULT; + return err == sizeof(v) ? 0 : EFAULT; } int async_usb_host::get_peer_status(LPEP0REPLYSTATUS status) { diff --git a/pc/code_twain/sln/usb_tools/scanner/usb/async_usb_host.h b/pc/code_twain/sln/usb_tools/scanner/usb/async_usb_host.h index 67bcff6..2129f38 100644 --- a/pc/code_twain/sln/usb_tools/scanner/usb/async_usb_host.h +++ b/pc/code_twain/sln/usb_tools/scanner/usb/async_usb_host.h @@ -77,7 +77,7 @@ public: uint8_t& encrypt_data(void); public: - int get_peer_protocol_version(uint8_t* main, uint8_t* sub); + int get_peer_protocol_version(uint16_t* ver); int get_peer_status(LPEP0REPLYSTATUS status); int restart_peer_bulk(uint32_t timeout = 1000/*ms*/); int set_gadget_encrypting_method(uint32_t cmd_enc = ENCRYPT_CMD_NONE, uint32_t payload_enc = ENCRYPT_NONE, uint8_t enc_data = 0);