2017-06-09 85 views
2

我正在使用此代码但不工作并抛出此异常:未将对象引用设置为对象实例 devices [0]给出空值。用于字符写入和读取的UWP串行端口通信(UWP和Arduino)

private async void ConnectToSerialPort() 
    { 
     string selector = SerialDevice.GetDeviceSelector("COM7"); 
     DeviceInformationCollection devices = await DeviceInformation.FindAllAsync(selector); 
     if (devices.Count > 0) 
     { 
      DeviceInformation deviceInfo = devices[0]; 
      SerialDevice serialDevice = await SerialDevice.FromIdAsync(deviceInfo.Id); 
      Debug.WriteLine(serialDevice); 
      serialDevice.BaudRate = 9600; 
      serialDevice.DataBits = 8; 
      serialDevice.StopBits = SerialStopBitCount.Two; 
      serialDevice.Parity = SerialParity.None; 

      DataWriter dataWriter = new DataWriter(serialDevice.OutputStream); 
      dataWriter.WriteString("your message here"); 
      await dataWriter.StoreAsync(); 
      dataWriter.DetachStream(); 
      dataWriter = null; 
     } 
     else 
     { 
      MessageDialog popup = new MessageDialog("Sorry, no device found."); 
      await popup.ShowAsync(); 
     } 
    } 

    private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     ConnectToSerialPort(); 
    } 

请帮我解决这个错误,我会非常感谢你。 请帮助:(

+0

发生在 –

+0

serialDevice哪行的例外呢?是给零例外... – Softdeveloper

+0

请编辑您的问题,添加该细节 –

回答

5

您需要Package.appxmanifest添加串行设备的能力是这样的:

<Capabilities> 
    <DeviceCapability Name="serialcommunication"> 
     <Device Id="any"> 
     <Function Type="name:serialPort" /> 
     </Device> 
    </DeviceCapability> 
    </Capabilities> 

对于您可以参考Serial device capability usage更多信息