2016-06-05 6 views
1

나는 USB 통신 UWP APP에서 일하고 있습니다. 문제없이 SerialDevice 인스턴스를 얻을 수 있지만 myDevice.OutputStream.FlushAsync()를 호출 할 때 예외가 발생하지 않습니다. 여기 streamOut.FlushAsync() 구현되지 않았습니다 예외

내 코드입니다

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); 

    } 

내 매니페스트 : 응답

답변

0

그것은 "첫째, 데이터 쓰기 SerialDevice에서 출력 스트림을 얻으려면 것을 msdn 말했다에 대한

<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> 

감사합니다 OutputStream 속성을 사용하여 개체를 만든 다음 DataWriter 개체를 사용하여 실제 버퍼를 씁니다. " 이 폐기 상태를 자동으로 플러시 가정 있기 때문에) 여기

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); 

당신이 dataWriter.FlushAsync을 (호출 할 필요가 없습니다,하지만 경우 :

그래서 DataWriter 대신, 코드는 다음과 같이보고합니다 사용하려고 모든 문제가 발생합니다 - 플러싱을 추가하고 다시 확인하십시오.