Использование Windows UWP Windows.Devices.SerialCommunication.SerialDevice из библиотеки универсальных классов
Я делаю библиотеку Modbus (снова ...). На этот раз он предназначен для работы в Windows 10 IoT Core.
Я столкнулся с интересной проблемой. Этот кусок кода:
string aqs = SerialDevice.GetDeviceSelector();
var dis = await DeviceInformation.FindAllAsync(aqs);
var port = await SerialDevice.FromIdAsync(dis[0].Id);
if (port != null) {
port.BaudRate = 9600;
port.DataBits = 8;
port.StopBits = SerialStopBitCount.One;
port.Parity = SerialParity.None;
port.Handshake = SerialHandshake.None;
port.ReadTimeout = TimeSpan.FromMilliseconds(1000);
port.WriteTimeout = TimeSpan.FromMilliseconds(1000);
}
Используется из универсального приложения работает отлично. Конечно, если вы добавите следующий код в Package.appxmanifest:
<Capabilities>
<DeviceCapability Name="serialcommunication">
<Device Id="any">
<Function Type="name:serialPort" />
</Device>
</DeviceCapability>
</Capabilities>
Используется из Universal Class Library (Файл -> Новый проект -> ... -> Windows -> Универсальный -> Библиотека классов (Universal Windows) в VS2015) создает исключение Null Reference из mscorlib.dll, которое аналогично удалению DeviceCapability из Package.appxmanifest универсального приложения.
Я подозреваю, что это поведение связано с тем, что у библиотеки классов нет файла манифеста и, следовательно, нет соответствующих разрешений.
Могу ли я использовать Windows.Devices.SerialCommunication из библиотек классов?
Microsoft заставляет меня говорить пользователям: «Эй! Я сделал для вас бесполезную библиотеку, для которой вам придется самостоятельно реализовывать транспортный уровень в любом из ваших приложений ». ?