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.ScanResult; 020import com.pax.dal.entity.ScanResultRaw; 021import com.pax.dal.exceptions.ScannerHwDevException; 022 023import java.util.Map; 024 025public interface IScannerHw { 026 027 /** 028 * <div class="zh"> 打开扫描</div> <div class="en"> Open scanner </div> 029 * 030 * @throws ScannerHwDevException 031 */ 032 void open() throws ScannerHwDevException; 033 034 /** 035 * <div class="zh"> 开始扫码</div> <div class="en"> Start scan code </div> 036 * 037 * @param timeoutMs 038 * <div class="zh">超时时间(MS),范围:0 ~ 120*1000(X5超时时间为500ms~9900ms)</div> <div class="en"> Time-out time 039 * (MS), range: 0-120*1000 (X5 time-out time is 500 ms-9900 ms) </div> 040 * @return <div class="zh">{@link ScanResult} </div> <div class="en">{@link ScanResult}</div> 041 * @throws ScannerHwDevException 042 */ 043 ScanResult read(int timeoutMs) throws ScannerHwDevException; 044 045 /** 046 * <div class="zh"> 停止扫描 </div> <div class="en"> Stop scanning </div> 047 * 048 * @throws ScannerHwDevException 049 */ 050 void stop() throws ScannerHwDevException; 051 052 /** 053 * <div class="zh"> 关闭扫描 </div> <div class="en"> Close scanner</div> 054 * 055 * @throws ScannerHwDevException 056 */ 057 void close() throws ScannerHwDevException; 058 059 /** 060 * <div class="zh">获取支持的码制列表。</div> 061 * <div class="en">Gets a list of supported coding systems.</div> 062 * 063 * @return <div class="zh">码制列表。 064 * <ul> 065 * <li>Map.key:码制类型。</li> 066 * <li>Map.value: 0:关闭; 1:打开; 2:自动检测反显。</li> 067 * </ul> 068 * </div> 069 * <div class="en">Code list. 070 * <ul> 071 * <li>Map.key:Code system type.</li> 072 * <li>Map.value: 0:Close; 1:Open; 2:Inverse auto detect.</li> 073 * </ul> 074 * </div> 075 * @throws ScannerHwDevException 076 * @since V3.20.00 077 */ 078 Map<String, Integer> getBarcodeMap() throws ScannerHwDevException; 079 080 /** 081 * <div class="zh">设置码制列表。</div> 082 * <div class="en">Set the code system list.</div> 083 * 084 * @param map <div class="zh">码制列表。 085 * <ul> 086 * <li>Map.key:码制类型。 087 * <ul> 088 * <li>AZTEC</li> 089 * <li>C11</li> 090 * <li>C128</li> 091 * <li>C39</li> 092 * <li>C93</li> 093 * <li>CHINAPOST</li> 094 * <li>CodaBar</li> 095 * <li>CODEBLOCK F</li> 096 * <li>DATA MATRIX</li> 097 * <li>EAN-8</li> 098 * <li>EAN-13</li> 099 * <li>GS1 DATABAR</li> 100 * <li>HAXIN </li> 101 * <li>I25:0 UPC-E</li> 102 * <li>MATRIX 25 </li> 103 * <li>MAXICODE</li> 104 * <li>MICROPDF</li> 105 * <li>MSI</li> 106 * <li>NEC25</li> 107 * <li>PDF417</li> 108 * <li>QR CODE</li> 109 * <li>STRAIGHT 25</li> 110 * <li>TELEPEN</li> 111 * <li>TRIOPTIC</li> 112 * <li>UPC-A</li> 113 * <li>US POSTAL</li> 114 * </ul> 115 * </li> 116 * <li>Map.value: 1:打开; 0:关闭。</li> 117 * </ul> 118 * <ul> 119 * <li>Map.Key:码制类型。 120 * <ul> 121 * <li>DATA MATRIX Inverse</li> 122 * <li>QR CODE Inverse</li> 123 * <li>AZ Inverse</li> 124 * </ul> 125 * </li> 126 * <li>Map.value: 0:常规;1:反显;2:自动检测反显。</li> 127 * </ul> 128 * 129 * </div> 130 * <div class="en">Code system list. 131 * <ul> 132 * <li>Map.key:Code system type. 133 * <ul> 134 * <li>AZTEC</li> 135 * <li>C11</li> 136 * <li>C128</li> 137 * <li>C39</li> 138 * <li>C93</li> 139 * <li>CHINAPOST</li> 140 * <li>CodaBar</li> 141 * <li>CODEBLOCK F</li> 142 * <li>DATA MATRIX</li> 143 * <li>EAN-8</li> 144 * <li>EAN-13</li> 145 * <li>GS1 DATABAR</li> 146 * <li>HAXIN </li> 147 * <li>I25:0 UPC-E</li> 148 * <li>MATRIX 25 </li> 149 * <li>MAXICODE</li> 150 * <li>MICROPDF</li> 151 * <li>MSI</li> 152 * <li>NEC25</li> 153 * <li>PDF417</li> 154 * <li>QR CODE</li> 155 * <li>STRAIGHT 25</li> 156 * <li>TELEPEN</li> 157 * <li>TRIOPTIC</li> 158 * <li>UPC-A</li> 159 * <li>US POSTAL</li> 160 * </ul> 161 * </li> 162 * <li>Map.value: 1:Open; 0:Close.</li> 163 * </ul> 164 * <ul> 165 * <li>Map.Key:Code system type. 166 * <ul> 167 * <li>DATA MATRIX Inverse</li> 168 * <li>QR CODE Inverse</li> 169 * <li>AZ Inverse</li> 170 * </ul> 171 * </li> 172 * <li>Map.value: 0: Regular only; 1: Inverse only; 2: Inverse auto detect.</li> 173 * </ul> 174 * </div> 175 * @throws ScannerHwDevException 176 * @since V3.20.00 177 */ 178 void setBarcodeMap(Map<String, Integer> map) throws ScannerHwDevException; 179 180 /** 181 * <div class="zh">获取硬扫码的配置。</div> <div class="en">Get the configuration of IScannerHw.</div> 182 * 183 * @return <div class="zh"> 184 * <table border="1"> 185 * <tr> 186 * <th>设置选项</th> 187 * <th>Key</th> 188 * <th>Value</th> 189 * </tr> 190 * <tr> 191 * <td>震动</td> 192 * <td>vibrate</td> 193 * <td>"true":打开; "false":关闭</td> 194 * </tr> 195 * <tr> 196 * <td>声音</td> 197 * <td>sound</td> 198 * <td>"true":打开; "false":关闭</td> 199 * </tr> 200 * <tr> 201 * <td>扫描模式</td> 202 * <td>scan_mode</td> 203 * <td>"0":普通, "1":连续扫描(自动), "2":连续扫描(手动)</td> 204 * </tr> 205 * <tr> 206 * <td>连续扫描时间间隔</td> 207 * <td>scan_time_interval</td> 208 * <td>"0":0.5s, "1":1s, "2":自定义</td> 209 * </tr> 210 * <tr> 211 * <td>自定义时间间隔</td> 212 * <td>time_interval_custom</td> 213 * <td>范围: 0.0~30.0s</td> 214 * </tr> 215 * <tr> 216 * <td>条码分隔符</td> 217 * <td>barcode_separator</td> 218 * <td>"0":不换行, "1":换行符, "2":回车键换行</td> 219 * </tr> 220 * <tr> 221 * <td>左侧物理扫描键</td> 222 * <td>left_key</td> 223 * <td>"true":开启, "false":禁用</td> 224 * </tr> 225 * <td>显示前缀字符</td> 226 * <td>prefix_separator_switch</td> 227 * <td>"true":显示, "false":不显示</td> 228 * </tr> 229 * <tr> 230 * <td>前缀字符</td> 231 * <td>prefix_separator</td> 232 * <td>String</td> 233 * </tr> 234 * <tr> 235 * <td>显示后缀字符</td> 236 * <td>suffix_separator_switch</td> 237 * <td>"true":显示, "false":不显示</td> 238 * </tr> 239 * <tr> 240 * <td>后缀字符</td> 241 * <td>suffix_separator</td> 242 * <td>String</td> 243 * </tr> 244 * <tr> 245 * <td>条码接收模式</td> 246 * <td>receiver_mode</td> 247 * <td>0:快速模式 1:慢速模式 2:广播模式 3:剪切版模式 4:焦点模式 5:按键模式</td> 248 * </tr> 249 * <tr> 250 * <td>解码照明</td> 251 * <td>decode_light</td> 252 * <td>"true":开启, "false":禁用</td> 253 * </tr> 254 * </table> 255 * </div> 256 * <div class="en"> 257 * <table border="1"> 258 * <tr> 259 * <th>Setup Option</th> 260 * <th>Key</th> 261 * <th>Value</th> 262 * </tr> 263 * <tr> 264 * <td>Vibrate</td> 265 * <td>vibrate</td> 266 * <td>"true":turn on; "false":turn off</td> 267 * </tr> 268 * <tr> 269 * <td>Sound</td> 270 * <td>sound</td> 271 * <td>"true":turn on; "false":turn off</td> 272 * </tr> 273 * <tr> 274 * <td>Scan mode</td> 275 * <td>scan_mode</td> 276 * <td>"0":Normal, "1":Continuous scan (automatic), "2":Continuous scan (manual)</td> 277 * </tr> 278 * <tr> 279 * <td>Continuous scan interval</td> 280 * <td>scan_time_interval</td> 281 * <td>"0":0.5s, "1":1s, "2":Custom</td> 282 * </tr> 283 * <tr> 284 * <td>Custom interval</td> 285 * <td>time_interval_custom</td> 286 * <td>Range: 0.0~30.0s</td> 287 * </tr> 288 * <tr> 289 * <td>Barcode separator</td> 290 * <td>barcode_separator</td> 291 * <td>"0": no line break, "1": line break, "2": enter key to line break</td> 292 * </tr> 293 * <tr> 294 * <td>Left physical scan key</td> 295 * <td>left_key</td> 296 * <td>"true": enable, "false": disable</td> 297 * </tr> 298 * <tr> 299 * <td>Prefix character display</td> 300 * <td>prefix_separator_switch</td> 301 * <td>"true": display, "false": no display</td> 302 * </tr> 303 * <tr> 304 * <td>Prefix character</td> 305 * <td>prefix_separator</td> 306 * <td>String</td> 307 * </tr> 308 * <tr> 309 * <td>Suffix character display</td> 310 * <td>suffix_separator_switch</td> 311 * <td>"true": display, "false": no display</td> 312 * </tr> 313 * <tr> 314 * <td>Suffix character</td> 315 * <td>suffix_separator</td> 316 * <td>String</td> 317 * </tr> 318 * <tr> 319 * <td>Barcode receiving mode</td> 320 * <td>receiver_mode</td> 321 * <td>0: Fast Mode 1: Slow Mode 2: Broadcast Mode 3: Clipboard Mode 4: Focus Mode 5: Key Mode</td> 322 * </tr> 323 * <tr> 324 * <td>Decode light</td> 325 * <td>decode_light</td> 326 * <td>"true": Enable, "false": Disable</td> 327 * </tr> 328 * </table> 329 * </div> 330 * @throws ScannerHwDevException 331 * @since V3.22.00 332 */ 333 Map<String, String> getConfig() throws ScannerHwDevException; 334 335 /** 336 * <div class="zh">设置硬扫码的配置。</div> <div class="en">Set the configuration of IScannerHw.</div> 337 * 338 * @param map <div class="zh"> 339 * <table border="1"> 340 * <tr> 341 * <th>设置选项</th> 342 * <th>Key</th> 343 * <th>Value</th> 344 * </tr> 345 * <tr> 346 * <td>震动</td> 347 * <td>vibrate</td> 348 * <td>"true":打开; "false":关闭</td> 349 * </tr> 350 * <tr> 351 * <td>声音</td> 352 * <td>sound</td> 353 * <td>"true":打开; "false":关闭</td> 354 * </tr> 355 * <tr> 356 * <td>扫描模式</td> 357 * <td>scan_mode</td> 358 * <td>"0":普通, "1":连续扫描(自动), "2":连续扫描(手动)</td> 359 * </tr> 360 * <tr> 361 * <td>连续扫描时间间隔</td> 362 * <td>scan_time_interval</td> 363 * <td>"0":0.5s, "1":1s, "2":自定义</td> 364 * </tr> 365 * <tr> 366 * <td>自定义时间间隔</td> 367 * <td>time_interval_custom</td> 368 * <td>范围: 0.0~30.0s</td> 369 * </tr> 370 * <tr> 371 * <td>条码分隔符</td> 372 * <td>barcode_separator</td> 373 * <td>"0":不换行, "1":换行符, "2":回车键换行</td> 374 * </tr> 375 * <tr> 376 * <td>左侧物理扫描键</td> 377 * <td>left_key</td> 378 * <td>"true":开启, "false":禁用</td> 379 * </tr> 380 * <tr> 381 * <td>显示前缀字符</td> 382 * <td>prefix_separator_switch</td> 383 * <td>"true":显示, "false":不显示</td> 384 * </tr> 385 * <tr> 386 * <td>前缀字符</td> 387 * <td>prefix_separator</td> 388 * <td>String</td> 389 * </tr> 390 * <tr> 391 * <td>显示后缀字符</td> 392 * <td>suffix_separator_switch</td> 393 * <td>"true":显示, "false":不显示</td> 394 * </tr> 395 * <tr> 396 * <td>后缀字符</td> 397 * <td>suffix_separator</td> 398 * <td>String</td> 399 * </tr> 400 * <tr> 401 * <td>条码接收模式</td> 402 * <td>receiver_mode</td> 403 * <td>0:快速模式 1:慢速模式 2:广播模式 3:剪切版模式 4:焦点模式 5:按键模式</td> 404 * </tr> 405 * <tr> 406 * <td>解码照明</td> 407 * <td>decode_light</td> 408 * <td>"true":开启, "false":禁用</td> 409 * </tr> 410 * </table> 411 * </div> 412 * <div class="en"> 413 * <table border="1"> 414 * <tr> 415 * <th>Setup Option</th> 416 * <th>Key</th> 417 * <th>Value</th> 418 * </tr> 419 * <tr> 420 * <td>Vibrate</td> 421 * <td>vibrate</td> 422 * <td>"true":turn on; "false":turn off</td> 423 * </tr> 424 * <tr> 425 * <td>Sound</td> 426 * <td>sound</td> 427 * <td>"true":turn on; "false":turn off</td> 428 * </tr> 429 * <tr> 430 * <td>Scan mode</td> 431 * <td>scan_mode</td> 432 * <td>"0":Normal, "1":Continuous scan (automatic), "2":Continuous scan (manual)</td> 433 * </tr> 434 * <tr> 435 * <td>Continuous scan interval</td> 436 * <td>scan_time_interval</td> 437 * <td>"0":0.5s, "1":1s, "2":Custom</td> 438 * </tr> 439 * <tr> 440 * <td>Custom interval</td> 441 * <td>time_interval_custom</td> 442 * <td>Range: 0.0~30.0s</td> 443 * </tr> 444 * <tr> 445 * <td>Barcode separator</td> 446 * <td>barcode_separator</td> 447 * <td>"0": no line break, "1": line break, "2": enter key to line break</td> 448 * </tr> 449 * <tr> 450 * <td>Left physical scan key</td> 451 * <td>left_key</td> 452 * <td>"true": enable, "false": disable</td> 453 * </tr> 454 * <tr> 455 * <td>Prefix character display</td> 456 * <td>prefix_separator_switch</td> 457 * <td>"true": display, "false": no display</td> 458 * </tr> 459 * <tr> 460 * <td>Prefix character</td> 461 * <td>prefix_separator</td> 462 * <td>String</td> 463 * </tr> 464 * <tr> 465 * <td>Suffix character display</td> 466 * <td>suffix_separator_switch</td> 467 * <td>"true": display, "false": no display</td> 468 * </tr> 469 * <tr> 470 * <td>Suffix character</td> 471 * <td>suffix_separator</td> 472 * <td>String</td> 473 * </tr> 474 * <tr> 475 * <td>Barcode receiving mode</td> 476 * <td>receiver_mode</td> 477 * <td>0: Fast Mode 1: Slow Mode 2: Broadcast Mode 3: Clipboard Mode 4: Focus Mode 5: Key Mode</td> 478 * </tr> 479 * <tr> 480 * <td>Decode light</td> 481 * <td>decode_light</td> 482 * <td>"true": Enable, "false": Disable</td> 483 * </tr> 484 * </table> 485 * </div> 486 * 487 * @throws ScannerHwDevException 488 * @since V3.22.00 489 */ 490 void setConfig(Map<String, String> map) throws ScannerHwDevException; 491 492 /** 493 * <div class="zh">开始扫码获取原始数据。</div> <div class="en">Start scanning the code and get the raw data.</div> 494 * 495 * @param timeoutMs <div class="zh">超时时间。单位毫秒。范围0~120000(X5机型:500~9900)。</div> 496 * <div class="en">Timeout. The unit is milliseconds. The range is 0~120000 (X5 model: 500~9900).</div> 497 * @return {@link ScanResultRaw} 498 * @throws ScannerHwDevException ScannerHwDevException 499 * @since V3.23.00 500 */ 501 ScanResultRaw readRaw(int timeoutMs) throws ScannerHwDevException; 502 503 /** 504 * <div class="zh">获取支持的预览效果列表。</div> <div class="en">Get the list of supported preview formats.</div> 505 * 506 * @return <div class="zh">0:YUV 1:RAW 2:特殊模式 </div> <div class="en">0: YUV 1: RAW 2: special mode</div> 507 * @throws ScannerHwDevException ScannerHwDevException 508 * @since V3.27.00 509 */ 510 int[] getSupportFormat() throws ScannerHwDevException; 511 512 /** 513 * <div class="zh">获取当前使用的预览效果。</div> <div class="en">Get the preview format currently in use.</div> 514 * 515 * @return <div class="zh">0:YUV 1:RAW 2:特殊模式 </div> <div class="en">0: YUV 1: RAW 2: special mode</div> 516 * @throws ScannerHwDevException ScannerHwDevException 517 * @since V3.27.00 518 */ 519 int getPreviewFormat() throws ScannerHwDevException; 520 521 /** 522 * <div class="zh">设置预览效果。</div> <div class="en">Set preview format.</div> 523 * 524 * @param format <div class="zh">预览模式 <br/> 525 * 0:YUV<br/> 526 * 1:RAW<br/> 527 * 2:特殊模式</div> 528 * <div class="en">Preview format<br/> 529 * 0: YUV<br/> 530 * 1: RAW<br/> 531 * 2: special mode</div> 532 * @throws ScannerHwDevException ScannerHwDevException 533 * @since V3.27.00 534 */ 535 void setPreviewFormat(int format) throws ScannerHwDevException; 536 537 /** 538 * <div class="zh">控制硬扫码LED灯的亮灭状态。</div> <div class="en">Control hardware scanner LED light on and off.</div> 539 * 540 * @param ledIndex <div class="zh">LED灯的索引号 <br/> 541 * bit0: 补光灯<br/> 542 * bit1: 瞄准灯 543 * </div> 544 * <div class="en">Index number of LED light<br/> 545 * bit0: Filling light<br/> 546 * bit1: Aiming light 547 * </div> 548 * @param onOff <div class="zh">0: 熄灭 549 * 非0: 点亮 </div> 550 * <div class="en">0: off 551 * Non-0: on</div> 552 * @throws ScannerHwDevException ScannerHwDevException 553 * @since V3.33.00 554 */ 555 void setScannerLight(byte ledIndex, byte onOff) throws ScannerHwDevException; 556}