Я пишу прослушиватель, который принимает входные платежные данные, обрабатывает их, а затем взаимодействует с устройством, подключенным как COM-устройство (pinpad vx805). на каждой машине это устройство может быть назначено другому COM-порту (например, COM3, COM5 и т. д.)
после прочтения этого сообщения: Найти последовательный порт, к которому подключено мое устройство
я придумал этот фрагмент кода, который делает работу:
Private Shared Function isVX805PinPadConnected2() As Boolean
Dim query = "SELECT DeviceID FROM Win32_SerialPort WHERE PNPDeviceID LIKE """ + "%VID_11CA&PID_0220%" + """"
Console.WriteLine(query)
Output.mainLog("startQuery")
Dim resp = New ManagementObjectSearcher("root\cimv2", query).Get
Output.mainLog("endQuery")
Try
Output.mainLog("aftertry")
com = resp(0)("DeviceID").ToString
Output.mainLog("after extracting com")
Console.WriteLine("PinPad on " + com)
Return True
Catch ex As Exception
Throw New ConstraintException("Pin Pad Com Port could not be located")
Output.mainLog(ex)
End Try
Return False
End Function
Но его строка: com = resp(0)("DeviceID").ToString
выполняется около 4 секунд, как показано в журнале:
2017/02/02 13:50:51 --> Запущен прослушиватель EMV
2017/02/02 13:53:10 --> Начать поиск пинпада
2017/02/02 13:53:11 --> startQuery
2017/02/02 13:53:11 --> endQuery
2017/02/02 13:53:11 --> после попытки
2017/02/02 13:53:15 --> после извлечения файла com
2017/02/02 13:53:15 --> Конец пинпада
2017/02/02 13:53:15 --> Запущен прослушиватель EMV
Любые идеи, как сделать это с лучшей производительностью? Большое спасибо