当前位置: 代码迷 >> WinCE >> iic可否在应用程序中直接使用
  详细解决方案

iic可否在应用程序中直接使用

热度:50   发布时间:2016-04-28 12:30:11.0
iic能否在应用程序中直接使用?
平台:s3c6410
我参考摄像头里面的代码,在驱动里面调用iic,可以正常读写。
可是在应用程序里面直接调用同样的代码,createfile没有问题,但是读写都不行。
DeviceIoControl返回TURE,但是读到字节数都为0.
难道iic驱动只能被其他驱动调用,而不能被应用程序调用吗?


------解决方案--------------------
如果有条件的话,使用示波器观察通讯信号,一般通讯程序出问题有五成是硬件或外部原因导致通讯信号异常造成的。
------解决方案--------------------
driver改一下這樣行不行
BOOL
IIC_IOControl(PHW_OPEN_INFO pOpenContext,
              DWORD dwCode, PBYTE pBufIn,
              DWORD dwLenIn, PBYTE pBufOut, DWORD dwLenOut,
              PDWORD pdwActualOut)
{
    BOOL            RetVal           = TRUE;        // Initialize to success
    PHW_INIT_INFO   pInitContext;
    IIC_IO_DESC     IoDescIn;
    IIC_IO_DESC     IoDescOut;
    PVOID           pUnMarshalledInBuf = NULL;
    PVOID           pUnMarshalledOutBuf = NULL;
    //if caller is not kernel mode, do not allow setting power state
    if (GetDirectCallerProcessId() != GetCurrentProcessId()){
        return ERROR_ACCESS_DENIED;
    }
    if (pOpenContext==NULL) {
        SetLastError (ERROR_INVALID_HANDLE);
        return(FALSE);
    }
    pInitContext = pOpenContext->pInitContext;
    if ( pInitContext == NULL )
    {
        SetLastError (ERROR_INVALID_HANDLE);
        return(FALSE);
    }
    DEBUGMSG (ZONE_FUNCTION,
              (TEXT("+IIC_IOControl(0x%X, %d, 0x%X, %d, 0x%X, %d, 0x%X)\r\n"),
               pOpenContext, dwCode, pBufIn, dwLenIn, pBufOut,
               dwLenOut, pdwActualOut));   
    if ( !pInitContext->OpenCnt ) {
        DEBUGMSG (ZONE_ERROR,
                  (TEXT(" IIC_IOControl - device was closed\r\n")));
        SetLastError (ERROR_INVALID_HANDLE);
        return(FALSE);
    }
    switch ( dwCode ) {  
    case IOCTL_POWER_CAPABILITIES:
        if ( !pdwActualOut 
  相关解决方案