버튼에 Led가 달려있어서 신호를 주면 불이 들어오게 하는 프로그램을 작성하려 합니다 원래 있던 소스에 추가를 하려고 하는데 조건은 버튼을 누르면 1초후에 불이 들어왔다 1초후 불이 꺼지고 다시 1초후 불이 들어오고 다음 1초후에는 불이 완전히 꺼지는 형식입니다... 굵게 써놓은 부분이 어떤분께서 소스좀 주셔서 추가한 부분이고
빨간 부분에 에러가 걸리네요
수정부탁드립니다
//---------------------------------------------------------------------------
#include <vcl.h> #pragma hdrstop
#include "UMain.h" #include "CNETSDKDef.h" #include "CNETSDK.h"
//--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "COMILEDLib_OCX" #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { int COMILed1[4]; int iIndex;
COMILed1[0] = 1; COMILed1[1] = 0; COMILed1[2] = 1; COMILed1[3] = 0; iIndex = -1;
if( CNETLoadDll()) //응용프로그램의 메모리 공간으로 호출 ShowMessage("CNet LoadDll Error!"); // 음수이면 CNet LoadDll Error! 메세지를 보여라 if( cmnGnLoadDevice(0, &iG_MasteNum) < 0 ) // 장치를 로드하고 장치를 초기화 ShowMessage("CNet Device Load Error!"); // 음수이면 CNet Device Load Error! 메세지를 보여라 ShowMessage(iG_MasteNum ); if( cmnGnStartRingAll() < 0 ) // 링에대한 모든 통신을 시작 ShowMessage("모든 링들의 통신 시작 에러 발생!"); // 음수이면 모든 링들의 통신 시작 에러 발생! 메세지를 보여라 //if( cmnGnStartRing( iG_MasteNum, 0, 0) < 0 ) if( cmnGnStartRing( 0, 0, 0) < 0 ) // 선택된 링에 속한 모듈과 디바이스간의 통신을 시작 ShowMessage("Ring Start Error!"); // 음수이면 Ring Start Error! 메세지를 보여라
//링의 통신 설정 //if( cmnGnSetComSpeed(iG_MasteNum, 0, SPEED_4X ) < 0 ) if( cmnGnSetComSpeed(0, 0, SPEED_4X ) < 0 ) // 선택된 링에 속한 통신 속도를 20MPS로 설정 ShowMessage("Set Speed Error!"); // 음수이면 Set Speed Error! 메세지를 보여라 } //--------------------------------------------------------------------------- void __fastcall TForm1::FormDestroy(TObject *Sender) { cmnGnUnloadDevice(); // 설치된 장치를 해제하고 초기화 CNETUnloadDll(); // 응용 프로그램의 메모리 공간에서 해제 } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { if( cmnGnGetComStatus( 0, 0, &iG_RingState ) < 0) // 선택된 링의 통신 상태를 확인 { COMILed2->State = 0; // 두번째 Led에 통신상태가 음수이면 Label1->Caption = "링 통신 불가능"; // 첫번쨰 리벨에 링통신 불가능 } else { COMILed2->State = 1; // 두번째Led 통신 상태가 사실이면 //RING_DISCONNECTED 0x0 //RING_CONNECTED 0x1 //SLAVE_ERROR 0x2 //RING_STOP 0x3 if( iG_RingState == RING_DISCONNECTED ) { Label1->Caption = "링 통신 단절"; // 음수이면 링통신 단절 } else if( iG_RingState == RING_CONNECTED ) { Label1->Caption = "링 통신 연결"; // 사실이면 링 통신 연결 } else if( iG_RingState == SLAVE_ERROR ) { Label1->Caption = "슬레이브 모듈과의 통신 에러"; // 음수이면 슬레이브 모듈과의 통신에러 } else if( iG_RingState == RING_STOP ) { Label1->Caption = "링의 통신 중단"; // 음수이면 통신 중단 } else { Label1->Caption = "경우가 없구만..."; // 모두 음수이면 경우가 없구만 } } cmnDiGetOne(2, &iG_InState); // 단일 디지털 입력 채널에 대한 입력 상태 확인 COMILed1->State = iG_InState; if( iG_InState ) cmnDoPutOne(2, 1); // 단일 디지털 출력 상태를 설정 채널2, 출력 1 else cmnDoPutOne(2, 0); // 단일 디지털 출력 상태를 설정 채널2, 츨력 0
if(iIndex > -1) { else if(COMILed1[iIndex] == 1) { COMILed1On(); } else if(COMILed1[iIndex] == 0){ COMILed1Off(); } iIndex++; if(iIndex == 4) iIndex = -1; }
//--------------------------------------------------------------------------- void __fastcall TForm1::BitBtn1Click(TObject *Sender) { cmnDoGetOne(2, &iG_OutState); // 단일 디지털 출력 상태를 확인 if( iG_OutState ) cmnDoPutOne(2, 0); // 단일 디지털 출력 상태를 설정 채널2, 츨력 0 else cmnDoPutOne(2, 1); // 단일 디지털 출력 상태를 설정 채널2, 츨력 0 } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { iIndex = 0; } //---------------------------------------------------------------------------
|