RMCLink C++ Wrapper Class CRMCLink::ReadBitField Method |
Reads a bit field (range of bits) from an integer (L) register in the RMC, and converts the binary value of the bits to a long integer. ReadBitField is typically used to read the value of a multiple-bit parameter in the RMC70, RMC150, or RMC200.
C++ |
HRESULT ReadBitField( UINT file, UINT element, UINT fieldStart, UINT fieldLen, UINT& value ); |
file
File number of the register with the bit to be read. See the RMCLink Register Reference for details.
element
Element number of the register with the bit to be read. See the RMCLink Register Reference for details.
fieldStart
Number of the least significant bit (0-31) of the register's bit field. Bits are numbered from least to most significant.
fieldLen
Total number of bits in the bit field (1-32).
value
The value of the bit field is returned in this parameter.
Returns S_OK on success. Otherwise, an error code is returned. Possible error codes are listed below.
This method is synchronous, which means that it will not return until the read 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.
Member Name |
Description |
E_OUTOFMEMORY |
Out of memory. |
E_INVALIDARG |
One of the file, element, fieldStart, or fieldLen parameters are out of range. |
RMCLINK_E_DISCONNECTING |
Link is being disconnected by another thread. |
RMCLINK_E_DISCONNECTED |
The link has not been connected. |
RMCLINK_E_SOCK_INTERNAL |
Internal socket error. |
RMCLINK_E_CANCELLED |
Operation cancelled by call to CancelRequest. |
RMCLINK_E_TIMEOUT |
Operation timed out. |
RMCLINK_E_SOCK_GRACEFUL_CLOSE |
TCP/IP connection closed by remote device. |
RMCLINK_E_SOCK_ERROR_RD |
Connection error while waiting for response from the remote device. |
RMCLINK_E_SOCK_INV_RD_LEN |
Connection error while waiting for response from the remote device. |
RMCLINK_E_SOCK_ERROR_WR |
Connection error while sending request to the remote device. |
RMCLINK_E_SOCK_INV_WR_LEN |
Connection error while sending request to the remote device. |
RMCLINK_E_CE_IOE |
Serial IOE error. |
RMCLINK_E_CE_FRAME |
Serial framing error. |
RMCLINK_E_CE_BREAK |
Serial Break error. |
RMCLINK_E_CE_OVERRUN |
Serial overrun. |
RMCLINK_E_CE_RXOVER |
Serial receive overrun. |
RMCLINK_E_CE_RXPARITY |
Serial parity error. |
RMCLINK_E_CE_TXFULL |
Serial transmitter full. |
RMCLINK_E_CONN_BROKEN |
Connection broken. |
RMCLINK_E_PARTIAL_WRITE |
Unable to send full request to the remote device. |
RMCLINK_E_BAD_ADDRESS |
Attempt to read beyond the end of a file. |
RMCLINK_E_USB_SETTIMEOUT |
Internal USB driver error. |
RMCLINK_E_USB_OP_ABORT |
Unsuccessful transfer of data between the PC and the controller. Ensure that the physical connection between the PC and controller is still intact. |
RMCLINK_E_USB_DISCONNECT |
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 ReadBitField method.
C++ |
#include <windows.h>
#include <stdio.h>
#include "RMCLink.h"
void main()
{
// In order to create COM objects, we must initialize the COM sub-system.
::CoInitialize(0);
// Create a new RMCLink object.
CRMCLink* pRMC = CRMCLink::CreateEthernetLink(CRMCLink::dtRMC70, _T("192.168.0.22"));
if ( pRMC != NULL )
{
// Establish the connection.
HRESULT hr = pRMC->Connect();
if ( SUCCEEDED(hr) )
{
// Read bits 10-11 of L8:0 (Axis 0 Target State bits A and B)
UINT uTargetState;
hr = pRMC->ReadBitField(CRMCLink::fn70StatusAxis0, 0, 10, 2, uTargetState);
if ( SUCCEEDED(hr) )
printf("Target Data = %d\n", uTargetState);
// Close the connection.
pRMC->Disconnect();
}
// Free the RMCLink object we created.
delete pRMC;
}
// Release the COM sub-system.
::CoUninitialize();
}
|
See Also
CRMCLink Class | RMCLink C++ Wrapper Class
Copyright (c) 2024 Delta Computer Systems, Inc. dba Delta Motion