001 /*
002 * ===========================================================================================
003 * = COPYRIGHT
004 *          PAX Computer Technology (Shenzhen) Co., Ltd. PROPRIETARY INFORMATION
005 *   This software is supplied under the terms of a license agreement or nondisclosure
006 *   agreement with PAX Computer Technology (Shenzhen) Co., Ltd. and may not be copied or
007 *   disclosed except in accordance with the terms in that agreement.
008 *     Copyright (C) 2017-2023 PAX Computer Technology (Shenzhen) Co., Ltd. All rights reserved.
009 * Description: // Detail description about the function of this module,
010 *             // interfaces with the other modules, and dependencies.
011 * Revision History:
012 * Date                         Author                        Action
013 * 2017/04/01                   PAX                     Create/Add/Modify/Delete
014 * ===========================================================================================
015 */
016 
017package com.pax.dal;
018
019import com.pax.dal.entity.EUartPort;
020import com.pax.dal.entity.ScanResult;
021import java.util.Map;
022
023 public interface IScanner {
024
025    public interface IScanListener {
026        /**
027         * <div class="zh"> 读取成功回调 </div> <div class="en"> the underlying called when read success </div>
028         * 
029         * @param scanResult {@link ScanResult}
030         */
031        public void onRead(ScanResult scanResult);
032
033        /**
034         * <div class="zh"> 扫描结束回调 </div> <div class="en"> the underlying called when finish scanning </div>
035         * 
036         */
037        public void onFinish();
038
039        /**
040         * <div class="zh"> 取消扫描回调 </div> <div class="en"> the underlying called when cancelled </div>
041         * 
042         */
043        public void onCancel();
044    }
045
046    /**
047     * <div class="zh"> 打开扫码 </div> <div class="en"> open scanner </div>
048     * 
049     * @return <div class="zh">
050     *         <ul>
051     *         <li>true -- 打开成功</li>
052     *         <li>false -- 打开失败</li>
053     *         </ul>
054     *         </div> <div class="en">
055     *         <ul>
056     *         <li>true -- open success</li>
057     *         <li>false -- failure</li>
058     *         </ul>
059     *         </div>
060     * 
061     * @return
062     */
063    public boolean open();
064
065    /**
066     * <div class="zh"> 开始扫描 </div> <div class="en"> begin scan </div>
067     * 
068     * @param listener
069     *            {@link IScanListener}
070     */
071    public void start(IScanListener listener);
072
073    /**
074     * <div class="zh"> 关闭摄像头 </div> <div class="en"> close scanner </div>
075     * 
076     */
077    public void close();
078
079    /**
080     * <div class="zh"> 设置超时时间</div> <div class="en">set timeout </div>
081     * 
082     * @param timeOut
083     *            <div class="zh"> 超时时间 </div> <div class="en"> timeout </div>
084     */
085    public void setTimeOut(int timeOut);
086
087    /**
088     * <div class="zh"> 设置最大扫码次数</div> <div class="en">Set the maximum number of scan </div>
089     * 
090     * @param times
091     *            <div class="zh"> 最大扫码次数,0代表连续扫码</div> <div class="en">Maximum scan times,0 represents continuous
092     *            scan.</div>
093     * @return <div class="zh"> true:设置成功; false:设置失败;</div> <div class="en">true:set successful false:set failed </div>
094     * @since V2.02.00
095     */
096    boolean setContinuousTimes(int times);
097
098    /**
099     * <div class="zh"> 设置扫码间隔</div> <div class="en">Set scan interval </div>
100     * 
101     * @param interval
102     *            <div class="zh"> 扫码间隔时间(ms)</div> <div class="en">Scan interval time (ms)</div>
103     * @since V2.02.00
104     */
105    void setContinuousInterval(int interval);
106    
107    /**
108     * <div class="zh"> 设置外置扫码模块的连接端口</div> <div class="en"> Set connection port of the external scanner</div>
109     * 
110     * @param port
111     *            {@link EUartPort}
112     * @since V3.02.00
113     */
114    void setPort(EUartPort port);
115    
116    /**
117     * <div class="zh">设置扫码时是否开启闪光灯。</div> <div class="en">Set whether flash is turned on when scanning.</div>
118     * 
119     * @param isOn <div class="zh">
120     * <ul>
121     * <li>true:开启。</li>
122     * <li>false:关闭。</li>
123     * </ul></div> 
124     * <div class="en">
125     * <ul>
126     * <li>true:Turn on.</li>
127     * <li>false:Turn off.</li>
128     * </ul></div>
129     * 
130     * @return <div class="zh">设置结果。
131     * <ul>
132     * <li>true:成功。</li>
133     * <li>false:失败。</li>
134     * </ul></div> 
135     * <div class="en">The result of setting.
136     * <ul>
137     * <li>true:success.</li>
138     * <li>false:failure.</li>
139     * </ul></div>
140     * @since V3.11.00
141     */
142    boolean setFlashOn(boolean isOn);
143
144    /**
145     * <div class="zh">停止扫码。要和{@link #start(IScanListener)}成对使用。</div>
146     * <div class="en">Stop scanning. Use it in pairs with {@link #start(IScanListener)}.</div>
147     * @since V3.25.00
148     */
149    void stop();
150
151    /**
152     * <div class="zh">设置扫码类型。</div> <div class="en">Set the scan type.</div>
153     *
154     * @param type <div class="zh">扫码类型。
155     *              <ul>
156     *               <li>0:Zxing</li>
157     *               <li>1:Cortex</li>
158     *               <li>2:ScanIt</li>
159     *               <li>3:ScanS</li>
160     *               <li>4:LiveScan</li>
161     *              </ul>
162     *             </div>
163     *             <div class="en">The scan type.
164     *              <ul>
165     *               <li>0:Zxing</li>
166     *               <li>1:Cortex</li>
167     *               <li>2:ScanIt</li>
168     *               <li>3:ScanS</li>
169     *               <li>4:LiveScan</li>
170     *              </ul>
171     *             </div>
172     * @return <div class="zh">结果。
173     *          <ul>
174     *           <li>true:成功。</li>
175     *           <li>false:失败。</li>
176     *          </ul>
177     *         </div>
178     *         <div class="en">The result.
179     *          <ul>
180     *           <li>true:success.</li>
181     *           <li>false:failure.</li>
182     *          </ul>
183     *         </div>
184     * @since V3.25.00
185     */
186    boolean setScannerType(int type);
187
188     /**
189      * <div class="zh">设置条形码设备参数。</div> <div class="en">Set bar code device parameters.</div>
190      *
191      * @param paramMap
192      *
193      * <div class="zh">D800条形码参数的键值对.
194      *  Map的键如下:
195      *         <table border="1">
196      *         <tr>
197      *         <th>Key</th>
198      *         <th>Meaning</th>
199      *         </tr>
200      *         <tr>
201      *         <td>preferences_decode_upc_a</td>
202      *         <td>support UPC-A format decoding</td>
203      *         </tr>
204      *         <tr>
205      *         <td>preferences_decode_upc_e</td>
206      *         <td>support UPC-E format decoding</td>
207      *         </tr>
208      *
209      *         <tr>
210      *         <td>preferences_decode_ean_8_jan8</td>
211      *         <td>support EAN-8/JAN8 format decoding</td>
212      *         </tr>
213      *         <tr>
214      *         <td>preferences_decode_ean_13_jan13</td>
215      *         <td>support EAN-13/JAN13 format decoding</td>
216      *         </tr>
217      *         <tr>
218      *         <td>preferences_decode_code128</td>
219      *         <td>support CODE128 format decoding</td>
220      *         </tr>
221      *         <tr>
222      *         <td>preferences_decode_code39</td>
223      *         <td>support CODE39 format decoding</td>
224      *         </tr>
225      *         <tr>
226      *         <td>preferences_decode_code93</td>
227      *         <td>support CODE93 format decoding</td>
228      *         </tr>
229      *         <tr>
230      *         <td>preferences_decode_code11</td>
231      *         <td>support CODE11 format decoding</td>
232      *         </tr>
233      *         <tr>
234      *         <td>preferences_decode_i25</td>
235      *         <td>support I25 format decoding</td>
236      *         </tr>
237      *         <tr>
238      *         <td>preferences_decode_d25</td>
239      *         <td>support D25 format decoding</td>
240      *         </tr>
241      *         <tr>
242      *         <td>preferences_decode_codabar</td>
243      *         <td>support Codabar format decoding</td>
244      *         </tr>
245      *         <tr>
246      *         <td>preferences_decode_msi</td>
247      *         <td>support MSI format decoding</td>
248      *         </tr>
249      *         <tr>
250      *         <td>preferences_decode_chinese2of5</td>
251      *         <td>support "Chinese 2 of 5" format decoding</td>
252      *         </tr>
253      *         <tr>
254      *         <td>preferences_decode_korean3of5</td>
255      *         <td>support "Korean 3 of 5" format decoding</td>
256      *         </tr>
257      *         <tr>
258      *         <td>preferences_decode_matrix2of5</td>
259      *         <td>support "Matrix 2 of 5" format decoding</td>
260      *         </tr>
261      *         <tr>
262      *         <td>preferences_decode_pdf417</td>
263      *         <td>support PDF417 format decoding</td>
264      *         </tr>
265      *         <tr>
266      *         <td>preferences_decode_micropdf417</td>
267      *         <td>support MicroPDF417 format decoding</td>
268      *         </tr>
269      *         <tr>
270      *         <td>preferences_decode_data_matrix</td>
271      *         <td>support "Data Matrix" format decoding</td>
272      *         </tr>
273      *         <tr>
274      *         <td>preferences_decode_maxicode</td>
275      *         <td>support Maxicode format decoding</td>
276      *         </tr>
277      *         <tr>
278      *         <td>preferences_decode_qr_code</td>
279      *         <td>support QR_CODE format decoding</td>
280      *         </tr>
281      *         <tr>
282      *         <td>preferences_decode_aztec</td>
283      *         <td>support Aztec format decoding</td>
284      *         </tr>
285      *         <tr>
286      *         <td>preferences_play_beep</td>
287      *         <td>Play beep when decode succeeds</td>
288      *         </tr>
289      *         <tr>
290      *         <td>preferences_open_illumination</td>
291      *         <td>Open illumination when decoding</td>
292      *         </tr>
293      *         <tr>
294      *         <td>preferences_open_aiming_pattern</td>
295      *         <td>Open aiming pattern when decoding</td>
296      *         </tr>
297      *         </table><br/><br/>
298      *         其他设备条形码参数的键值对.Map的键如下:
299      *     <table border="1">
300      *         <tr>
301      *         <th>Key</th>
302      *         <th>Meaning</th>
303      *         </tr>
304      *         <tr>
305      *         <td>UPC-A</td>
306      *         <td>support UPC-A format decoding</td>
307      *         </tr>
308      *         <tr>
309      *         <td>C39</td>
310      *         <td>support C39 format decoding</td>
311      *         </tr>
312      *         <tr>
313      *         <td>C128</td>
314      *         <td>support C128 format decoding</td>
315      *         </tr>
316      *         <tr>
317      *         <td>I25</td>
318      *         <td>support I25 format decoding</td>
319      *         </tr>
320      *         <tr>
321      *         <td>C93</td>
322      *         <td>support C93 format decoding</td>
323      *         </tr>
324      *         <tr>
325      *         <td>GS1 DATABAR</td>
326      *         <td>support GS1 DATABAR format decoding</td>
327      *         </tr>
328      *         <tr>
329      *         <td>MSI</td>
330      *         <td>support MSI DATABAR format decoding</td>
331      *         </tr>
332      *         <tr>
333      *         <td>CODEBLOCK F</td>
334      *         <td>support CODEBLOCK F  format decoding</td>
335      *         </tr>
336      *         <tr>
337      *         <td>PDF417</td>
338      *         <td>support PDF417  format decoding</td>
339      *         </tr>
340      *         <tr>
341      *         <td>MICROPDF</td>
342      *         <td>support MICROPDF  format decoding</td>
343      *         </tr>
344      *         <tr>
345      *         <td>MAXICODE</td>
346      *         <td>support MAXICODE  format decoding</td>
347      *         </tr>
348      *         <tr>
349      *         <td>QR CODE</td>
350      *         <td>support QR CODE format decoding</td>
351      *         </tr>
352      *         <tr>
353      *         <td>DATA MATRIX</td>
354      *         <td>support DATA MATRIX format decoding</td>
355      *         </tr>
356      *         <tr>
357      *         <td>AZTEC</td>
358      *         <td>support AZTEC format decoding</td>
359      *         </tr>
360      *         <tr>
361      *         <td>HAXIN</td>
362      *         <td>support HAXIN format decoding</td>
363      *         </tr>
364      *         <tr>
365      *         <td>MATRIX 25</td>
366      *         <td>support MATRIX 25 format decoding</td>
367      *         </tr>
368      *         <tr>
369      *         <td>TRIOPTIC</td>
370      *         <td>support TRIOPTIC format decoding</td>
371      *         </tr>
372      *         <tr>
373      *         <td>STRAIGHT 25</td>
374      *         <td>support STRAIGHT 25 format decoding</td>
375      *         </tr>
376      *         <tr>
377      *         <td>TELEPEN</td>
378      *         <td>support TELEPEN format decoding</td>
379      *         </tr>
380      *         <tr>
381      *         <td>C11</td>
382      *         <td>support C11 format decoding</td>
383      *         </tr>
384      *         <tr>
385      *         <td>NEC25</td>
386      *         <td>support NEC25 format decoding</td>
387      *         </tr>
388      *         <tr>
389      *         <td>CodaBar</td>
390      *         <td>support CodaBar format decoding</td>
391      *         </tr>
392      *         <tr>
393      *         <td>HK25</td>
394      *         <td>support HK25 format decoding</td>
395      *         </tr>
396      *         <tr>
397      *         <td>Postal</td>
398      *         <td>support Postal format decoding</td>
399      *         </tr>
400      *         <tr>
401      *         <td>UPC-E</td>
402      *         <td>support UPC-E format decoding</td>
403      *         </tr>
404      *         <tr>
405      *         <td>EAN-13</td>
406      *         <td>support EAN-13 format decoding</td>
407      *         </tr>
408      *         <tr>
409      *         <td>EAN-8</td>
410      *         <td>support EAN-8 format decoding</td>
411      *         </tr>
412      *         </table>
413      *     </div>
414      *
415      *
416      * <div class="en">D800 Key value pairs of bar code parameters.
417      *  The keys for Map are as follows:
418      *         <table border="1">
419      *         <tr>
420      *         <th>Key</th>
421      *         <th>Meaning</th>
422      *         </tr>
423      *         <tr>
424      *         <td>preferences_decode_upc_a</td>
425      *         <td>support UPC-A format decoding</td>
426      *         </tr>
427      *         <tr>
428      *         <td>preferences_decode_upc_e</td>
429      *         <td>support UPC-E format decoding</td>
430      *         </tr>
431      *
432      *         <tr>
433      *         <td>preferences_decode_ean_8_jan8</td>
434      *         <td>support EAN-8/JAN8 format decoding</td>
435      *         </tr>
436      *         <tr>
437      *         <td>preferences_decode_ean_13_jan13</td>
438      *         <td>support EAN-13/JAN13 format decoding</td>
439      *         </tr>
440      *         <tr>
441      *         <td>preferences_decode_code128</td>
442      *         <td>support CODE128 format decoding</td>
443      *         </tr>
444      *         <tr>
445      *         <td>preferences_decode_code39</td>
446      *         <td>support CODE39 format decoding</td>
447      *         </tr>
448      *         <tr>
449      *         <td>preferences_decode_code93</td>
450      *         <td>support CODE93 format decoding</td>
451      *         </tr>
452      *         <tr>
453      *         <td>preferences_decode_code11</td>
454      *         <td>support CODE11 format decoding</td>
455      *         </tr>
456      *         <tr>
457      *         <td>preferences_decode_i25</td>
458      *         <td>support I25 format decoding</td>
459      *         </tr>
460      *         <tr>
461      *         <td>preferences_decode_d25</td>
462      *         <td>support D25 format decoding</td>
463      *         </tr>
464      *         <tr>
465      *         <td>preferences_decode_codabar</td>
466      *         <td>support Codabar format decoding</td>
467      *         </tr>
468      *         <tr>
469      *         <td>preferences_decode_msi</td>
470      *         <td>support MSI format decoding</td>
471      *         </tr>
472      *         <tr>
473      *         <td>preferences_decode_chinese2of5</td>
474      *         <td>support "Chinese 2 of 5" format decoding</td>
475      *         </tr>
476      *         <tr>
477      *         <td>preferences_decode_korean3of5</td>
478      *         <td>support "Korean 3 of 5" format decoding</td>
479      *         </tr>
480      *         <tr>
481      *         <td>preferences_decode_matrix2of5</td>
482      *         <td>support "Matrix 2 of 5" format decoding</td>
483      *         </tr>
484      *         <tr>
485      *         <td>preferences_decode_pdf417</td>
486      *         <td>support PDF417 format decoding</td>
487      *         </tr>
488      *         <tr>
489      *         <td>preferences_decode_micropdf417</td>
490      *         <td>support MicroPDF417 format decoding</td>
491      *         </tr>
492      *         <tr>
493      *         <td>preferences_decode_data_matrix</td>
494      *         <td>support "Data Matrix" format decoding</td>
495      *         </tr>
496      *         <tr>
497      *         <td>preferences_decode_maxicode</td>
498      *         <td>support Maxicode format decoding</td>
499      *         </tr>
500      *         <tr>
501      *         <td>preferences_decode_qr_code</td>
502      *         <td>support QR_CODE format decoding</td>
503      *         </tr>
504      *         <tr>
505      *         <td>preferences_decode_aztec</td>
506      *         <td>support Aztec format decoding</td>
507      *         </tr>
508      *         <tr>
509      *         <td>preferences_play_beep</td>
510      *         <td>Play beep when decode succeeds</td>
511      *         </tr>
512      *         <tr>
513      *         <td>preferences_open_illumination</td>
514      *         <td>Open illumination when decoding</td>
515      *         </tr>
516      *         <tr>
517      *         <td>preferences_open_aiming_pattern</td>
518      *         <td>Open aiming pattern when decoding</td>
519      *         </tr>
520      *         </table><br/><br/>
521      *         Key value pairs for bar code parameters of other devices. The keys for Map are as follows:
522      *     <table border="1">
523      *         <tr>
524      *         <th>Key</th>
525      *         <th>Meaning</th>
526      *         </tr>
527      *         <tr>
528      *         <td>UPC-A</td>
529      *         <td>support UPC-A format decoding</td>
530      *         </tr>
531      *         <tr>
532      *         <td>C39</td>
533      *         <td>support C39 format decoding</td>
534      *         </tr>
535      *         <tr>
536      *         <td>C128</td>
537      *         <td>support C128 format decoding</td>
538      *         </tr>
539      *         <tr>
540      *         <td>I25</td>
541      *         <td>support I25 format decoding</td>
542      *         </tr>
543      *         <tr>
544      *         <td>C93</td>
545      *         <td>support C93 format decoding</td>
546      *         </tr>
547      *         <tr>
548      *         <td>GS1 DATABAR</td>
549      *         <td>support GS1 DATABAR format decoding</td>
550      *         </tr>
551      *         <tr>
552      *         <td>MSI</td>
553      *         <td>support MSI DATABAR format decoding</td>
554      *         </tr>
555      *         <tr>
556      *         <td>CODEBLOCK F</td>
557      *         <td>support CODEBLOCK F  format decoding</td>
558      *         </tr>
559      *         <tr>
560      *         <td>PDF417</td>
561      *         <td>support PDF417  format decoding</td>
562      *         </tr>
563      *         <tr>
564      *         <td>MICROPDF</td>
565      *         <td>support MICROPDF  format decoding</td>
566      *         </tr>
567      *         <tr>
568      *         <td>MAXICODE</td>
569      *         <td>support MAXICODE  format decoding</td>
570      *         </tr>
571      *         <tr>
572      *         <td>QR CODE</td>
573      *         <td>support QR CODE format decoding</td>
574      *         </tr>
575      *         <tr>
576      *         <td>DATA MATRIX</td>
577      *         <td>support DATA MATRIX format decoding</td>
578      *         </tr>
579      *         <tr>
580      *         <td>AZTEC</td>
581      *         <td>support AZTEC format decoding</td>
582      *         </tr>
583      *         <tr>
584      *         <td>HAXIN</td>
585      *         <td>support HAXIN format decoding</td>
586      *         </tr>
587      *         <tr>
588      *         <td>MATRIX 25</td>
589      *         <td>support MATRIX 25 format decoding</td>
590      *         </tr>
591      *         <tr>
592      *         <td>TRIOPTIC</td>
593      *         <td>support TRIOPTIC format decoding</td>
594      *         </tr>
595      *         <tr>
596      *         <td>STRAIGHT 25</td>
597      *         <td>support STRAIGHT 25 format decoding</td>
598      *         </tr>
599      *         <tr>
600      *         <td>TELEPEN</td>
601      *         <td>support TELEPEN format decoding</td>
602      *         </tr>
603      *         <tr>
604      *         <td>C11</td>
605      *         <td>support C11 format decoding</td>
606      *         </tr>
607      *         <tr>
608      *         <td>NEC25</td>
609      *         <td>support NEC25 format decoding</td>
610      *         </tr>
611      *         <tr>
612      *         <td>CodaBar</td>
613      *         <td>support CodaBar format decoding</td>
614      *         </tr>
615      *         <tr>
616      *         <td>HK25</td>
617      *         <td>support HK25 format decoding</td>
618      *         </tr>
619      *         <tr>
620      *         <td>Postal</td>
621      *         <td>support Postal format decoding</td>
622      *         </tr>
623      *         <tr>
624      *         <td>UPC-E</td>
625      *         <td>support UPC-E format decoding</td>
626      *         </tr>
627      *         <tr>
628      *         <td>EAN-13</td>
629      *         <td>support EAN-13 format decoding</td>
630      *         </tr>
631      *         <tr>
632      *         <td>EAN-8</td>
633      *         <td>support EAN-8 format decoding</td>
634      *         </tr>
635      *         </table>
636      *     </div>
637      *
638      *     <div class="zh">Map.value:
639      *          <ul>
640      *           <li>true:打开。</li>
641      *           <li>false:关闭。</li>
642      *          </ul>
643      *         </div>
644      *
645      *     <div class="en">Map.value:
646      *          <ul>
647      *           <li>true:open </li>
648      *           <li>false:close </li>
649      *          </ul>
650      *         </div>
651      *
652      * @return <div class="zh">结果。
653      *          <ul>
654      *           <li>true:成功。</li>
655      *           <li>false:失败。</li>
656      *          </ul>
657      *         </div>
658      *         <div class="en">The result.
659      *          <ul>
660      *           <li>true:success.</li>
661      *           <li>false:failure.</li>
662      *          </ul>
663      *         </div>
664      * @since V4.08.00
665      */
666     boolean setBarcodeParam(Map<String,Object> paramMap);
667}