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

📄 dido.c

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

int main(int argc, char* argv[])
{
	int iTemp, i;
	TSERVER_INFO tServerInfo;
	SCODE scRet;
	char szInputBuf[4] = "";
	DIDOSTATUS atDIDO[4];
	TDIDONumber tDIDONumber;
		
	memset(atDIDO, 0, sizeof(atDIDO));
	memset(&tDIDONumber, 0, sizeof(tDIDONumber));

	if (HandleBasicArgument(argc, argv, &tServerInfo) < 0)
		return -1;
	
	printf("To end this program, please press Enter directly.\n");
	printf("Choose one operation\n(1) Get DI, (2) Set DO :");

	szInputBuf[0] = 0;
	if (fgets(szInputBuf, 3, stdin) == NULL)
	{
		printf("please input correct data\n");
		return -1;
	}

	if (strlen(szInputBuf) > 0 && szInputBuf[strlen(szInputBuf) - 1] == '\n')
		szInputBuf[strlen(szInputBuf) - 1] = 0;

	if (szInputBuf[0] == 0)
	{
		printf("please input correct data\n");
		return -1;
	}

	iTemp = atoi(szInputBuf);
	if (iTemp < 1 || iTemp > 2)
	{
		printf("\nIndex out of range!\n\n");
		return -1;
	}
	
	scRet = GetDI_SetDO(tServerInfo, atDIDO, TRUE, &tDIDONumber);//Get DI status
	if (scRet != S_OK)
	{
		printf("get DI fail with error %X\n", scRet);
		return scRet;
	}

	if (iTemp == 1)
	{
		printf("DI(s) =");
		for (i = 0; i < tDIDONumber.iDINumber; i++)
		{
			if (i != 0)
				printf(", ");
			printf("%d(%s)", i + 1, atDIDO[i]==DIDO_HIGH?"H":"L");
		}

		printf("\n\n");
	} else if (iTemp == 2)
	{
		memset(atDIDO, 0, sizeof(atDIDO));
		i = 0; //dedault DO number is 1
		if (tDIDONumber.iDONumber > 1)
		{
			printf("Which DO to set? (%d - %d or %d means all)",
					0, tDIDONumber.iDONumber - 1, tDIDONumber.iDONumber);

			szInputBuf[0] = 0;
			if (fgets(szInputBuf, 3, stdin) == NULL)
			{
				printf("please input correct data\n");
				return -1;
			}		

			if (strlen(szInputBuf) > 0 && szInputBuf[strlen(szInputBuf) - 1] == '\n')
				szInputBuf[strlen(szInputBuf) - 1] = 0;

			i = atoi(szInputBuf);
			if (i < 0 || i > tDIDONumber.iDONumber)
			{
				printf("Out of range!\n");
				return -1;
			}
		}
		

		printf("Value set to? (L or H)");
		szInputBuf[0] = 0;
		if (fgets(szInputBuf, 3, stdin) == NULL)
		{
			printf("please input correct data\n");
			return -1;
		}	

		if (strlen(szInputBuf) > 0 && szInputBuf[strlen(szInputBuf) - 1] == '\n')
			szInputBuf[strlen(szInputBuf) - 1] = 0;

		if (szInputBuf[0] == 0)
		{
			printf("please input correct data\n");
			return -1;
		}		
		
		if (i != tDIDONumber.iDONumber)
		{
			if (szInputBuf[0] == 'l' || szInputBuf[0] == 'L' || szInputBuf[0] == '0')
				atDIDO[i] = DIDO_LOW;
			else if (szInputBuf[0] == 'h' || szInputBuf[0] == 'H' || szInputBuf[0] == '1')
				atDIDO[i] = DIDO_HIGH;
			else
			{
				printf("Input value incorrect!\n");
				return -1;
			}
		}
		else
		{
			if (szInputBuf[0] == 'l' || szInputBuf[0] == 'L' || szInputBuf[0] == '0')
				atDIDO[i-1] = DIDO_LOW;
			else if (szInputBuf[0] == 'h' || szInputBuf[0] == 'H' || szInputBuf[0] == '1')
				atDIDO[i-1] = DIDO_HIGH;
			else
			{
				printf("Input value incorrect!\n");
				return -1;
			}
		}

		//atDIDO[1] = DIDO_NONE;
		if (i == tDIDONumber.iDONumber)
		{
			int j = 0;

			for (j; j < tDIDONumber.iDONumber && j != i; j++)
				atDIDO[j] = atDIDO[i-1];
		}
		
		scRet = GetDI_SetDO(tServerInfo, atDIDO, FALSE, &tDIDONumber);
		if (scRet == S_OK)
			printf("set DO success\n");
		else
			printf("set DO fail with error %X\n", scRet);
	}

	return 0;
}


⌨️ 快捷键说明

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