Jump to content
Форум по продукции MOXA

Vladimir86

Пользователи
  • Posts

    2
  • Joined

  • Last visited

Posts posted by Vladimir86

  1. Добрый день! Использую пример из библиотеки "MXIO ioLogik 2500 для Windows". В исходном коде на с++ меняю только IP-адрес и запускаю. Пишет ошибку: "MXIO_V3_ERR_FUNCTION_NOT_SUPPORT". Что может быть?
     

    post-11993-0-39006400-1502345830.jpg

     

    В IOxpress показывает статус Lock, не знаю влияет это или нет. Прошивка версии 1.2.0.0.

     

    Исходный код:

     

    /*******************************************************************************
     * Copyright Moxa Inc.
     *
     *
     * Date          Author            Comment
     * 09/11/2015    Daniel Chang      Created.
     ******************************************************************************/
     
     /*!
        \file IOInfo.cpp
        \copyright Moxa Inc.
        \brief <b>\a Read \a IO \a Information</b>
        \date 09/11/2015
        \author Daniel Chang
        \version V1.0
        \details
    */
    
    #include <stdio.h>
    #include <stdlib.h>
    #include "../../../../include/MXIO_V3_2500.h"
    //-----------------------------------------------------------------
    int MXCreateLibrary(HMODULE *phMXIO_V3_2500, CMXIO_V3_2500 **pMXIO_V3_2500, char *szLibName);
    int MXDestroyLibrary(HMODULE hMXIO_V3_2500, CMXIO_V3_2500 **pMXIO_V3_2500);
    void WaitPressAnyKey();
    void CheckErr(int ihConnection, int iRet, char *szFunctionName);
    void PrtBlockErrorString(int iIndex, WORD wErrorCode);
    void PrtChErrorString(int iIndex, BYTE bytErrorCode);
    
    void CALLBACK ReadDataCallbackFunc(WORD wBlockQuantity, int *pRecvReadBlockData, void *pParam);;
    void PrintReadChValue(int iIndex, CMXIO_V3_2500::MX_RECV_READ_BLOCK_DATA *pImp);
    //-----------------------------------------------------------------
    HMODULE g_hMXIO_V3_2500 = NULL;
    CMXIO_V3_2500 *g_pMXIO_V3_2500 = NULL;
    
    //-----------------------------------------------------------------
    //! \include IOInfo.cpp
    int main(int argc, char *argv[])
    {
    	char bytInputValue[64] = {'\0'};
    	char szIP[] = "10.96.109.250";
    	CMXIO_V3_2500::MX_MAC_ADDRESS MxMACAddr;
    	memset(&MxMACAddr, 0, sizeof(MxMACAddr));
        char szMACAddr[18] = {'\0'};//"00-90-e8-00-00-41";
    	DWORD dwTimeout = 3000;
    	int ihConnection = 0;
    	CMXIO_V3_2500::MX_ACCOUNT_DATA AccountData;
    	sprintf(AccountData.szUserName,"%s", (char*)"admin");
    	sprintf(AccountData.szPwd,"%s", (char*)"moxa");
    	//-----------------------------------------------
    	char IPAddress[16] = {'\0'};
    	char szTempBuf[16] = {'\0'};
    	WORD wPort = MXIO_V3_AGENT_PORT;
    	sprintf(IPAddress, "%s", szIP);
    	if (argc <= 1)
    	{
    		printf("Cmd Format: [IP Address] [Timeout] [TCP Port]\n");
    		strcpy(IPAddress, szIP);
    	}
    	//
    	if (argc > 1)
    		sprintf(IPAddress, "%s", argv[1]);
    	if (argc > 2)
    		dwTimeout = atoi(argv[2]);
    	if (argc > 3)
    		wPort = atoi(argv[3]);
    	printf("Input IP Address=%s, TimeOut=%d, TCP Port=%d\n", IPAddress, dwTimeout, wPort);
    	//-----------------------
    	int iRet = MXIO_V3_OK;
    	iRet = MXCreateLibrary(&g_hMXIO_V3_2500, &g_pMXIO_V3_2500, "MXIO_2500.dll");
    	printf("MXCreateLibrary() g_pMXIO_V3_2500=0x%p return %d(0x%X)\n", g_pMXIO_V3_2500, iRet, iRet);
    	//-----------------------
    	if (MXIO_V3_OK == iRet)
    	{
    		iRet = g_pMXIO_V3_2500->MXIO_Init();
    		printf("MXIO_Init() return %d(0x%X)\n", iRet, iRet);
    	}
    	//-----------------------
    	if (MXIO_V3_OK == iRet)
    	{
    		sprintf(szMACAddr, "%02X-%02X-%02X-%02X-%02X-%02X",
    				MxMACAddr.bytMAC[0],
    				MxMACAddr.bytMAC[1],
    				MxMACAddr.bytMAC[2],
    				MxMACAddr.bytMAC[3],
    				MxMACAddr.bytMAC[4],
    				MxMACAddr.bytMAC[5]);
            printf("IP = %s, MAC = %s, Port=%d, Name=%s, Password=%s ",
    			IPAddress, szMACAddr, wPort, AccountData.szUserName, AccountData.szPwd);
    		iRet = g_pMXIO_V3_2500->MXIO_Connect(IPAddress, wPort, dwTimeout, &MxMACAddr, &AccountData, &ihConnection);		
    		CheckErr(ihConnection, iRet, "MXIO_Connect");
    	}
    	//-----------------------------------------------------
    	if(MXIO_V3_OK == iRet)
    	{		
    		//Read
    		//Note: wStartObj and wTotalObj of MX_CMD_BLOCK_HEADER must set to 0 in IOTYPE_SYS_IO_MODE Command.
    		WORD wStartObj = 1, wTotalObj = 2; 
    		CMXIO_V3_2500::MX_READ_BLOCK_DATA ReadBlockDataArray[1] = {'\0'};				
    		{
    			ReadBlockDataArray[0].MxCmdBlockHeader.bytSlotNum = (BYTE)0;
    			ReadBlockDataArray[0].MxCmdBlockHeader.wIOType = (WORD)IOTYPE_SYS_IO_MODE;
    			ReadBlockDataArray[0].MxCmdBlockHeader.wFunction = (WORD)IOFUNC_SYS_ALL_CH_MODE_DI;			
    			ReadBlockDataArray[0].MxCmdBlockHeader.wStartObj = wStartObj;
    			ReadBlockDataArray[0].MxCmdBlockHeader.wTotalObj = wTotalObj;
    		}
    		//-----------------------
    		printf("MXIO_Read(%d)\n", ihConnection);
    		iRet = g_pMXIO_V3_2500->MXIO_Read(ihConnection, 1, ReadBlockDataArray, ReadDataCallbackFunc, NULL);
    		CheckErr(ihConnection, iRet, "MXIO_Read");
    	}	
    	
    	//-----------------------------------------------------
    	if (0 != ihConnection)
    	{
    		iRet = g_pMXIO_V3_2500->MXIO_Disconnect(ihConnection);
    		CheckErr(ihConnection, iRet, "MXIO_Disconnect");
    	}
    	//-----------------------
    	if (NULL != g_hMXIO_V3_2500)
    	{
    		iRet = g_pMXIO_V3_2500->MXIO_Exit();
    		printf("MXIO_Exit() return %d(0x%X)\n", iRet, iRet);
    		iRet = MXDestroyLibrary(g_hMXIO_V3_2500, &g_pMXIO_V3_2500);
    		printf("MXDestroyLibrary() return %d(0x%X)\n", iRet, iRet);
    	}
    	WaitPressAnyKey();
    	return 0;
    }
    
    //-----------------------------------------------------------------
    int MXCreateLibrary(HMODULE *phMXIO_V3_2500, CMXIO_V3_2500 **pMXIO_V3_2500, char *szLibName)
    {
    	*phMXIO_V3_2500 = LoadLibrary(szLibName);
    	if (NULL == *phMXIO_V3_2500)
    		return (GetLastError());
    	PFNCREATEMXIO_V3_2500 pfnCreateMXIO_V3_2500 = (PFNCREATEMXIO_V3_2500)GetProcAddress(*phMXIO_V3_2500, "CreateMXIO_2500");
    	if (NULL == pfnCreateMXIO_V3_2500)
    		return (-1);
    	*pMXIO_V3_2500 = pfnCreateMXIO_V3_2500();
    	return 0;
    }
    //-----------------------------------------------------------------
    int MXDestroyLibrary(HMODULE hMXIO_V3_2500, CMXIO_V3_2500 **pMXIO_V3_2500)
    {
    	PFNDESTROYMXIO_V3_2500 pfnDestroyMXIO_V3_2500 = (PFNDESTROYMXIO_V3_2500)GetProcAddress(hMXIO_V3_2500, "DestroyMXIO_2500");
    	if (NULL == pfnDestroyMXIO_V3_2500)
    	return (GetLastError());
    
    	pfnDestroyMXIO_V3_2500(*pMXIO_V3_2500);
    	FreeLibrary(hMXIO_V3_2500);
    	*pMXIO_V3_2500 = NULL;
    	return 0;
    }
    //-----------------------------------------------------------------
    void WaitPressAnyKey()
    {
        system("pause");
    }
    //-----------------------------------------------------------------
    //===========================================================================
    void CheckErr(int ihConnection, int iRet, char *szFunctionName)
    {
    	char *szErrMsg = "MXIO_V3_OK";
    	if (iRet != MXIO_V3_OK)
    	{
    		switch (iRet)
    		{
    		case MXIO_V3_ILLEGAL_FUNCTION:
    			szErrMsg = "MXIO_V3_ILLEGAL_FUNCTION";
    			break;
    		case MXIO_V3_ILLEGAL_DATA_ADDRESS:
    			szErrMsg = "MXIO_V3_ILLEGAL_DATA_ADDRESS";
    			break;
    		case MXIO_V3_ILLEGAL_DATA_VALUE:
    			szErrMsg = "MXIO_V3_ILLEGAL_DATA_VALUE";
    			break;
    		case MXIO_V3_SLAVE_DEVICE_FAILURE:
    			szErrMsg = "MXIO_V3_SLAVE_DEVICE_FAILURE";
    			break;
    		case MXIO_V3_SLAVE_DEVICE_BUSY:
    			szErrMsg = "MXIO_V3_SLAVE_DEVICE_BUSY";
    			break;
    		case MXIO_V3_EIO_TIME_OUT:
    			szErrMsg = "MXIO_V3_EIO_TIME_OUT";
    			break;
    		case MXIO_V3_EIO_INIT_SOCKETS_FAIL:
    			szErrMsg = "MXIO_V3_EIO_INIT_SOCKETS_FAIL";
    			break;
    		case MXIO_V3_EIO_CREATING_SOCKET_ERROR:
    			szErrMsg = "MXIO_V3_EIO_CREATING_SOCKET_ERROR";
    			break;
    		case MXIO_V3_EIO_RESPONSE_BAD:
    			szErrMsg = "MXIO_V3_EIO_RESPONSE_BAD";
    			break;
    		case MXIO_V3_EIO_SOCKET_DISCONNECT:
    			szErrMsg = "MXIO_V3_EIO_SOCKET_DISCONNECT";
    			break;
    		case MXIO_V3_PROTOCOL_TYPE_ERROR:
    			szErrMsg = "MXIO_V3_PROTOCOL_TYPE_ERROR";
    			break;
    		case MXIO_V3_PRODUCT_NOT_SUPPORT:
    			szErrMsg = "MXIO_V3_PRODUCT_NOT_SUPPORT";
    			break;
    		case MXIO_V3_HANDLE_ERROR:
    		    szErrMsg = "MXIO_V3_HANDLE_ERROR";
    		    break;
    		case MXIO_V3_SLOT_OUT_OF_RANGE:
    			szErrMsg = "MXIO_V3_SLOT_OUT_OF_RANGE";
    			break;
    		case MXIO_V3_CHANNEL_OUT_OF_RANGE:
    			szErrMsg = "MXIO_V3_CHANNEL_OUT_OF_RANGE";
    			break;
    		case MXIO_V3_COIL_TYPE_ERROR:
    			szErrMsg = "MXIO_V3_COIL_TYPE_ERROR";
    			break;
    		case MXIO_V3_REGISTER_TYPE_ERROR:
    			szErrMsg = "MXIO_V3_REGISTER_TYPE_ERROR";
    			break;
    		case MXIO_V3_FUNCTION_NOT_SUPPORT:
    		    szErrMsg = "MXIO_V3_FUNCTION_NOT_SUPPORT";
    		    break;
    		case MXIO_V3_OUTPUT_VALUE_OUT_OF_RANGE:
    			szErrMsg = "MXIO_V3_OUTPUT_VALUE_OUT_OF_RANGE";
    			break;
    		case MXIO_V3_INPUT_VALUE_OUT_OF_RANGE:
    			szErrMsg = "MXIO_V3_INPUT_VALUE_OUT_OF_RANGE";
    			break;
    		case MXIO_V3_EIO_PASSWORD_INCORRECT:
    			szErrMsg = "MXIO_V3_EIO_PASSWORD_INCORRECT";
    			break;
    		case MXIO_V3_SLOT_NOT_EXIST:
    			szErrMsg = "MXIO_V3_SLOT_NOT_EXIST";
    			break;
    		case MXIO_V3_FIRMWARE_NOT_SUPPORT:
    			szErrMsg = "MXIO_V3_FIRMWARE_NOT_SUPPORT";
    			break;
    		case MXIO_V3_CREATE_MUTEX_FAIL:
    			szErrMsg = "MXIO_V3_CREATE_MUTEX_FAIL";
    			break;
    		case MXIO_V3_ERR_ENUM_NET_INTERFACE_FAIL:
    			szErrMsg = "MXIO_V3_ERR_ENUM_NET_INTERFACE_FAIL";
    			break;
    		case MXIO_V3_ERR_SELECT_NET_INTERFACE_FAIL:
    			szErrMsg = "MXIO_V3_ERR_SELECT_NET_INTERFACE_FAIL";
    			break;
    		case MXIO_V3_ERR_FUNCTION_NOT_SUPPORT:
    			szErrMsg = "MXIO_V3_ERR_FUNCTION_NOT_SUPPORT";
    			break;
    		case MXIO_V3_ERR_INVALID_HANDLE:
    			szErrMsg = "MXIO_V3_ERR_INVALID_HANDLE";
    			break;
    		case MXIO_V3_ERR_BLOCK_QUANTITY:
    			szErrMsg = "MXIO_V3_ERR_BLOCK_QUANTITY";
    			break;
    		case MXIO_V3_ERR_TOTAL_BLOCK_SIZE:
    			szErrMsg = "MXIO_V3_ERR_TOTAL_BLOCK_SIZE";
    			break;
    		case MXIO_V3_ERR_REACH_MXIO_LIMIT_CONNECTION:
    			szErrMsg = "MXIO_V3_ERR_REACH_MXIO_LIMIT_CONNECTION";
    			break;
    		case MXIO_V3_ERR_PARSE_XML_FAIL:
    			szErrMsg = "MXIO_V3_ERR_PARSE_XML_FAIL";
    			break;
    		case MXIO_V3_ERR_ACCOUNT_VERIFY_FAIL:
    			szErrMsg = "MXIO_V3_ERR_ACCOUNT_VERIFY_FAIL";
    			break;
    		case MXIO_V3_ERR_ACCOUNT_ACCESS_RIGHT:
    			szErrMsg = "MXIO_V3_ERR_ACCOUNT_ACCESS_RIGHT";
    			break;			
    		default:
    			szErrMsg = "Unknown Error Value";
    			break;
    		}
    		printf("%d Function \"%s\" execution Fail.\nError Message : %s (%d(0x%X))\n",
    			   ihConnection, szFunctionName, szErrMsg, iRet, iRet);
    	}
    	else
    	{
    		printf("%d Function \"%s\" execution Success\n", ihConnection, szFunctionName);
    	}
    }
    
    //-----------------------------------------------------------------
    void PrtBlockErrorString(int iIndex, WORD wErrorCode)
    {
    	if (MXIO_V3_BLOCK_ERR_SIZE == wErrorCode)
    		printf("Block[%d] = BLOCK_ERR_SIZE\n", iIndex);
    	else if (MXIO_V3_BLOCK_ERR_TYPE == wErrorCode)
    		printf("Block[%d] = BLOCK_ERR_TYPE\n", iIndex);
    	else if (MXIO_V3_BLOCK_ERR_SUBTYPE == wErrorCode)
    		printf("Block[%d] = BLOCK_ERR_SUBTYPE\n", iIndex);
    	else if (MXIO_V3_BLOCK_ERR_FUNCTION == wErrorCode)
    		printf("Block[%d] = BLOCK_ERR_FUNCTION\n", iIndex);
    	else if (MXIO_V3_BLOCK_ERR_SLOT == wErrorCode)
    		printf("Block[%d] = BLOCK_ERR_SLOT\n", iIndex);
    	else if (MXIO_V3_BLOCK_ERR_START_OBJ == wErrorCode)
    		printf("Block[%d] = BLOCK_ERR_START_CHANNEL\n", iIndex);
    	else if (MXIO_V3_BLOCK_ERR_TOTAL_OBJ == wErrorCode)
    		printf("Block[%d] = BLOCK_ERR_TOTAL_CHANNEL\n", iIndex);
    	else
    		printf("Block[%d] = Not defined error code= %d\n", iIndex, wErrorCode);
    }
    
    //-----------------------------------------------------------------
    void PrtChErrorString(int iIndex, BYTE bytErrorCode)
    {
    	if (MXIO_V3_CH_OK == bytErrorCode)
    		printf("CH[%d] = SUCCESS\n", iIndex);
    	else if (MXIO_V3_CH_ERR_LOCKED == bytErrorCode)
    		printf("CH[%d] = ERROR_LOCKED\n", iIndex);
    	else if (MXIO_V3_CH_ERR_READ_ONLY == bytErrorCode)
    		printf("CH[%d] = ERROR_READ_ONLY\n", iIndex);
    	else if (MXIO_V3_CH_ERR_SUBTYPE == bytErrorCode)
    		printf("CH[%d] = ERROR_SUBTYPE\n", iIndex);
    	else if (MXIO_V3_CH_ERR_DATA_TYPE == bytErrorCode)
    		printf("CH[%d] = ERROR_DATA_TYPE\n", iIndex);
    	else if (MXIO_V3_CH_ERR_DATA == bytErrorCode)
    		printf("CH[%d] = ERROR_DATA\n", iIndex);
    	else if (MXIO_V3_CH_ERR_DISABLE == bytErrorCode)
    		printf("CH[%d] = ERROR_DISABLE\n", iIndex);
    	else if (MXIO_V3_CH_ERR_BOOLEAN_ONLY == bytErrorCode)
    		printf("CH[%d] = ERROR_BOOLEAN_ONLY\n", iIndex);
    	else if (MXIO_V3_CH_ERR_WRITE_FAIL== bytErrorCode)
    		printf("CH[%d] = MXIO_V3_CH_ERR_WRITE_FAIL\n", iIndex);
    	else
    		printf("CH[%d] = Not defined error code= %d\n", iIndex, bytErrorCode);
    }
    
    
    //-----------------------------------------------------------------
    typedef struct _CHANNEL_INFO{
    	WORD wValue;
    	char* szStr;
    }CHANNEL_INFO;
    
    void PrintReadChValue(int iIndex, CMXIO_V3_2500::MX_RECV_READ_BLOCK_DATA *pImp)
    {
    	CHANNEL_INFO wDIGITAL[] =
    	{
    		CHINFO_DI_DI,        "CHINFO_DI_DI",
    		CHINFO_DI_COUNTER,   "CHINFO_DI_COUNTER",
    		CHINFO_DO_DO,        "CHINFO_DO_DO",
    		CHINFO_DO_PULSE,     "CHINFO_DO_PULSE",
    		CHINFO_DIO_DI,       "CHINFO_DIO_DI",
    		CHINFO_DIO_COUNTER,  "CHINFO_DIO_COUNTER",
    		CHINFO_DIO_DO,       "CHINFO_DIO_DO",
    		CHINFO_DIO_PULSE,    "CHINFO_DIO_PULSE",
    		CHINFO_RELAY_RELAY,  "CHINFO_RELAY_RELAY",
    		CHINFO_RELAY_PULSE,  "CHINFO_RELAY_PULSE",
    	};
    
    	CHANNEL_INFO wANALOG_AI[] =
    	{
    		CHINFO_AI_150mV,            "CHINFO_AI_150mV",
    		CHINFO_AI_500mV,            "CHINFO_AI_500mV",
    		CHINFO_AI_5V,               "CHINFO_AI_5V",
    		CHINFO_AI_10V,              "CHINFO_AI_10V",
    		CHINFO_AI_0_20mA,           "CHINFO_AI_0_20mA",
    		CHINFO_AI_4_20mA,           "CHINFO_AI_4_20mA",
    		CHINFO_AI_0_10V,            "CHINFO_AI_0_10V",
    		CHINFO_AI_4_20mA_BurnOut,   "CHINFO_AI_4_20mA_BurnOut",
    		CHINFO_AI_DISABLED,         "CHINFO_AI_DISABLED",
    	};
    
    	CHANNEL_INFO wANALOG_AO[] =
    	{
    		CHINFO_AO_4_20mA,   "CHINFO_AO_4_20mA",
    		CHINFO_AO_0_10V,    "CHINFO_AO_0_10V",
    		CHINFO_AO_DISABLED, "CHINFO_AO_DISABLED",
    	};
    
    	CHANNEL_INFO wANALOG_TC[] =
    	{
    		CHINFO_TC_J_TYPE,       "CHINFO_TC_J_TYPE",
    		CHINFO_TC_K_TYPE,       "CHINFO_TC_K_TYPE",
    		CHINFO_TC_T_TYPE,       "CHINFO_TC_T_TYPE",
    		CHINFO_TC_E_TYPE,       "CHINFO_TC_E_TYPE",
    		CHINFO_TC_R_TYPE,       "CHINFO_TC_R_TYPE",
    		CHINFO_TC_S_TYPE,       "CHINFO_TC_S_TYPE",
    		CHINFO_TC_B_TYPE,       "CHINFO_TC_B_TYPE",
    		CHINFO_TC_N_TYPE,       "CHINFO_TC_N_TYPE",
    		CHINFO_TC_VOL_78126,    "CHINFO_TC_VOL_78126",
    		CHINFO_TC_VOL_39062,    "CHINFO_TC_VOL_39062",
    		CHINFO_TC_VOL_19532,    "CHINFO_TC_VOL_19532",
    		CHINFO_TC_DISABLED,     "CHINFO_TC_DISABLED",
    	};
    
    	CHANNEL_INFO wANALOG_RTD[] =
    	{
    		CHINFO_RTD_PT100,    "CHINFO_RTD_PT100",
    		CHINFO_RTD_PT200,    "CHINFO_RTD_PT200",
    		CHINFO_RTD_PT500,    "CHINFO_RTD_PT500",
    		CHINFO_RTD_PT1000,   "CHINFO_RTD_PT1000",
    		CHINFO_RTD_JPT100,   "CHINFO_RTD_JPT100",
    		CHINFO_RTD_JPT200,   "CHINFO_RTD_JPT200",
    		CHINFO_RTD_JPT500,   "CHINFO_RTD_JPT500",
    		CHINFO_RTD_JPT1000,  "CHINFO_RTD_JPT1000",
    		CHINFO_RTD_NI100,    "CHINFO_RTD_NI100",
    		CHINFO_RTD_NI200,    "CHINFO_RTD_NI200",
    		CHINFO_RTD_NI500,    "CHINFO_RTD_NI500",
    		CHINFO_RTD_NI1000,   "CHINFO_RTD_NI1000",
    		CHINFO_RTD_RES_310,  "CHINFO_RTD_RES_310",
    		CHINFO_RTD_RES_620,  "CHINFO_RTD_RES_620",
    		CHINFO_RTD_RES_1250, "CHINFO_RTD_RES_1250",
    		CHINFO_RTD_RES_2200, "CHINFO_RTD_RES_2200",
    		CHINFO_RTD_PT50,     "CHINFO_RTD_PT50",
    		CHINFO_RTD_NI120,    "CHINFO_RTD_NI120",
    		CHINFO_RTD_DISABLED, "CHINFO_RTD_DISABLED",
    	};
    
    	CHANNEL_INFO wANALOG_SERIAL[] =
    	{
    		CHINFO_SERIALTAG_BYTE,   "CHINFO_SERIALTAG_BYTE",
    		CHINFO_SERIALTAG_WORD,	 "CHINFO_SERIALTAG_CHANNEL_WORD",
    		CHINFO_SERIALTAG_DWORD,  "CHINFO_SERIALTAG_DCHANNEL_DWORD",
    		CHINFO_SERIALTAG_INT,    "CHINFO_SERIALTAG_INT",
    		CHINFO_SERIALTAG_FLOAT,  "CHINFO_SERIALTAG_FLOAT",
    	};
    
    	WORD wChInfo = (WORD)pImp->pRwChannelData[iIndex].unValue.wValue;
    	for(int i=0; i < sizeof(wDIGITAL)/sizeof(wDIGITAL[0]); i++)
    		if(wDIGITAL[i].wValue == wChInfo)
    			printf("[%d] = %s\n", iIndex, wDIGITAL[i].szStr);
    	for(int i=0; i < sizeof(wANALOG_AI)/sizeof(wANALOG_AI[0]); i++)
    		if(wANALOG_AI[i].wValue == wChInfo)
    			printf("[%d] = %s\n", iIndex, wANALOG_AI[i].szStr);
    	for(int i=0; i < sizeof(wANALOG_AO)/sizeof(wANALOG_AO[0]); i++)
    		if(wANALOG_AO[i].wValue == wChInfo)
    			printf("[%d] = %s\n", iIndex, wANALOG_AO[i].szStr);
    	for(int i=0; i < sizeof(wANALOG_TC)/sizeof(wANALOG_TC[0]); i++)
    		if(wANALOG_TC[i].wValue == wChInfo)
    			printf("[%d] = %s\n", iIndex, wANALOG_TC[i].szStr);
    	for(int i=0; i < sizeof(wANALOG_RTD)/sizeof(wANALOG_RTD[0]); i++)
    		if(wANALOG_RTD[i].wValue == wChInfo)
    			printf("[%d] = %s\n", iIndex, wANALOG_RTD[i].szStr);
    	for(int i=0; i < sizeof(wANALOG_SERIAL)/sizeof(wANALOG_SERIAL[0]); i++)
    		if(wANALOG_SERIAL[i].wValue == wChInfo)
    			printf("[%d] = %s\n", iIndex, wANALOG_SERIAL[i].szStr);
    }
    
    //-----------------------------------------------------------------
    void CALLBACK ReadDataCallbackFunc(WORD wBlockQuantity, int *pRecvReadBlockData, void *pParam)
    {
    	CMXIO_V3_2500::MX_RECV_READ_BLOCK_DATA *pReadImp = (CMXIO_V3_2500::MX_RECV_READ_BLOCK_DATA *)pRecvReadBlockData;
    	if (pReadImp)
    	{
    		if (MXIO_V3_BLOCK_OK == pReadImp->MxRecvBlockHeader.wResult) //
    		{
    			printf("Read Block[%d] Success:\n", (wBlockQuantity-1));
    			for (int i = 0; i < pReadImp->MxRecvBlockHeader.wTotalObj; i++)
    			{
    				if (MXIO_V3_CH_OK == pReadImp->pRwChannelData[i].bytErrorCode)
    					PrintReadChValue(i, pReadImp);
    				else
    					PrtChErrorString(i, pReadImp->pRwChannelData[i].bytErrorCode);
    			}
    		}
    		else
    			PrtBlockErrorString((wBlockQuantity - 1), pReadImp->MxRecvBlockHeader.wResult);
    	}
    }
    //-----------------------------------------------------------------
     

     

     

    post-11993-0-39006400-1502345830_thumb.jpg

×
×
  • Create New...