wince6410使用DeviceIoControl 如何读取IIC数据
wince6410使用DeviceIoControl 读取IIC数据,从示波器上已经可以看到正确的波形,波形数据是(0x68,0x1B,0x69,0x23),ARM先发送0x68(IIC芯片地址),第二发送0x1B(寄存器地址)第三发送0x69(读指令),然后IIC芯片返回要读取的寄存器地址中的数(0x23),但是我不知道在上层应用程序中如何把0x23取出来,也就是说0x23不知道放在哪个变量里了,该如何读取?代码如下
typedef struct _I2C_IO_DESC {
UCHAR SlaveAddr; // Target Slave Address
PUCHAR Data; // pBuffer
DWORD Count; // nBytes to read/write
} I2C_IO_DESC, *PI2C_IO_DESC;
void CIIC_ControlDlg::OnBnClickedRead()
{
// TODO: Add your control notification handler code here
DWORD RetBytes;
BYTE pBuffin[100];
unsigned char ReadDictate = 0x1B;
I2C_IO_DESC IIC_AddressData;
I2C_IO_DESC IIC_Data;
IIC_AddressData.SlaveAddr = 0x68;
IIC_AddressData.Data = &ReadDictate;
IIC_AddressData.Count = 1;
IIC_Data.SlaveAddr = 0x69;
IIC_Data.Data = pBuffin;
IIC_Data.Count = 1;
if(!DeviceIoControl(hIicContext,IOCTL_IIC_READ,&IIC_AddressData,sizeof(IIC_AddressData),&IIC_Data,sizeof(IIC_Data),&RetBytes,NULL))
{
dwErrorCode = GetLastError();
printf("GetLastErrorRead:%d\r\n",dwErrorCode);
}
Sleep(1);
}
请详细指点一下。
[解决办法]
看你的调用,读取到的数据都在结构体里面,应该是每一个结构体就存放一个有效的数据。0x68,0x1B,0x69,0x23这一串数据,应该有四个结构体,剩下的不用说也知道该怎么做了。。。