0

我正在尝试将 PTRobot API 集成到我的 C# .NET 程序中,但遇到了一个我无法弄清楚的问题。我正在尝试执行以下命令:

PTRobot_Initialize()
PTRobot_EnumRobots(HANDLE * phRobots, DWORD * pdwNumRobots)
PTRobot_GetRobotInfo(HANDLE hRobot, PTRobotInfo *pRobotInfo)
PTRobot_EnumDrives(HANDLE hRobot, HANDLE * phDrives, DWORD * pdwNumDrives)
PTRobot_GetDriveInfo(HANDLE hDrive, PTDriveInfo* pDrvInfo)

这来自 API 文档。Primera 还围绕 DLL 为 C# 开发了一个 .NET 包装器。更新的功能是:

PTRobot_Initialize()
PTRobot_EnumRobots(ref UInt32 nRobots, ref UInt32 pnNumRobots)
PTRobot_GetRobotInfo(UInt32 nRobotID, [In, Out] RobotInfo myRobotInfo)
PTRobot_EnumDrives(UInt32 nRobotID, ref UInt32 nDriveIDs, ref UInt32 nNumDrives)
PTRobot_GetDriveInfo(UInt32 nDriveID, [In, Out] DriveInfo myDriveInfo)

我正在尝试将 .NET 功能集成到我的程序中,但我遇到了问题。EnumRobots 的参数 nRobots“指向 HANDLE 数组以存储找到的机器人”,而 EnumDrives 参数 nDriveIDs “指向 DWORDS 数组以存储找到的驱动器”。我的问题是如何从这个 uint 中获取一个数组?

4

1 回答 1

0

找到了答案。对于所有想知道的人,您可以执行以下操作:

uint numRobots = 5;
uint numDrives = 5;
uint[] robotArray = new uint[numRobots];
uint[] driveArray = new uint[numDrives];


DriveInfo arr = new DriveInfo();
PTRobotReturn rtn;
RobotInfo rI = new RobotInfo();
rtn = PTRobot.Initialize();

rtn = PTRobot.EnumRobots(ref robotArray[0], ref numRobots);

rtn = PTRobot.GetRobotInfo(robotArray[0], ref rI);

rtn = PTRobot.EnumDrives(robotArray[0], ref driveArray[0], ref numDrives);

rtn = PTRobot.LoadDrive(robotArray[0], driveArray[0], PrimeraTechnology.DiscLocation.Right_Bin, PrimeraTechnology.ClearDrive.Yes);
于 2012-09-15T16:38:11.360 回答