Blame view

泰额版/Food Labeling Management App UniApp/src/utils/print/manager/driverRegistry.ts 1.37 KB
59e51671   “wangming”   1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
  import { d320faxDriver } from '../drivers/d320fax'
  import { genericEscDriver } from '../drivers/genericEsc'
  import { genericTscDriver } from '../drivers/genericTsc'
  import { gpD320fxDriver } from '../drivers/gpD320fx'
  import { gpR3Driver } from '../drivers/gpR3'
  import type { PrinterCandidate, PrinterDriver, ResolvedPrinterCandidate } from '../types/printer'
  
  const printerDrivers: PrinterDriver[] = [
    gpR3Driver,
    gpD320fxDriver,
    d320faxDriver,
    genericEscDriver,
    genericTscDriver,
  ]
  
  export function getPrinterDrivers (): PrinterDriver[] {
    return printerDrivers
  }
  
  export function getPrinterDriverByKey (key?: string): PrinterDriver {
    return printerDrivers.find(driver => driver.key === key) || genericTscDriver
  }
  
  export function resolvePrinterDriver (device: PrinterCandidate): PrinterDriver {
    let bestDriver: PrinterDriver = genericTscDriver
    let bestScore = -1
    printerDrivers.forEach((driver) => {
      const score = driver.matches(device)
      if (score > bestScore) {
        bestScore = score
        bestDriver = driver
      }
    })
    return bestDriver
  }
  
  export function describePrinterCandidate (device: PrinterCandidate): ResolvedPrinterCandidate {
    const driver = resolvePrinterDriver(device)
    return {
      ...device,
      driverKey: driver.key,
      driverName: driver.displayName,
      protocol: driver.protocol,
      resolvedType: driver.resolveConnectionType(device),
    }
  }