How to write serial data to COM ports with Universal Windows Application?

人盡茶涼 提交于 2019-12-10 17:12:58

问题


Typically C# applications use System.IO.Ports like so:

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

But Universal Windows Applications don't support System.IO.Ports so this method cannot be used. Does anyone know how to write serial data through COM ports in a UWA?


回答1:


You can do this with the Windows.Devices.SerialCommunication and Windows.Storage.Streams.DataWriter classes:

The classes provide functionality to discover such serial device, read and write data, and control serial-specific properties for flow control, such as setting baud rate, signal states.

By adding the following capability to Package.appxmanifest:

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

Then running the following code:

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



回答2:


Microsoft has provided an example of accessing and using a com port, using the class SerialDevice, in a Universal Windows Application, named CustomSerialDeviceAccess.

Microsoft has posted it on GitHub. You can find it here:

https://github.com/microsoft/Windows-universal-samples/tree/master/Samples/CustomSerialDeviceAccess

Microsoft says this about the sample application:

"This sample allows the user to configure and communicate with a Serial device. You can choose one of four scenarios:

Connect/Disconnect using Device Selection list; Configure the Serial device; Communicate with the Serial device; Register for Events on the Serial device"

References: Microsoft, GitHub



来源:https://stackoverflow.com/questions/36380925/how-to-write-serial-data-to-com-ports-with-universal-windows-application

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!