⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getdi_setdo.c

📁 一个在Linux下开发的IP摄像头的驱动程序及控制软件
💻 C
字号:
#include "Utility.h"

/*!
***************************************************************************
 * \brief
 *	get DI or set DO

 * \param tServerInfo 
	[in] server info
 * \param *ptDIDOStatus
	[in/out] DI/DO status to get/set
 * \param bGetDI 
	[in] true means get DI
 * \param *ptDIDONumber 
	[out] the DI and DO number of server

 * \return 
 * \retval -2	the index of DO to be set is larger than server's capabilities	
 * \retval S_OK	get DI or set DO success
**************************************************************************/
int GetDI_SetDO(TSERVER_INFO tServerInfo, DIDOSTATUS *ptDIDOStatus, BOOL bGetDI, TDIDONumber *ptDIDONumber)
{
	HANDLE hSrvUtl;
	HANDLE hDevice;
	char lpszModelName[64]; 
	SCODE scRet;
	TSrvDepResource_ServerInfo srvInfo;
	int iCnt;

	scRet = ServerUtlInit(&hSrvUtl, &hDevice, lpszModelName, tServerInfo);
	if (scRet != S_OK)
		return scRet;

	scRet = SrvDepResource_GetParamForServer(lpszModelName, &srvInfo);
	if (scRet != S_OK)
	{		
		ServerUtlRelease(&hSrvUtl, &hDevice);
		return scRet;
	}

	ptDIDONumber->iDINumber = srvInfo.dwDiNum;
	ptDIDONumber->iDONumber = srvInfo.dwDoNum;

	// get DI from server
	if (bGetDI)
	{
		scRet = ServerUtl_GetDIStatus(hDevice, &ptDIDOStatus[0], &ptDIDOStatus[1], &ptDIDOStatus[2], &ptDIDOStatus[3], FALSE);
		if (scRet != S_OK)
		{
			ServerUtlRelease(&hSrvUtl, &hDevice);
			return scRet;
		}	
	} 
	else
	{
		if (ptDIDOStatus != NULL)
		{
			for (iCnt = 0; iCnt < 4; iCnt++)
			{
				if (iCnt >= srvInfo.dwDoNum && ptDIDOStatus[iCnt] != DIDO_NONE)
				{
					ServerUtlRelease(&hSrvUtl, &hDevice);
					return -2;
				}
			}

			scRet = ServerUtl_SetDOLevel(hDevice, ptDIDOStatus[0], ptDIDOStatus[1], FALSE);
			if (scRet != S_OK)
			{
				ServerUtlRelease(&hSrvUtl, &hDevice);
				return scRet;
			}
		}
	}

	ServerUtlRelease(&hSrvUtl, &hDevice);


	return S_OK;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -