2016-06-05 2 views
1

Je travaille sur la communication USB UWP APP. Je peux obtenir l'instance de SerialDevice sans problème, mais quand j'appelle myDevice.OutputStream.FlushAsync() je ne reçois pas d'exception implémentée.streamOut.FlushAsync() non implémentée exception

Voici mon code

private async void EstablishConButton_Click(object sender, RoutedEventArgs e) 
    { 
     var DeviceSelector = SerialDevice.GetDeviceSelector(); 
     var Devices = await DeviceInformation.FindAllAsync(DeviceSelector); 
     var deviceInfo = Devices.FirstOrDefault(); 

     SerialDevice myDevice = await SerialDevice.FromIdAsync(deviceInfo.Id); 

     if (myDevice == null) 
     { 
      Debugg("Device not found!"); 
      return; 
     } 
     Debugg("Device found!"); 

     byte[] buffer = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05 , 0x05 , 0x05 , 0x05 , 0x05 , 0x05 }; 
     var rBuffer = (buffer).AsBuffer(); 
     await myDevice.OutputStream.WriteAsync(rBuffer); 

     await myDevice.OutputStream.FlushAsync(); 

     var responseBufer = (new byte[11]).AsBuffer(); 
     await myDevice.InputStream.ReadAsync(responseBufer, 11,InputStreamOptions.None); 

    } 

Mon manifeste:

<DeviceCapability Name="usb"> 
     <Device Id="vidpid:0403 6015"> 
      <Function Type="name:vendorSpecific" /> 
     </Device> 
    </DeviceCapability> 

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

Merci pour la réponse

Répondre

0

Il a déclaré msdn que « Pour écrire des données, tout d'abord obtenir le flux de sortie de la SerialDevice objet en utilisant la propriété OutputStream, puis utilisez l'objet DataWriter pour écrire le tampon réel. "

Donc, essayez d'utiliser DataWriter à la place, votre code sera à la recherche comme ceci:

var DeviceSelector = SerialDevice.GetDeviceSelector(); 
var Devices = await DeviceInformation.FindAllAsync(DeviceSelector); 
var deviceInfo = Devices.FirstOrDefault(); 

SerialDevice myDevice = await SerialDevice.FromIdAsync(deviceInfo.Id); 

if (myDevice == null) 
{ 
    Debug.WriteLine("Device not found!"); 
    return; 
} 
Debug.WriteLine("Device found!"); 

byte[] buffer = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 }; 
var rBuffer = (buffer).AsBuffer(); 

using (var dataWriter = new DataWriter(myDevice.OutputStream)) 
{ 
    dataWriter.WriteBuffer(rBuffer); 
} 

var responseBufer = (new byte[11]).AsBuffer(); 
await myDevice.InputStream.ReadAsync(responseBufer, 11, InputStreamOptions.None); 

Ici, vous ne devez pas appeler dataWriter.FlushAsync() parce qu'il est supposé automatiquement affleurant tout en se débarrassant, mais si des problèmes surviennent - ajoutez le rinçage et vérifiez à nouveau.