我正在开发一个应用程序,实现蓝牙打印。作为此过程的一部分,我希望通过仅类型打印机设备来限制发现的设备。目前,我用来发现蓝牙设备的代码如下:
public List<ScannerInfo> GetPrinters()
{
// Declare results
List<ScannerInfo> result = new List<ScannerInfo>();
// Get all the bluetooth and bluetooth serial devices
DeviceInformationCollection pairedBluetoothDevices = Task.Run(async () =>
await DeviceInformation.FindAllAsync(BluetoothDevice.GetDeviceSelector())).Result;
DeviceInformationCollection pairedBluetoothSerialDevices = Task.Run(async () =>
await DeviceInformation.FindAllAsync(
RfcommDeviceService.GetDeviceSelector(RfcommServiceId.SerialPort)))
.Result;
// Get scanner data
foreach (DeviceInformation pairedBluetoothSerialDevice in pairedBluetoothSerialDevices)
{
var d = DeviceInformation.CreateFromIdAsync(pairedBluetoothSerialDevice.Id);
// Create object
ScannerInfo newScanner = new ScannerInfo
{
Id = pairedBluetoothSerialDevice.Id,
Name = pairedBluetoothSerialDevice.Name
};
// Correct name (this is necessary as following the anniversary update the serial object name no longer holds the bluetooth device name, only the prototcol name.
// Therefore we attempt to get this by matching id components via the full bluetooth device list, which is what the user sees in windows settings).
foreach (var pairedBluetoothDevice in pairedBluetoothDevices)
{
if (pairedBluetoothSerialDevice.Id.Contains(pairedBluetoothDevice.Id))
{
newScanner.Name = pairedBluetoothDevice.Name;
break;
}
}
// Add to result set
result.Add(newScanner);
}
// Return items
return result;
}
发布于 2017-10-03 11:04:02
您可以尝试使用高级查询语法筛选器作为DeviceInformation.FindAllAsync
方法的选择器来筛选打印机设备。
在这个文档Quickstart: enumerating commonly used devices中,它使用{0ECEF634-6EF0-472A-8085-5AD023ECBCCD}
作为PrinterInterfaceClass GUID,您可以尝试一下。
Build a device selector也是为了你的详细信息。
https://stackoverflow.com/questions/46522000
复制相似问题