gpt4 book ai didi

serial-port - Windows UWP Windows.Devices.SerialCommunication.SerialDevice 不工作

转载 作者:行者123 更新时间:2023-12-03 20:49:13 27 4
gpt4 key购买 nike

只是我,还是这是一个错误?

serialPort = await SerialDevice.FromIdAsync(Id);
serialPort始终为空,即使 Id不是。

我需要让这个工作。现在我只是在编写非常“快速而肮脏”的代码来测试来自 Windows 10 通用应用程序的串行通信。我在 x86 和 x64 中都调试了相同的结果。

这是我现在所处的位置,但是如果不创建 serialPort,我就无法走多远......
public class SerialComm
{
private SerialDevice serialPort;
DataWriter dataWriteObject = null;
DataReader dataReaderObject = null;

public async void StartTest()
{

var deviceSelector = SerialDevice.GetDeviceSelector("COM3");
var myDevices = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync(deviceSelector);
var myCurrentDevice = myDevices[0];
string Id = myCurrentDevice.Id.ToString();

try
{
serialPort = await SerialDevice.FromIdAsync(Id);
}
catch (Exception)
{

throw;
}

StringBuilder commandBuilder = new StringBuilder();

while (true)
{
var rBuffer = (new byte[1]).AsBuffer();
await serialPort.InputStream.ReadAsync(rBuffer, 1, InputStreamOptions.Partial);

if ((char)rBuffer.ToArray()[0] != '\n')
{
commandBuilder.Append((char)rBuffer.ToArray()[0]);
}
else
{
string temp = "";

try
{
temp += rBuffer.ToString();
}
catch (Exception)
{
temp = "Error";
}

commandBuilder.Append(temp);
}

string stringToDisplay = commandBuilder.ToString();
}

感谢您的帮助和建议......

最佳答案

我在 Maxbotix 传感器上遇到了同样的问题,该传感器使用 FTDI 芯片进行 USB 到串行通信。我可以在终端程序中很好地连接到设备,并且我可以从真正的 .NET Framework 中使用它 SerialPort类,但在来自 GitHub 的 UWP SerialSample 和我的代码中,SerialDevice.FromIdAsync()返回 null .

对我来说,解决方案分为两部分。

第一部分是在 Package.appxmanifest 中添加设备功能文件:

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

第二部分是从 FTDI Web site 下载更新的驱动程序(我使用的是 2.12.06 版)。 .一旦我这样做了,它就开始工作了。

完整示例如下:
            var aqsFilter = SerialDevice.GetDeviceSelector("COM3");
var devices = await DeviceInformation.FindAllAsync(aqsFilter);
if (devices.Any())
{
var deviceId = devices.First().Id;
this.device = await SerialDevice.FromIdAsync(deviceId);

if (this.device != null)
{
this.device.BaudRate = 57600;
this.device.StopBits = SerialStopBitCount.One;
this.device.DataBits = 8;
this.device.Parity = SerialParity.None;
this.device.Handshake = SerialHandshake.None;

this.reader = new DataReader(this.device.InputStream);
}
}

关于serial-port - Windows UWP Windows.Devices.SerialCommunication.SerialDevice 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32024009/

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