如果定位列表框,比如是我用ADO连接一个学生信息表,里面有学号等信息。我想用一个对话框,在对话框中输入正确的学号,它就定位在所对应的行那里,并且用不同的颜色显示出来!不对就跳出一个错误对话框

解决方案 »

  1.   

    启动加载命令发送
    UINT32 CCU485LoadStartCmdSend(UINT16 uwIndex, UCHAR ucChannelNum, PRS485_BOARD_T pstNode)
    UINT8   aucBuf[8]   = {0};UINT32  ulBlkNum   = CCU_NULL_LONG;  UINT32   ulRet = CCU_OK;
    UINT16    uwCmd  = CCU_NULL_WORD;UINT16    uwHandle = CCU_NULL_WORD;CHECK;
    uwHandle    = y6.uwHandle;aucBuf[0] = 0xff;/*采用crc校验*/aucBuf[1] = 0x02;
    ulBlkNum = CCU485MainBufLenToBlk(y6.ulMainBufLen);
    aucBuf[2] = (UCHAR)(ulBlkNum >> 8);aucBuf[3] = (UCHAR)ulBlkNum;
    /*每帧128字节*/aucBuf[4] = 0;aucBuf[5] = BLOCK_LEN;
    /*窗口宽度*/aucBuf[6] = WINDOW_WIDTH;switch (pstNode->enBoardType)
    { case CCU_485_FMU_TYPE_CA:aucBuf[7] = 0; break;
    case CCU_485_EMU_TYPE_CF: aucBuf[7] = 1; break;
    case CCU_485_PMU_TYPE_C9:aucBuf[7] = 2;break;
    case CCU_485_EFUSE_TYPE_CB: aucBuf[7] = 3; break;
    case CCU_485_TCU_TYPE_CC:aucBuf[7] = 0xFF;break;
    default:DBG_DOWNLOAD;return CCU_ERR;}
     uwCmd = ((UINT16)LOAD_NODE_TYPE << 8) + START_DOWNLOAD;
    ulRet = SendAsyMsgToPnP(pstNode->ulResId, uwCmd, uwHandle, TO_PNP_ASY_TYPE, aucBuf, 8);
    if(CCU_OK != ulRet){DBG_DOWNLOAD;return ulRet;}return CCU_OK;
    加载数据发送
    UINT32 CCU485LoadSegmentSend(UINT16 uwIndex, UCHAR ucChannelNum,PRS485_BOARD_T pstNode)
    UINT8   ucBuf[140]   = {0};UINT32  ulRet  = CCU_NULL_LONG;UINT16  uwCmd   = CCU_NULL_WORD;
    UINT32  ulBlkLen    = CCU_NULL_LONG;UINT16   uwHandle  = CCU_NULL_WORD;
    CHECK_PARA1_NULL_RN(pstNode, CCU_ERR_MPI_INVALID_PARAMS);uwHandle = y6.uwHandle;
    /*帧号*/ucBuf[0] = (UCHAR)(y6.ulCurBlk >> 8);ucBuf[1] = (UCHAR)y6.ulCurBlk;
    ucBuf[2] = 0xff;ucBuf[3] = 0xff;if (y6.ulCurBlk == (y6.ulTotalBlk - 1))
    {ulBlkLen = y6.ulMainBufLen  - (y6.ulCurBlk * BLOCK_LEN);}
    else{ulBlkLen = BLOCK_LEN;}/* 此处的134为ucBuf的长度140减去协议头6 */
    if ( ulBlkLen > 134){ DBG_DOWNLOAD;return CCU_485_ERR_LENGTH_OVERLOAD;}
    CHECK_PARA1_NULL_RN(y6.pFrame, CCU_ERR_MPI_INVALID_PARAMS);    
    CCU_MemCpy((UCHAR*)&ucBuf[4],(UCHAR *)&(y6.pFrame[y6.ulCurBlk * BLOCK_LEN]),(INT)ulBlkLen);
    uwCmd = ((UINT16)LOAD_NODE_TYPE << 8) + LOAD_SEGMENT;
    ulRet = SendAsyMsgToPnP(pstNode->ulResId, uwCmd, uwHandle, TO_PNP_ASY_TYPE, ucBuf, ulBlkLen + 4);
    if(CCU_OK != ulRet){DBG_DOWNLOAD;return ulRet;}y6.ulCurBlk++;return CCU_OK;
      

  2.   

    停止加载命令转发
    UINT32 CCU485LoadEndSend(UINT16 uwIndex, UCHAR ucChanNum,PRS485_BOARD_T pstNode)
    UINT8   ucBuf[4]    = {0};UINT32  ulRet   = CCU_NULL_LONG;
    UINT16  uwCmd  = CCU_NULL_WORD;
    UINT16  uwHandle   = CCU_NULL_WORD;CHECK;
    uwHandle = g_ast485DownLoadTab[ucChanNum].astDataUint[uwIndex].uwHandle;
    ucBuf[0] = 0xff;ucBuf[1] = 0xff;
    uwCmd = ((UINT16)LOAD_NODE_TYPE << 8) + END_DOWNLOAD;
    ulRet = SendAsyMsgToPnP(pstNode->ulResId, uwCmd, uwHandle, TO_PNP_ASY_TYPE, ucBuf, 2);
    if(CCU_OK != ulRet){DBG_DOWNLOAD;return ulRet;}return CCU_OK;
    激活命令发送
    UINT32 CCU485ActiveVerSend(UINT16 uwIndex, UCHAR ucChanNum,PRS485_BOARD_T pstNode )
    UINT8   ucBuf[5]  = {0};UINT32  ulRet  = CCU_NULL_LONG;UINT16  uwCmd  = CCU_NULL_WORD;
    UINT16  uwHandle  = CCU_NULL_WORD;CHECK;
    uwHandle = g_ast485DownLoadTab[ucChanNum].astDataUint[uwIndex].uwHandle;
    ucBuf[0] = 0x01;ucBuf[1] = 0;ucBuf[2] = 0;uwCmd = ((UINT16)LOAD_NODE_TYPE << 8) + ACTIVE_APP;
    ulRet = SendAsyMsgToPnP(pstNode->ulResId, uwCmd, uwHandle, TO_PNP_ASY_TYPE, ucBuf, 3);
    if(CCU_OK != ulRet){    DBG_DOWNLOAD; return ulRet;} return CCU_OK;
    根据文件名读文件
    UINT32 RS485ReadFileToBuf(CHAR *pfName, UCHAR **ppucBuf, UINT32 *pulLen)  
    INT32  iLen = -1;UCHAR *pucBuf = CCU_NULL_PTR;INT32 iLen1;
    FILE *fp = CCU_NULL_PTR;/* 参数检查 */PARA_CHECK3(pfName,ppucBuf,pulLen)
    /* 打开文件 */fp = CCU_FOpen(pfName, "rb");if (CCU_NULL_PTR == fp){
    DBG_DOWNLOAD; return CCU_ERR;}
    /* 取文件长度 (设定文件操作指示器位置) 0是相对于SEEK_END的偏移量 */
    if (0 != CCU_FSeek(fp, 0, SEEK_END)){DBG_DOWNLOAD;CCU_FClose(fp); return CCU_ERR;}
    /* 得到文件指示器的值,实际上是文件的长度,从文件头到文件尾 */
    iLen = CCU_FTell(fp);if (iLen <= 0){DBG_DOWNLOAD;CCU_FClose(fp);return CCU_ERR;} 
    /* 分配文件内存 */pucBuf = (UCHAR *)CCU_MemAlloc(CCU_MEM_INFO, CCU_MEM_PT_NO, (UINT32)iLen * sizeof(UCHAR));
    if (CCU_NULL_PTR == pucBuf){DBG_DOWNLOAD; CCU_FClose(fp);return CCU_ERR;}
    /*  SEEK_SET 文件开始位置SEEK_CUR 文件当前位置SEEK_END 文件结束位置 */
    if (0 != CCU_FSeek(fp, 0, SEEK_SET)){DBG_DOWNLOAD; CCU_MemFree(CCU_MEM_INFO, pucBuf);
    pucBuf = CCU_NULL_PTR;CCU_FClose(fp);return CCU_ERR;}
    iLen1 = (INT32)CCU_FRead(pucBuf, sizeof(UCHAR), (UINT32)iLen, fp);