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

📄 dosoft.cpp

📁 16 relay output channels and 16 isolated digital input channels LED indicators to show activated
💻 CPP
字号:
/*
 ****************************************************************************************
 * Program        : DIGOUT.CPP                                                          *
 * Description    : Demo program for digital output function                            *
 * Boards Supp.   : PCL-818 series/816/1800/812PG/711B, PCM-3718/3724                   *
 *                  PCI-1710/1720/1750/1751/1760, PCL-813B/725/730/722/724/731          *
 *                  PCL-734/735/720/836, MIC-2750/2752/2760                             *
 *                  ADAM-4011/4011D/4012/4014D/4016/4060/4050/5060/4080D/5050/4050      *
 * APIs used      : DRV_DeviceOpen,DRV_DeviceClose, DRV_DioWriteBit                     *
 *                  DRV_GetErrorMessage                                                 *
 * Revision       : 1.00                                                                *
 * Date           : 7/8/1999                   Advantech Co., Ltd.                      *
 ****************************************************************************************
 */
#include <windows.h>
#include <windef.h>
#include <stdio.h>
#include <conio.h>

#include "..\..\..\include\driver.h"

/******************************
 * Local function declaration *
 ******************************/
void ErrorHandler(DWORD dwErrCde);
void ErrorStop(long*, DWORD);

void main()
{
    DWORD  dwErrCde;
    ULONG  lDevNum;
    long   lDriverHandle;
    USHORT usState;
	USHORT usChan;
	USHORT usPort;
	USHORT usMaxPort;
	char   chIput;
	DEVFEATURES devFeatures;
	PT_DeviceGetFeatures ptDevGetFeatures;
	PT_DioWriteBit ptDioWriteBit;

	//Step 1: Display hardware and software settings for running this example
	printf("Before running this example, please\n");
	printf("use the device installation utility to add the device.\n");

	//Step 2: Input parameters
	printf("\nPlease input parameters:");
	printf("\nDevice Number (check the device installation utility): ");
	scanf("%d", &lDevNum);

	//Step 3: Open device
	dwErrCde = DRV_DeviceOpen(lDevNum, &lDriverHandle);   
	if (dwErrCde != SUCCESS)
	{
		ErrorHandler(dwErrCde);
		printf("Program terminated!\n");

		printf("Press any key to exit....");
		getch();
		exit(1);
	}

	// Step 4: Get features

	ptDevGetFeatures.buffer = &devFeatures;
	ptDevGetFeatures.size = sizeof(DEVFEATURES);
	dwErrCde = DRV_DeviceGetFeatures(lDriverHandle,(LPT_DeviceGetFeatures)&ptDevGetFeatures);
    if (dwErrCde != SUCCESS)
    {
        ErrorStop(&lDriverHandle, dwErrCde);
        return;
    }
	if (devFeatures.usMaxDOChl<1)
	{
		dwErrCde = DRV_DeviceClose(&lDriverHandle);
		printf("Device not support DO function.");		
		printf("\nPress any key to exit....");
		getch();
		exit(1);
	}
	usMaxPort = (devFeatures.usMaxDOChl+7)/8 - 1;
	
	do{
	printf("\nPlease input port:(0~%d)", usMaxPort);
	scanf("%d", &usPort);
	printf("\nOutput Channel (0 to 7): ");
	scanf("%d", &usChan);
	printf("\nOutput State (0 or 1): ");
	scanf("%d", &usState);
	
	
	// Step 4: Turn on/off the specified channel
	ptDioWriteBit.port  = usPort;  // output port: 0
	ptDioWriteBit.bit   = usChan;  // output channel
	ptDioWriteBit.state = usState; // output state
    
	
	dwErrCde = DRV_DioWriteBit(lDriverHandle,
						 (LPT_DioWriteBit)&ptDioWriteBit);

	if (dwErrCde != SUCCESS)
	{
		ErrorStop(&lDriverHandle, dwErrCde);
		return;
	}

	// Step 5: Display ouptut data
	printf("\nOutput data = %d\n", usState);
	printf("\nPress any key to continue, press Esc to exit...");
	chIput = getch();
	}while(chIput!=VK_ESCAPE);
	// Step 6: Close device
	dwErrCde = DRV_DeviceClose(&lDriverHandle);

	printf("\nPress any key to exit....");
	getch();

}//main

/**********************************************************************
 * Function: ErrorHandler
 *           Show the error message for the corresponding error code
 * input:    dwErrCde, IN, Error code
 * return:   none
 **********************************************************************/
void ErrorHandler(DWORD dwErrCde)
{
    char szErrMsg[180];

    DRV_GetErrorMessage(dwErrCde, szErrMsg);
    printf("\nError(%d): %s\n", dwErrCde & 0xffff, szErrMsg);
}//ErrorHandler

/**********************************************************************
 * Function:   ErrorStop
 *             Release all resource and terminate program if error occurs 
 * Paramaters: pDrvHandle, IN/OUT, pointer to Driver handle
 *             dwErrCde, IN, Error code.
 * return:     none             
 **********************************************************************/
void ErrorStop(long *pDrvHandle, DWORD dwErrCde)
{
    //Error message 
    ErrorHandler(dwErrCde);
    printf("Program terminated!\n");
    
    //Close device
    DRV_DeviceClose(pDrvHandle);
    exit(1);
}//ErrorStop

⌨️ 快捷键说明

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