gpt4 book ai didi

c# - 如何使用通用 Windows 应用程序将串行数据写入 COM 端口?

转载 作者:太空狗 更新时间:2023-10-30 01:16:09 25 4
gpt4 key购买 nike

通常 C# 应用程序像这样使用 System.IO.Ports:

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

但通用 Windows 应用程序不支持 System.IO.Ports 因此无法使用此方法。有谁知道如何通过 UWA 中的 COM 端口写入串行数据?

最佳答案

您可以使用 Windows.Devices.SerialCommunication 来做到这一点和 Windows.Storage.Streams.DataWriter类:

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.

通过将以下功能添加到 Package.appxmanifest:

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

然后运行以下代码:

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

关于c# - 如何使用通用 Windows 应用程序将串行数据写入 COM 端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36380925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com