Check Reverse Connection

C#

using ec = ComiLib.EtherCAT.SafeNativeMethods;

/// <summary>
/// 슬레이브의 Inport / Outport가 반대가 삽입된 모듈을 검색한다.      
/// </summary>
private void CheckReveseConnection()
{
	if (!CanCheckReverseConnection())
		return;
	
	// 역삽입된 슬레이브의 수를 확인한다.
	int scanSlaveCount = 0;
	int reverseConnectionCount = ec.ecNet_CheckReverseConnections(netID, ref scanSlaveCount, ref errorCode);

	// 정의된 슬레이브 수가 있다면, 스캔된 슬레이브의 수와 비교한다.
	//if (definedSlaveCount != scanSlaveCount)
	//{
	//    // 두 변수의 차이는 연결되지 않은 슬레이브의 수이다.
	//    AddLog(string.Format("Disconnected Slave Count = {0}", definedSlaveCount - scanSlaveCount));
	//}

	if (reverseConnectionCount == 0)
	{
		AddLog(string.Format("ReverseConnection is nothing."));
		return;
	}                
	else
	{
		AddLog(string.Format("ReverseConnectionCount = {0}", reverseConnectionCount));

		bool isReverseConnected = false;
		for (ushort i = 0; i < scanSlaveCount; i++)
		{
			//슬레이브별로 역삽입 여부를 확인한다.
			isReverseConnected = ec.ecSlv_IsReverseConnected_A(netID, i, ref errorCode);

			if (isReverseConnected)
				AddLog(string.Format("Check SlaveIndex {0} : ReverseConnected", i));
		}
	}
}

/// <summary>
/// 역삽입 검출 기능을 사용할 수 있는지 확인한다.
/// DLL : 1.5.3.2 ( FW : 1.92 / WDM : 1.5.0.6)  이상의 버전에서 사용 가능
/// </summary>        
private bool CanCheckReverseConnection()
{
	ec.TEcFileVerInfo_SDK sdkInfo = new ec.TEcFileVerInfo_SDK();
	ec.TEcFileVerInfo_WDM driverInfo = new ec.TEcFileVerInfo_WDM();
	ec.TEcFileVerInfo_FW fwInfo = new ec.TEcFileVerInfo_FW();

	bool isSuccess = ec.ecNet_GetVerInfo(netID, ref sdkInfo, ref driverInfo, ref fwInfo, ref errorCode);
	string sdkVer = string.Format("{0}{1}{2}{3}", sdkInfo.CurVer.MajorVer, sdkInfo.CurVer.MinorVer, sdkInfo.CurVer.BuildNo, sdkInfo.CurVer.RevNo);
	int curVer = int.Parse(sdkVer);

	if (curVer < 1532)
	{
		AddLog("CheckReverseConnection : Not Supported version");
		return false;
	}

	return true;
}

C++