在我的应用中,之前一直通过转换ISA卡的方式来处理多张卡,但是有个比较麻烦的事情,就是产品量产的时候,装机时,生产工人要么就忘记了地址拨码,要么就将不同地址拨码的卡的位置按转反了,到了客户那边经常出现异常情况,非常麻烦。 再重温CH365的资料时,发现可以自动识别多张卡。于是进入测试中。 1、 通过HANDLE WINAPI CH365mOpenDevice( // 打开CH365设备,返回句柄,出错则无效 ULONG iIndex, // 指定CH365设备序号,0对应第一个设备 BOOL iEnableMemory, // 是否需要支持存储器 BOOL iEnableInterrupt ); // 是否需要支持中断 此函数可以打开0、1两个CH365设备,(这一步正常); 2、 通过BOOL WINAPI CH365mGetIoBaseAddr( // 获取I/O端口的基址 ULONG iIndex, // 指定CH365设备序号 mPCH365_IO_REG *oIoBaseAddr ); // 保存I/O端口基址的单元地址 此函数可以获取0、1两个设备的IO基地址分别为0xd100,0xd000,(这一步也正常) 3、 通过BOOL WINAPI CH365mWriteIoByte( // 向I/O端口写入一个字节 ULONG iIndex, // 指定CH365设备序号 PVOID iAddr, // 指定I/O端口的地址 UCHAR iByte ); // 待写入的字节数据 和BOOL WINAPI CH365mReadIoByte( // 从I/O端口读取一个字节 ULONG iIndex, // 指定CH365设备序号 PVOID iAddr, // 指定I/O端口的地址 PUCHAR oByte );// 指向一个字节单元,用于保存读取的字节数据 分别对0、1两个设备进行相同的操作时,发现设备0的结果不正常,设备1的结果正常。
想请教版主:有遇到过这正问题吗?是我的操作步骤哪里不对吗?
注:我检查过好多篇,第三步中得函数调用格式形参填写没有错误,设备序号iIndex也制定的IO端口地址是一一对应的。[b]文字[/b][b]分别对0、1两个设备进行相同的操作时,发现设备0的结果不正常,设备1的结果正常。[/b]分别对0、1两个设备进行相同的操作时,发现设备0的结果不正常,设备1的结果正常。