======Check Reverse Connection======
InPort / OutPort 가 반대로 연결된 슬레이브의 수를 확인한다.
====Code====
===C#===
using ec = ComiLib.EtherCAT.SafeNativeMethods;
///
/// 슬레이브의 Inport / Outport가 반대가 삽입된 모듈을 검색한다.
///
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));
}
}
}
///
/// 역삽입 검출 기능을 사용할 수 있는지 확인한다.
/// DLL : 1.5.3.2 ( FW : 1.92 / WDM : 1.5.0.6) 이상의 버전에서 사용 가능
///
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++===