/****************************************** This demo show how to use i8172_DIO_WriteDOBit to write single bit digital output via FR-2054 i8172_DIO_WriteDOGroup to write digital output via FR-2054 i8172_DIO_ReadDIGroup to read digital input via FR-2054 i8172_DIO_ReadDIBit to read single bit digital input via FR-2054 For more detail information about how to use these function, please refer to RFnet.h Compiler: BC++ 3.1, Turbo C++ 1.01 (free from http://community.borland.com/museun) Compile mode: Large [Jun, 2010] by Martin ******************************************/ #include #include "..\lib\8000A.h" #include "..\lib\8172.h" void main(void) { int iDIdata,iSlot,iPort,iGroup,i,iChannel,iMode,iStatus,iRet,iDOdata,iBit; int ID; char cTemp[10]; char libDate[32]; InitLib(); Print("\n****************************"); Print("\nLibrary Version =: %04X",i8172_GetLibVersion()); i8172_GetLibDate(libDate); Print("\nBuild Date =: %s",libDate); Print("\n****************************\n"); start: Print("Please input slot number (0 ~ %d): ",GetNumberOfSlot()-1); LineInput(cTemp,10); sscanf(cTemp,"%d",&iSlot); ID=i8172_Init(iSlot); if(ID<0) { Print("There is no I-8172 at slot %d\n",iSlot); goto start; } Print("Please input port number (0 ~ 1): "); LineInput(cTemp,10); sscanf(cTemp,"%d",&iPort); Print("Please input Group:"); LineInput(cTemp,10); sscanf(cTemp,"%d",&iGroup); if(ID==0) { for(;;) { Print("Please input read mode:\n\r"); Print("0. Write single channel output \n\r"); Print("1. Write multi channel output \n\r"); Print("2. Read single channel input \n\r"); Print("3. Read all channel input \n\r"); Print("4. Read input I/O connection status \n\r"); LineInput(cTemp,10); sscanf(cTemp,"%d",&iMode); switch(iMode) { case 0: Print("Please input channel number(0~7)\n\r"); LineInput(cTemp,10); sscanf(cTemp,"%d",&iBit); Print("Please input status(0.OFF, 1.ON )\n\r"); LineInput(cTemp,10); sscanf(cTemp,"%d",&iStatus); i8172_DIO_WriteDOBit(iSlot,iPort,iGroup,iBit,iStatus); break; case 1: Print("Input Data 0 ~ 0xff \n\r"); LineInput(cTemp,10); sscanf(cTemp,"%X",&iDOdata); i8172_DIO_WriteDOGroup(iSlot,iPort,iGroup,iDOdata & 0xff); break; case 2: iDIdata=i8172_DIO_ReadDIGroup(iSlot,iPort,iGroup); Print("DIdata %X\n\r",iDIdata); break; case 3: Print("Please select DI channel number\n\r"); LineInput(cTemp,10); sscanf(cTemp,"%d",&iChannel); iRet=i8172_DIO_ReadDIBit(iSlot,iPort,iGroup,iChannel); if(iRet) Print("The Channel %d is on.\n\r",iChannel); else Print("The Channel %d is off.\n\r",iChannel); break; case 4: iStatus = i8172_ReadInputGroupStatus(iSlot,iPort, iGroup); if(!iStatus) Print("Connection between Input I/O and 8172 is broken, Check the wiring !\r\n"); else Print("Connection between Input I/O and 8172 is fine\r\n"); break; } Print("Key the 'q' to quit or any key to continue.\n\r"); if(Getch()=='q') return; } } else Print("Please plug in 8172 module.\n\r"); }