Använda VBScript för att hantera enheter (POS för .NET v1.14 SDK-dokumentation)

Med hjälp av WMI-API:et som beskrivs i det här avsnittet är det möjligt att hantera enheter med hanterad kod eller skript. POSDM.EXE är ett kommandoradsgränssnitt för det här API:et. Det här VBScript-exemplet gör följande:

  • Den använder WMI-metoden ExecQuery för att hämta en lista över installerade PosDevice-objekt . Med den här listan över tjänstobjekt visar skriptet deras typ, namn, motsvarande sökväg och deras aktiverade eller inaktiverade status. Detta är detsamma som att köra följande kommando:

    PosDM.exe LISTDEVICES

  • Sedan försöker den tilldela sökvägen COM1 till det installerade tjänstobjektet, Microsoft Msr Simulator med hjälp av metoden AddDevice. Detta motsvarar körning:

    PosDM.exe ADDDEVICE COM1 /SONAME:Microsoft Msr Simulator

  • Om metoden AddDevice misslyckas fångar skriptet upp felet och förutsätter att COM1 redan har lagts till på enheten och därför försöker ta bort det genom att anropa DeleteDevice. Detta motsvarar körning:

    PosDM.exe DELETEDEVICE COM1

  • Om metoden AddDevice tidigare hade misslyckats försöker skriptet anropa AddDevice igen. Programmet avslutas om metoden misslyckas.

  • Slutligen försöker exemplet lägga till det logiska namnet MSRSim i det här tjänstobjektet genom att anropa AddName. Detta motsvarar körning:

    PosDM.exe ADDNAME MSRSim /SONAME:"Microsoft Msr Simulator"

Du kan se resultatet av det här exemplet genom att köra:

PosDM.exe LISTDEVICES

och

PosDM.exe LISTNAMES

Så här kör du exemplet

  1. Service Object Microsoft Msr Simulator installerades med SDK:t. Kontrollera att den är installerad på den dator som du ska använda för att köra exemplet.

  2. Kopiera det här skriptet till en fil PosDMSample.vbs

  3. Kör skriptet med följande kommandorad:

    CScript //U PosDMSample.vbs

Exempel

'Get a handle to the POS namespace service into 'objServices'.
Set objLocator = CreateObject("WbemScripting.SWbemLocator")
Set objServices = objLocator.ConnectServer(, "/root/MicrosoftPointOfService")

'List the POS devices.
EnumeratePosDevice

'Add a name: MSRSim for Msr Simulator by retrieving the SO and invoking AddDevice() then AddName()
WScript.Echo "Add Device on COM1 and add name 'MSRSim' for MsrSimulator ..."
Set objSO = objServices.Get("ServiceObject.Type='Msr',Name='Microsoft Msr Simulator'")

On Error Resume Next
objSO.AddDevice "COM1"
if Err.number <> 0 Then
  WScript.Echo "AddDevice failed - it already is in use."
  WScript.Echo "Try to delete the device..."

  On Error Resume Next
  objSO.DeleteDevice "COM1"
  if Err.number <> 0 Then
    WScript.Echo "DeleteDevice failed"
    WScript.Quit 1
  end if

  WScript.Echo "DeleteDevice succeeded! Attempting AddDevice again..."

  On Error Resume Next
  objSO.AddDevice "COM1"
  if Err.number <> 0 Then
      WScript.Echo "AddDevice failed a second time - exiting"
      WScript.Quit 2
  end if
end if

Set objDevice = objServices.Get("PosDevice.SoName='Microsoft Msr Simulator',Type='Msr',Path='COM1'")
objDevice.AddName "MSRSim"
Set objDevice = GetDevice("Msr", "MSRSim")
WScript.Echo "Added 'MSRSim' to: " & objDevice.Type & vbTab & objDevice.SoName & vbTab & objDevice.Path

'Enumerate the sClass by name
Sub EnumeratePosDevice( )
  sClass = "PosDevice"
  WScript.Echo "Enumerating " & sClass & "..." & vbCrLf

  Set collection = objServices.ExecQuery("SELECT * From " & sClass)
  For Each obj In collection
    Enabled = "DISABLED"
    if obj.Enabled = true Then
      Enabled = "ENABLED"
    end If
      WScript.Echo obj.Type & Space(15-len(obj.type)) & obj.SoName & Space(35-len(obj.SoName)) & Enabled & vbTab & obj.Path
  Next
  WScript.Echo vbCrLf
End Sub

'Return a PosDevice matching DeviceType and Name.
Function GetDevice( DeviceType, Name )
  Set Logical = GetLogicalDevice( DeviceType, Name )
  objectPath = "PosDevice.SoName='" & Logical.SoName & "',Type='" & DeviceType & "',Path='" & Logical.Path & "'"
  Set GetDevice = objServices.Get(objectPath)
End Function

'Return a LogicalDevice matching DeviceType and Name.
Function GetLogicalDevice( DeviceType, Name )
  Query = "SELECT * From LogicalDevice WHERE Type = '" & DeviceType & "' AND Name='" & Name & "'"
  Set collection = objServices.ExecQuery( Query )
  For Each obj In collection
    Set GetLogicalDevice = obj
    exit For
  Next
End Function

Om sökvägen COM1 inte har tilldelats till en enhet genererar exemplet utdata som liknar den här koden.

Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

Enumerating PosDevice...

Msr            Microsoft Msr Simulator            ENABLED
Msr            Microsoft Msr Simulator            ENABLED       COM1
Keylock        Microsoft Keylock Simulator        ENABLED
Scanner        Microsoft Scanner Simulator        ENABLED
CashDrawer     Microsoft CashDrawer Simulator     ENABLED
CheckScanner   Microsoft CheckScanner Simulator   ENABLED
LineDisplay    Microsoft LineDisplay Simulator    ENABLED
PinPad         Microsoft PinPad Simulator         ENABLED
PosPrinter     Microsoft PosPrinter Simulator     ENABLED
PosKeyboard    Microsoft PosKeyboard Simulator    ENABLED

Add Device on COM1 and add name 'MSRSim' for MsrSimulator ...
AddDevice failed - it already be in use.
Try to delete the device...
DeleteDevice succeeded! Attempting AddDevice again...
Added 'MSRSim' to: Msr  Microsoft Msr Simulator

Om sökvägen COM1 redan används och inget annat fel inträffar genererar skriptet utdata som ser ut som den här koden.

Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

Enumerating PosDevice...

Msr            Microsoft Msr Simulator            ENABLED
Msr            Microsoft Msr Simulator            ENABLED       COM1
Keylock        Microsoft Keylock Simulator        ENABLED
Scanner        Microsoft Scanner Simulator        ENABLED
CashDrawer     Microsoft CashDrawer Simulator     ENABLED
CheckScanner   Microsoft CheckScanner Simulator   ENABLED
LineDisplay    Microsoft LineDisplay Simulator    ENABLED
PinPad         Microsoft PinPad Simulator         ENABLED
PosPrinter     Microsoft PosPrinter Simulator     ENABLED
PosKeyboard    Microsoft PosKeyboard Simulator    ENABLED

Add Device on COM1 and add name 'MSRSim' for MsrSimulator ...
AddDevice failed - it already be in use.
Try to delete the device...
DeleteDevice succeeded! Attempting AddDevice again...
Added 'MSRSim' to: Msr  Microsoft Msr Simulator

Se även

Andra resurser