RMCLink COM Component RMCLink.WriteFFile Method |
Writes to one or more floating-point (F) registers in the controller. Notice that since all RMC100 registers are integers, WriteLFile should be used instead for that controller type. Use WriteFFile when writing to floating-point RMC70, RMC150, or RMC200 registers. Compare with WriteLFile.
Visual Basic (Declaration) |
Sub WriteFFile ( _ file As Long, _ element As Long, _ count As Long, _ data As Variant _ ) |
Visual Basic (Usage) |
Dim instance As RMCLink Dim file As Long Dim element As Long Dim count As Long Dim data As Variant
instance.WriteFFile(file, element, count, data) |
file
File number of the first register to write to. See the RMCLink Register Reference for details.
element
Element number of the first register to write to. See the RMCLink Register Reference for details.
count
The number of registers to write.
data
The data to write to the controller. The following data types are supported:
A single value of Single or Double data type (not an array)
Single-dimensional array of Single or Double data type elements
Two-dimensional array of 1xN or Nx1 Single or Double data type elements
Notice that all RMC100 registers are integers. Therefore, using this method to write data to the RMC100 will simply round the values to integers before writing them to the controller.
For details on integer (L) and floating-point (F) registers and how to read from and write to both, see RMC100 Register Data Types or RMC70, RMC150, and RMC200 Register Data Types.
This method is synchronous, which means that it will not return until the write is completed, which may take several seconds. If this method is called on the main thread, then the application will likely be unresponsive until this method completes. For applications where this is not acceptable, this and other synchronous methods should be called from a worker thread, and may use the CancelRequest method to cancel an in progress request.
Error Code |
Description |
rmcEOutOfMemory = 5 |
Out of memory. |
rmcEInvalidArg = 7 |
One of the file, element, count, or data parameters are out of range. |
rmcEDisconnecting = 1002 |
Link is being disconnected by another thread. |
rmcEBadType = 1003 |
Invalid type passed in for write data parameter. |
rmcEBadLength = 1004 |
Array length of write data does not match count parameter. |
rmcEDisconnected = 1005 |
The link has not been connected. |
rmcESocketInternal = 1008 |
Internal socket error. |
rmcECancelled = 1010 |
Operation cancelled by call to CancelRequest. |
rmcETimeout = 1011 |
Operation timed out. |
rmcESocketGracefullyClosed = 1014 |
TCP/IP connection closed by remote device. |
rmcESocketReadError = 1015 |
Connection error while waiting for response from the remote device. |
rmcESocketInvReadLen = 1016 |
Connection error while waiting for response from the remote device. |
rmcESocketWriteError = 1017 |
Connection error while sending request to the remote device. |
rmcESocketInvWriteLen = 1018 |
Connection error while sending request to the remote device. |
rmcESerialIOE = 1021 |
Serial IOE error. |
rmcESerialFramingError = 1022 |
Serial framing error. |
rmcESerialBreak = 1023 |
Serial Break error. |
rmcESerialOverrun = 1024 |
Serial overrun. |
rmcESerialRxOverrun = 1025 |
Serial receive overrun. |
rmcESerialParityError = 1026 |
Serial parity error. |
rmcESerialTxFull = 1027 |
Serial transmitter full. |
rmcEConnectionBroken = 1028 |
Connection broken. |
rmcEPartialWrite = 1029 |
Unable to send full request to the remote device. |
rmcEReadOnly = 1030 |
Attempt to write to read-only registers. |
rmcEBadAddress = 1032 |
Attempt to write beyond the end of a file. |
rmcEUSBInternal1 = 1051 |
Internal USB driver error. |
rmcEUSBOperationAborted = 1053 |
Unsuccessful transfer of data between the PC and the controller. Ensure that the physical connection between the PC and controller is still intact. |
rmcEUSBDisconnected = 1054 |
The controller appears to have been disconnected from the USB port. Ensure that the physical connection between the PC and controller is still intact. |
The following code example illustrates the use of the WriteFFile method.
Visual Basic 6 / VBA |
Option Explicit
Public Sub Sample()
' Declare and create the RMCLinkServer COM object.
Dim srv As New RMCLinkServer
' Use our RMCLinkServer to create the correct type of RMCLink object.
Dim rmc As RMCLink
Set rmc = srv.CreateEthernetLink(dtRMC70, "192.168.0.22")
' Establish the connection.
rmc.Connect
' Issue a Move Absolute command to Axis 0 (registers F16:0-5).
Dim data(5) As Single
data(0) = 20 ' Move Absolute (20)
data(1) = 10.5 ' Requested Position (10.5 in)
data(2) = 12.5 ' Requested Speed (12.5 in/s)
data(3) = 100 ' Acceleration Rate (100 in/s/s)
data(4) = 100 ' Deceleration Rate (100 in/s/s)
data(5) = 0 ' Direction (0=nearest)
rmc.WriteFFile fn70CommandArea, 0, rmc70CmdRegsPerAxis, data
' Close the connection.
rmc.Disconnect
End Sub
|
VBScript |
Option Explicit
Dim srv, rmc
' First we need to create the RMCLinkServer COM object.
Set srv = CreateObject("RMCLink.RMCLinkServer")
' Use our RMCLinkServer to create the correct type of RMCLink object.
' NOTE: VBScript does not support enumerations, so we use the literal value (dtRMC70=2).
Set rmc = srv.CreateEthernetLink(2, "192.168.0.22")
' Establish the connection.
rmc.Connect
' Issue a Move Absolute command to Axis 0 (registers F16:0-5).
Dim data(5)
data(0) = 20 ' Move Absolute (20)
data(1) = 10.5 ' Requested Position (10.5 in)
data(2) = 12.5 ' Requested Speed (12.5 in/s)
data(3) = 100 ' Acceleration Rate (100 in/s/s)
data(4) = 100 ' Deceleration Rate (100 in/s/s)
data(5) = 0 ' Direction (0=nearest)
rmc.WriteFFile 16,0,6,data
' Close the connection.
rmc.Disconnect
|
JScript |
// First we need to create the RMCLinkServer COM object.
var srv = new ActiveXObject("RMCLink.RMCLinkServer");
// Use our RMCLinkServer to create the correct type of RMCLink object.
// NOTE: JScript does not support enumerations, so we use the literal value (dtRMC70=2).
var rmc = srv.CreateEthernetLink(2, "192.168.0.22");
// Establish the connection.
rmc.Connect();
// Issue a Move Absolute command to Axis 0 (registers F16:0-5).
var data = new Array(6);
data[0] = 20; // Move Absolute (20)
data[1] = 10.5; // Requested Position (10.5 in)
data[2] = 12.5; // Requested Speed (12.5 in/s)
data[3] = 100; // Acceleration Rate (100 in/s/s)
data[4] = 100; // Deceleration Rate (100 in/s/s)
data[5] = 0; // Direction (0=nearest)
rmc.WriteFFile(16,0,6,data);
// Close the connection.
rmc.Disconnect();
|
See Also
RMCLink Class | RMCLink COM Component | WriteLFile
Copyright (c) 2024 Delta Computer Systems, Inc. dba Delta Motion