'Writing data with libnodave
'==========================================================================================================================================
Dim Writeresult As Integer
Select Case ParsedResult.DataArea
Case "Q"
Select Case FullDataTypeBP
Case "Bit"
Writeresult = dc.writeBits(libnodave.daveOutputs, ParsedResult.Offset, ParsedResult.BitNumber, 1, BitConverter.GetBytes(libnodave.daveSwapIed_32(CBool(dataToWrite))))
Case "Unsigned Byte", "Signed Byte", "Hex Byte"
Writeresult = dc.writeBytes(libnodave.daveOutputs, 0, ParsedResult.Offset, 1, BitConverter.GetBytes(CInt(dataToWrite)))
Case "Unsigned Word", "Signed Word", "Hex Word"
Writeresult = dc.writeBytes(libnodave.daveOutputs, 0, ParsedResult.Offset, 2, BitConverter.GetBytes(libnodave.daveSwapIed_16(CInt(dataToWrite))))
Case "Unsigned Double Word", "Signed Double Word"
Writeresult = dc.writeBytes(libnodave.daveOutputs, 0, ParsedResult.Offset, 4, BitConverter.GetBytes(libnodave.daveSwapIed_32(CInt(dataToWrite))))
Case Else
Debug.Print("WriteData Q - Case data length - Full Data type not recognised")
End Select
Case "M"
Select Case FullDataTypeBP
Case "Bit"
Writeresult = dc.writeBits(libnodave.daveFlags, ParsedResult.Offset, ParsedResult.BitNumber, 1, BitConverter.GetBytes(libnodave.daveSwapIed_32(CBool(dataToWrite))))
Case "Unsigned Byte", "Signed Byte", "Hex Byte"
Writeresult = dc.writeBytes(libnodave.daveFlags, 0, ParsedResult.Offset, 1, BitConverter.GetBytes(CInt(dataToWrite)))
Case "Unsigned Word", "Signed Word", "Hex Word"
Writeresult = dc.writeBytes(libnodave.daveFlags, 0, ParsedResult.Offset, 2, BitConverter.GetBytes(libnodave.daveSwapIed_16(CInt(dataToWrite))))
Case "Unsigned Double Word", "Signed Double Word"
Writeresult = dc.writeBytes(libnodave.daveFlags, 0, ParsedResult.Offset, 4, BitConverter.GetBytes(libnodave.daveSwapIed_32(CInt(dataToWrite))))
Case "Float"
Writeresult = dc.writeBytes(libnodave.daveFlags, 0, ParsedResult.Offset, 4, BitConverter.GetBytes(libnodave.toPLCfloat(CSng(dataToWrite))))
Case Else
Debug.Print("WriteData M - Get data length - Full Data type not recognised")
End Select
Case "V", "D" ' V is for S7-200, D id for the rest of the PLC range that use BataBase memory
Select Case FullDataTypeBP
Case "Unsigned Byte", "Signed Byte", "Hex Byte"
Writeresult = dc.writeBytes(libnodave.daveDB, ParsedResult.DBDataBase, ParsedResult.Offset, 1, BitConverter.GetBytes(CInt(dataToWrite)))
Case "Unsigned Word", "Signed Word", "Hex Word"
Writeresult = dc.writeBytes(libnodave.daveDB, ParsedResult.DBDataBase, ParsedResult.Offset, 2, BitConverter.GetBytes(libnodave.daveSwapIed_16(CInt(dataToWrite))))
Case "Unsigned Double Word", "Signed Double Word"
Writeresult = dc.writeBytes(libnodave.daveDB, ParsedResult.DBDataBase, ParsedResult.Offset, 4, BitConverter.GetBytes(libnodave.daveSwapIed_32(CInt(dataToWrite))))
Case "Float"
Writeresult = dc.writeBytes(libnodave.daveDB, ParsedResult.DBDataBase, ParsedResult.Offset, 4, BitConverter.GetBytes(libnodave.toPLCfloat(CSng(dataToWrite))))
Case Else
Debug.Print("WriteData V/DB- Case data length - Full Data type not recognised")
End Select
Case "C" ' TODO
If m_SiemensCommType = "PPI S7200" Then
Writeresult = dc.writeBytes(libnodave.daveCounter200, 0, ParsedResult.Offset, ParsedResult.BytesPerElements, buf)
Else
Writeresult = dc.writeBytes(libnodave.daveCounter, 0, ParsedResult.Offset, ParsedResult.BytesPerElements, buf)
End If
Case "T" 'TODO
If m_SiemensCommType = "PPI S7200" Then
Writeresult = dc.writeBytes(libnodave.daveTimer200, 0, ParsedResult.Offset, ParsedResult.BytesPerElements, buf)
Else
Writeresult = dc.writeBytes(libnodave.daveTimer, 0, ParsedResult.Offset, ParsedResult.BytesPerElements, buf)
End If
Case "I"
Debug.Print("Can't write to Inputs")
Case Else
Debug.Print("WriteData - Data Area type not recognised")
End Select
Debug.Print("Return from Write = {0:d}", result)