2016-04-03 1 views
3

Typiquement applications C# utilisent System.IO.Ports comme ceci:Comment écrire des données série sur les ports COM avec Universal Windows Application?

SerialPort port = new SerialPort("COM1"); 
port.Open(); 
port.WriteLine("test");` 

Mais les applications Universal Windows ne prennent pas en charge System.IO.Ports donc cette méthode ne peut pas être utilisé. Est-ce que quelqu'un sait comment écrire des données série via les ports COM dans un UWA?

+0

au moins regarder [l'échantillon] (https: // ms-IOT. github.io/content/en-US/win10/samples/SerialSample.htm), vous ne pouvez pas manquer DataWriter. –

Répondre

3

Vous pouvez le faire avec les Windows.Devices.SerialCommunication et Windows.Storage.Streams.DataWriter classes:

Les classes fournissent des fonctionnalités à découvrir tel dispositif série, lecture et d'écriture des données et contrôler les propriétés de série spécifiques pour le contrôle de flux, tels que réglage de la vitesse de transmission, des états du signal.

En ajoutant la capacité suivante à Package.appxmanifest:

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

Puis exécutant le code suivant:

using Windows.Devices.SerialCommunication; 
using Windows.Devices.Enumeration; 
using Windows.Storage.Streams; 

//... 

string selector = SerialDevice.GetDeviceSelector("COM3"); 
DeviceInformationCollection devices = await DeviceInformation.FindAllAsync(selector); 
if(devices.Count > 0) 
{ 
    DeviceInformation deviceInfo = devices[0]; 
    SerialDevice serialDevice = await SerialDevice.FromIdAsync(deviceInfo.Id); 
    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(); 
}