首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

wince6410使用DeviceIoControl 怎么读取IIC数据

2012-04-07 
wince6410使用DeviceIoControl 如何读取IIC数据wince6410使用DeviceIoControl 读取IIC数据,从示波器上已经

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这一串数据,应该有四个结构体,剩下的不用说也知道该怎么做了。。。

热点排行