主题中讨论的其他器件:UCD90120A
工具与软件:
尊敬的专家:
我们有多个 USB-TO-GPIO (2006)适配器连接到 Windows 11 PC、并安装了 Fusion 电源设计器和 API。
我们注意到、有时 PMBus 器件和 PC 之间的通信会冻结、这可以通过下电上电和为受影响的适配器重新连接器件来解决。 但是、在生产设置中手动执行此操作是不可行的、因此需要一个脚本、该脚本可以远程向适配器发出重置命令(类似于相关问题)。
TL;DR
根据 用户指南 (第27页)、此适配器支持复位功能。 FUSION_USB_ADAPTER_API (TIDP.SAA2.dll)包含 getReset (..) 和 setReset (..) SMBusAdapter 类成员中的方法-以下简单代码可以触发此适配器的软件复位吗?
using System;
using TIDP.SAA;
class Program
{
static void Main(string[] args)
{
SMBusAdapter.Exceptions_On_Error = true;
try
{
// Discover the available USB adapters
Console.WriteLine("Discovering USB adapters...");
int adapterCount = SMBusAdapter.Discover();
if (adapterCount == 0)
{
Console.WriteLine("No USB adapters found.");
return;
}
Console.WriteLine($"{adapterCount} USB adapter(s) found.");
// Get only the first adapter for now.
var adapter = SMBusAdapter.Adapters[0];
// Extra check if the adapter is attached - possibly redundant
if (!adapter.Is_Attached)
{
Console.WriteLine("Adapter is not attached or disconnected.");
return;
}
Console.WriteLine("Adapter is attached and ready.");
// What does getReset return before we actually use setReset?
Console.WriteLine("Getting adapter reset value...");
LogicLevel resetLevel = LogicLevel.Low;
adapter.getReset(ref resetLevel); // To check what is actually returned here - No documentation on this.
Console.WriteLine("Adapter reset level : " + resetLevel.ToString());
// Set the reset level to LogicLevel.High
Console.WriteLine("Initiating adapter reset to LogicLevel.High...");
SAAStatus resetStatus = adapter.setReset(LogicLevel.High); // Assuming this triggers a USB function reset? No documentation on this.
if (resetStatus == SAAStatus.Success)
Console.WriteLine("Adapter reset initiated successfully.");
else
Console.WriteLine("Adapter reset failed.");
// Check the reset level after the reset
Console.WriteLine("Getting adapter reset value...");
adapter.getReset(ref resetLevel);
Console.WriteLine("Adapter reset level : " + resetLevel.ToString());
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
或者、是否有现有方法可以通过我可能错过的 Fusion GUI 重置/重新启动这些适配器、它可以处理连接到主机 PC 的多个适配器?