gpt4 book ai didi

c# - FTDI 写函数永无止境

转载 作者:太空宇宙 更新时间:2023-11-03 13:11:42 26 4
gpt4 key购买 nike

我有一个 FTDI 写入函数,当程序是 .net3.5 时它可以工作,但我一直在更新它,所以它现在可以在 .net 4.0 上运行,现在我的 FTDI 写入函数在输入后没有返回。

private FT_HANDLE portHandle = 0;

public unsafe int Write(byte[] buffer, int offset, int count)
{
if (portHandle == 0)
{
throw new IOException("Port Closed");
}

try
{
uint bytesWritten = 0;
Status status = Status.FT_OTHER_ERROR;
byte[] data = new byte[count];
for (int i = 0; i < count; i++)
{
data[i] = buffer[i + offset];
}
fixed (byte* pBuffer = data)
{
status = FT_Write(portHandle, pBuffer, (uint)count, ref bytesWritten);// the line that never returns
}
if (status == Status.FT_OK)
{
return (int)bytesWritten;
}
throw new IOException("Failed To Write: " + status.ToString());
}
catch (DllNotFoundException ex)
{
throw new NotSupportedException("Driver not installed", ex);
}
}

portHandle 不会陷入等同于 0 if check。我的问题是可能是什么原因造成的,我该如何解决。

最佳答案

在 dot net3.5 到 4.0 中,他们更改了此类设备的计时器和设置,首先将计时器设置为您想要的,但是不要使用变量、getter 和 setter,因为它们将无法工作,因为 Windows 使用它们的方式使用常量和 uints 并确保你为读取和写入提供了足够的时间(读取通常比写入长)记住时间以毫秒为单位完成这应该可以工作,因为我在进行切换时遇到了同样的问题

所以要点设置读写超时

不要使用 getter 和 setter

确保它们是常量

关于c# - FTDI 写函数永无止境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28317284/

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