CAutoModbus Class Members
class CAutoModbus : public CModbus
CreateInstance - Create an automation object inside Modbus COM Server.
Connect - Opens serial port or update com port parameters.
TxRxMessage virtual CModbus implementation. Sends and receives a message from a slave.
ErrorMessage virtual CModbus implementation.Return string description of an error code.
ByteSize - Specifies the number of bits in the bytes transmitted and received.
BaudRate - Specifies the baud rate
ComPort - Comm serial port
FlowControl - Specifies flow control.
Parity - Specifies the parity scheme to be used.
SilentInterval - silent interval marking the begin and the end of message in ms.
StopBits - number of stop bits.
Timeout - message timeout in ms.
TransmissionMode - Specifies RTU or ASCII transmission mode.
HRESULT CreateInstance(LPCSTR szMachine,LPCSTR szConnectionName);
Return Value
S_OK if function succeeds or HRESULT error code returned by win api functions.
Parameters
szMachine - name of the machine to be used, if szMachine is an empty string the function will try to create the object on the same machine, common COM automation.
szConnectionName - A string that specifies the connection's name.
Remarks
The machine name is used in when filling COSERVERINFO structure, no security features of DCOM is used. Maybe you have to enhance this function if you need to implement security features. See CoCreateInstanceEx in VC++ help for more information about creating remote objects.
The connection name can be any text , but you can only share connections among apps with the same connection name. Use , for instance , szConnectionName = "com2" for opening com2 , "com3" for opening com3 and so on.
example:
HRESULT hRes;
CAutoModbus autoModbus;
//You need to call CoInitializeEx in any thread that use
automation
// this include the main thread.
hRes = ::CoInitializeEx(NULL,COINIT_MULTITHREADED);
if FAILED(hRes) {
goto ExitError;
}
//Create an object on machine with IP Address 200.251.186.30.
// If you are using win95 the server must be running before clients on other machines can create
//objects instances.
if
FAILED(autoModbus.CreateInstance("200.251.186.30","com2"))
{
AfxMessageBox(_T("Error creating automation object "));
goto ExitError;
}
autoModbus.ComPort(2);
autoModbus.StopBits(TWOSTOPBITS);
autoModbus.ByteSize(8);
autoModbus.FlowControl(mbFC_NONE);
autoModbus.Timeout(300);
autoModbus.SilentInterval(20);
autoModbus.TransmissionMode(mbMODE_RTU);
// this function that actually try to open a comm port.
if (!autoModbus.Connect()) {
goto ExitError;
}
pModbus= (CModbus*)&autoModbus;
//preset register 40002 to 03 in slave device 17
wError = pModbus->PresetSingleRegister(17,1,3)
;
if (CModbus::ERR_OK!= wError) {
AfxMessageBox( pModbus->ErrorMessage(wError));
}
ExitError:
::CoUninitialize();
See also: StopBits , ByteSize , FlowControl , Timeout , SilentInterval , TransmissionMode.
BOOL Connect();
Return Value
TRUE if function succeeds or FALSE if fails.
Remarks
See also: CreateInstance
void ByteSize(WORD wSize);
WORD ByteSize();
Remarks
See also: CreateInstance
DWORD BaudRate(); //actual baudrate
value
void BaudRate(DWORD dwBaudRate);
Remarks
CBR_110 | CBR_19200 |
CBR_300 | CBR_38400 |
CBR_600 | CBR_56000 |
CBR_1200 | CBR_57600 |
CBR_2400 | CBR_115200 |
CBR_4800 | CBR_128000 |
CBR_9600 | CBR_256000 |
CBR_14400 |
See also: CreateInstance
BYTE ComPort();
void ComPort(BYTE byComPort);
Remarks
See also: CreateInstance
BYTE FlowControl();
void FlowControl(BYTE byFlowControl);
Remarks
mbFC_NONE | No Flow control |
mbFC_DTRDSR | Hardware Flow Control DTR/CTS |
mbFC_RTSCTS | Hardware Flow Control DTR/CTS |
mbFC_XONXOFF | Software Flow Control XON/XOFF |
If you use , for instance , software and hardware flow control set this member as mbFC_RTSCTS+mbFC_XONXOFF.
See also: CreateInstance
BYTE Parity();
void Parity(BYTE byParity);
Remarks
Value | Meaning |
---|---|
EVENPARITY | Even |
MARKPARITY | Mark |
NOPARITY | No parity |
ODDPARITY | Odd |
SPACEPARITY | Space |
See also: CreateInstance
DWORD SilentInterval() const;
void SilentInterval(DWORD dwSilentInterval);
Remarks
Silent interval marking the begin and the end of a message in ms.
When using ASCII set silent interval 500 or 1000 ms.
See also: CreateInstance
BYTE StopBits();
void StopBits(BYTE byStopBits);
Remarks
Specifies the number of stop bits to be used.
Value | Meaning |
---|---|
ONESTOPBIT | 1 stop bit |
ONE5STOPBITS | 1.5 stop bits |
TWOSTOPBITS | 2 stop bits |
Use 1(ONESTOPBIT) stop bit if parity is used and 2(TWOSTOPBITS) bits if no parity.
See also: CreateInstance
DWORD Timeout() const;
void Timeout(DWORD dwTimeout);
Remarks
Time-out period for slave response in ms.
See also: CreateInstance
WORD TransmissionMode();
void TransmissionMode(WORD wMode);
Remarks
Modbus use either of two transmission modes: ASCII or RTU. This member can be one of the values below:
mbMODE_RTU | RTU transmission mode |
mbMODE_ASCII | ASCII transmission mode |
See also: CreateInstance