4. Examples

4.1. CoeSdoUpload

def CoeSdoUploadExample(self):
    wSlaveAddress = 1012 # slave with station address 1012
    wObIndex = 0x1018 # object index 0x1018
    byObSubIndex = 1 # subindex 1 (Vendor ID, which is from type UDINT with 4 bytes)
    dwDataLen = 4 # 4 bytes
    pbyData = [0] * dwDataLen
    out_dwOutDataLen = CEcWrapperPythonOutParam()
    dwTimeout = 5000 # timeout 5s
    dwFlags = EMailBoxFlags.NONE_ # no complete access

    dwSlaveId = self.m_oEcWrapper.GetSlaveId(wSlaveAddress)
    eRes = self.m_oEcWrapper.CoeSdoUpload(dwSlaveId, wObIndex, byObSubIndex, pbyData, dwDataLen, out_dwOutDataLen, dwTimeout, dwFlags)
    if eRes != ECError.EC_NOERROR:
        self.LogMasterError("CoeSdoUpload failed: ", eRes)
        return

    dwOutDataLen = out_dwOutDataLen.value
    szValue = CEcWrapperPython.ConvValueToString(DN_EC_T_DEFTYPE.ARRAY_OF_BYTE, pbyData)
    self.LogInfo("CoeSdoUpload success: " + szValue) # 02 00 00 00

4.2. CoeSdoDownload

def CoeSdoDownloadExample(self):
    wSlaveAddress = 1012 # slave with station address 1012
    wObIndex = 0x40A2 # object index 0x40A2
    byObSubIndex = 2 # subindex 2
    dwValue = 123 # value 123
    dwTimeout = 5000 # timeout 5s
    dwFlags = EMailBoxFlags.NONE_ # no complete access

    # convert UNSIGNED32 value to 4 bytes
    out_pbyData = CEcWrapperPythonOutParam()
    eRes = CEcWrapperPython.ConvValueToBytes(DN_EC_T_DEFTYPE.UNSIGNED32, dwValue, out_pbyData)
    if eRes != ECError.EC_NOERROR:
        LogMasterError("ConvValueToBytes failed: ", eRes)
        return

    pbyData = out_pbyData.value
    dwSlaveId = self.m_oEcWrapper.GetSlaveId(wSlaveAddress)
    eRes = self.m_oEcWrapper.CoeSdoDownload(dwSlaveId, wObIndex, byObSubIndex, pbyData, len(pbyData), dwTimeout, dwFlags)
    if eRes != ECError.EC_NOERROR:
        self.LogMasterError("CoeSdoDownload failed: ", eRes)
        return

    self.LogInfo("CoeSdoDownload success")

4.3. ReadSlaveEEPRom

def ReadSlaveEEPRomExample(self):
    bFixedAddressing = True # enable fixed addressing
    wSlaveAddress = 1006 # slave with station address 1006
    wEEPRomStartOffset = 0x0 # offset 0
    dwReadLen = 10 # 10 bytes
    pwReadData = [0] * dwReadLen
    out_dwNumOutData = CEcWrapperPythonOutParam()
    dwTimeout = 2000 # timeout 2s

    eRes = self.m_oEcWrapper.ReadSlaveEEPRom(bFixedAddressing, wSlaveAddress, wEEPRomStartOffset, pwReadData, dwReadLen, out_dwNumOutData, dwTimeout)
    if eRes != ECError.EC_NOERROR:
        self.LogMasterError("ReadSlaveEEPRom failed: ", eRes)
        return

    dwNumOutDat = out_dwNumOutData.value
    szValue = CEcWrapperPython.ConvValueToString(DN_EC_T_DEFTYPE.ARRAY_OF_BYTE, pwReadData)
    self.LogInfo("ReadSlaveEEPRom success: " + szValue)

4.4. FoeFileDownload

def FoeFileDownloadExample(self):
    wSlaveAddress = 1012 # slave with station address 1012
    szFileName = "foe.txt" # filename of file in slave
    pbyData = [ 1, 2, 3, 4 ] # 4 bytes
    dwPassword = 0  # password is 0
    dwTimeout = 2000 # timeout 2s

    dwSlaveId = self.m_oEcWrapper.GetSlaveId(wSlaveAddress)
    eRes = self.m_oEcWrapper.FoeFileDownload(dwSlaveId, szFileName, len(szFileName), pbyData, len(pbyData), dwPassword, dwTimeout)
    if eRes != ECError.EC_NOERROR:
        self.LogMasterError("FoeFileDownload failed: ", eRes)
        return

    self.LogInfo("FoeFileDownload success")