还要麻烦各位了!
接着上次《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编辑过]