还要麻烦各位了!
接着上次《CAN与上位机通讯问题》,新买了USBCAN接口模块,按照吹版主的例子没问题了(函数库6.1.1),但下一步又遇到了问题:就是函数库(6.1.2和6.1.3)涉及到了输出参数,又不知道怎么弄了,还得麻烦各位指点
#define UIDEV_ALL 0x0D DECLARE LONG SearchDevice IN UISimCanFunc.dll LONG && 6.1.1 DECLARE LONG GetUimDevIdList IN UISimCanFunc.dll LONG, STRING@ && 6.1.2 DECLARE LONG GetUimDevInfo IN UISimCanFunc.dll LONG, STRING@ && 6.1.3 * 获取 Dev 数量 m_uiDeviceAmount = SearchDevice(UIDEV_ALL) IF (m_uiDeviceAmount < 1) * 操作失败处理 RETURN ENDIF * 获取所有 Device 的编号 m_pDevIdList = REPLICATE(0h00, 4 * m_uiDeviceAmount) IF (m_uiDeviceAmount != GetUimDevIdList(UIDEV_ALL, @m_pDevIdList)) * 操作失败处理 RETURN ENDIF * 获取所有 Device 的信息 * DEV_INFO_OBJ 结构: * typedef struct _DEV_INFO_OBJ * { * DWORD dwDevType; //4字节 * DWORD dwDevIndex; //4字节 * UINT uiComIndex; //4字节 * UINT uiBaudRate; //4字节 * CHAR pszDevName[64]; //64字节 * UINT Protocol; //4字节 * } DEV_INFO_OBJ, *P_DEV_INFO_OBJ; //共84字节 * dwDevType 设备类型 0x0D = 所有类型 0x01 = RS232CAN 0x08 = PCICAN 0x04 = USBCAN * dwDevIndex 设备编号 调用 GetUimDevIdList 或 SetDevIndex 后得到的设备索引号。 * uiComIndex 系统为 RS232CAN 网关设备分配的 COM 口编号,这个成员变量只对 RS232网关设备有用。 * uiBaudRate RS232CAN 网关设备与 PC 通讯的串口波特率,这个成员变量只对 RS232网关设备有用。 * pszDevName[64] 保存网关设备的名称 * Protocol 保留以后使用,现在可忽略 objDevInfo = REPLICATE(0h00, 84) && DEV_INFO_OBJ FOR i=1 TO m_uiDeviceAmount IF GetUimDevInfo(CTOBIN(SUBSTR(m_pDevIdList,i*4-3,4),"4RS"), @objDevInfo) > 0 ? "dwDevType :", CTOBIN(SUBSTR(objDevInfo, 1,4), "4RS") ? "dwDevIndex :", CTOBIN(SUBSTR(objDevInfo, 5,4), "4RS") ? "uiComIndex :", CTOBIN(SUBSTR(objDevInfo, 9,4), "4RS") ? "uiBaudRate :", CTOBIN(SUBSTR(objDevInfo,13,4), "4RS") strDevName = SUBSTR(objDevInfo, 17, 64) strDevName = LEFT(strDevName, AT(0h00, strDevName)-1) ? "strDevName :", strDevName ENDIF ENDFOR
[此贴子已经被作者于2016-5-24 22:22编辑过]
[此贴子已经被作者于2016-5-25 08:18编辑过]
[此贴子已经被作者于2016-5-25 10:38编辑过]