UWP中串行设备通信的问题

我有一个特殊的问题。

我正在尝试与需要在UWP项目中进行串行通信的外围设备进行通信。 我正在使用Windows.Devices.SerialCommunication。

为了演示,我创建了一个新页面,其中有两个按钮,两个不同的点击处理程序。 一个用于打开端口,另一个用于向外围设备发送消息。

一个处理程序是:

SerialDevice device; private async void Button_Click_1(object sender, RoutedEventArgs e) { string selector = SerialDevice.GetDeviceSelector("COM7"); DeviceInformationCollection devices = await DeviceInformation.FindAllAsync(selector); if (devices.Any()) { DeviceInformation deviceInfo = devices.First(); device = await SerialDevice.FromIdAsync(deviceInfo.Id); //********************* device.BaudRate = 9600; device.DataBits = 8; device.Parity = SerialParity.None; device.StopBits = SerialStopBitCount.One; device.ReadTimeout = device.WriteTimeout = TimeSpan.FromMilliseconds(1000); device.Handshake = SerialHandshake.None; } _dataReader = new DataReader(device.InputStream); _dataWriter = new DataWriter(device.OutputStream); } 

当我启用电源时,外围设备上有红灯。 当执行// *********上方的行时,指示灯将熄灭。 外围设备不响应​​任何消息。 当我停止程序时,指示灯会重新亮起。

我制作了一个完美运行的.NET Framework应用程序。 它function齐全。 我在那里使用了System.IO.Ports。 我发现了一些事:

如果我在.NET Framework应用程序中仅提取并运行此部分代码:

 SerialPort comPort = new SerialPort(); _ComPort.PortName = PortName; _ComPort.BaudRate = BaudRate; _ComPort.DataBits = 8; _ComPort.Parity = Parity.None; _ComPort.StopBits = StopBits.One; _ComPort.DataReceived += new SerialDataReceivedEventHandler(_ComPort_DataReceived); _ComPort.Open(); 

而已。

再次运行UWP应用程序,端口打开完美,指示灯为红色,设备响应消息。 我可以关闭设备,并根据我的需要多次从UWP应用程序初始化它。 当我重新启动计算机时,我无法再次从UWP应用程序初始化设备(直到我从.NET Framework应用程序运行所述代码块)。

如果你想知道,外围设备是由Suzo Happ制造的Bill to Bill单元。

关于UWP中的属性初始化,我没有犯任何错误。