|
rllib
1
|
#include <rlsiemenstcpclient.h>


Public Types | |
| enum | ORG { ORG_DB = 1, ORG_M = 2, ORG_E = 3, ORG_A = 4, ORG_PEPA = 5, ORG_Z = 6, ORG_T = 7 } |
Public Member Functions | |
| rlSiemensTCPClient (const char *mbxname, const char *shmname, int shmsize, int have_to_swap=1) | |
| virtual | ~rlSiemensTCPClient () |
| int | write (int slave, int org, int dbnum, int start, int len, const unsigned char *buf, int function) |
| int | writeBit (int slave, int org, int dbnum, int start, int offset, int len, const unsigned char *buf) |
| int | writeByte (int slave, int org, int dbnum, int start, int len, const unsigned char *val) |
| int | writeFloat (int slave, int org, int dbnum, int start, int len, const float *val) |
| int | writeDword (int slave, int org, int dbnum, int start, int len, const int *val) |
| int | writeShort (int slave, int org, int dbnum, int start, int len, const short *val) |
| int | writeUDword (int slave, int org, int dbnum, int start, int len, const unsigned int *val) |
| int | writeUShort (int slave, int org, int dbnum, int start, int len, const unsigned short *val) |
| int | read (int offset, int len) |
| float | Float (int index) |
| int | Dword (int index) |
| int | Short (int index) |
| unsigned int | UDword (int index) |
| unsigned int | UShort (int index) |
Public Attributes | |
| unsigned char | buf [2048] |
Private Attributes | |
| int | have_to_swap |
This class is for data acquisition within pvserver according to the pvbrowser principle. The corresponding daemon is generated by pvdevelop. It communicates by the means of a shared memory and a mailbox.
Definition at line 33 of file rlsiemenstcpclient.h.
| rlSiemensTCPClient::rlSiemensTCPClient | ( | const char * | mbxname, |
| const char * | shmname, | ||
| int | shmsize, | ||
| int | have_to_swap = 1 |
||
| ) |
Definition at line 35 of file rlsiemenstcpclient.cpp.
:rlMailbox(mbxname), rlSharedMemory(shmname, shmsize) { have_to_swap = _have_to_swap; }
| rlSiemensTCPClient::~rlSiemensTCPClient | ( | ) | [virtual] |
Definition at line 41 of file rlsiemenstcpclient.cpp.
{
}
| int rlSiemensTCPClient::Dword | ( | int | index | ) |
Definition at line 285 of file rlsiemenstcpclient.cpp.
{
SWAP swap;
if(index*4+4 > (int) BUFSIZE) return 0;
if(have_to_swap == 1)
{
swap.b[0] = buf[4*index+3];
swap.b[1] = buf[4*index+2];
swap.b[2] = buf[4*index+1];
swap.b[3] = buf[4*index];
}
else
{
swap.b[0] = buf[4*index];
swap.b[1] = buf[4*index+1];
swap.b[2] = buf[4*index+2];
swap.b[3] = buf[4*index+3];
}
return swap.i;
}
| float rlSiemensTCPClient::Float | ( | int | index | ) |
Definition at line 264 of file rlsiemenstcpclient.cpp.
{
SWAP swap;
if(index*4+4 > (int) BUFSIZE) return 0.0f;
if(have_to_swap == 1)
{
swap.b[0] = buf[4*index+3];
swap.b[1] = buf[4*index+2];
swap.b[2] = buf[4*index+1];
swap.b[3] = buf[4*index];
}
else
{
swap.b[0] = buf[4*index];
swap.b[1] = buf[4*index+1];
swap.b[2] = buf[4*index+2];
swap.b[3] = buf[4*index+3];
}
return swap.f;
}
| int rlSiemensTCPClient::read | ( | int | offset, |
| int | len | ||
| ) |
Definition at line 259 of file rlsiemenstcpclient.cpp.
{
return rlSharedMemory::read(offset,buf,len);
}
| int rlSiemensTCPClient::Short | ( | int | index | ) |
| unsigned int rlSiemensTCPClient::UDword | ( | int | index | ) |
Definition at line 323 of file rlsiemenstcpclient.cpp.
{
SWAP swap;
if(index*4+4 > (int) BUFSIZE) return 0;
if(have_to_swap == 1)
{
swap.b[0] = buf[4*index+3];
swap.b[1] = buf[4*index+2];
swap.b[2] = buf[4*index+1];
swap.b[3] = buf[4*index];
}
else
{
swap.b[0] = buf[4*index];
swap.b[1] = buf[4*index+1];
swap.b[2] = buf[4*index+2];
swap.b[3] = buf[4*index+3];
}
return swap.ui;
}
| unsigned int rlSiemensTCPClient::UShort | ( | int | index | ) |
| int rlSiemensTCPClient::write | ( | int | slave, |
| int | org, | ||
| int | dbnum, | ||
| int | start, | ||
| int | len, | ||
| const unsigned char * | buf, | ||
| int | function = rlSiemensTCP::WriteByte |
||
| ) |
Definition at line 45 of file rlsiemenstcpclient.cpp.
{
unsigned char buf[BUFSIZE+8];
int len_byte;
if(len <= 0) return -1;
if(slave < 0) return -1;
if(slave >= 256) return -1;
len_byte = len;
buf[0] = slave;
buf[1] = org;
buf[2] = dbnr / 256;
buf[3] = dbnr & 0x0ff;
buf[4] = start_adr / 256;
buf[5] = start_adr & 0x0ff;
buf[6] = len / 256;
buf[7] = len & 0x0ff;
buf[8] = function;
memcpy(&buf[9],inbuf,len_byte);
rlMailbox::write((void *) buf, len_byte + 9);
return 0;
}
| int rlSiemensTCPClient::writeBit | ( | int | slave, |
| int | org, | ||
| int | dbnum, | ||
| int | start, | ||
| int | offset, | ||
| int | len, | ||
| const unsigned char * | buf | ||
| ) |
Definition at line 68 of file rlsiemenstcpclient.cpp.
{
if(len < 0) return -1;
if(len > BUFSIZE) return -1;
if(slave < 0) return -1;
if(slave > 255) return -1;
int start_adr = start * 8 + offset;
return write(slave,org,dbnum,start_adr,len,val,rlSiemensTCP::WriteBit);
}
| int rlSiemensTCPClient::writeByte | ( | int | slave, |
| int | org, | ||
| int | dbnum, | ||
| int | start, | ||
| int | len, | ||
| const unsigned char * | val | ||
| ) |
Definition at line 78 of file rlsiemenstcpclient.cpp.
{
if(len < 0) return -1;
if(len > BUFSIZE) return -1;
if(slave < 0) return -1;
if(slave > 255) return -1;
return write(slave,org,dbnum,start,len,val,rlSiemensTCP::WriteByte);
}
| int rlSiemensTCPClient::writeDword | ( | int | slave, |
| int | org, | ||
| int | dbnum, | ||
| int | start, | ||
| int | len, | ||
| const int * | val | ||
| ) |
Definition at line 123 of file rlsiemenstcpclient.cpp.
{
SWAP swap;
int i,len_byte;
unsigned char buf[BUFSIZE];
len_byte = len * 4;
if(len_byte < 0) return -1;
if(len_byte > BUFSIZE) return -1;
if(slave < 0) return -1;
if(slave > 255) return -1;
if(have_to_swap == 1)
{
for(i=0; i<len_byte; i+=4)
{
swap.i = val[i/4];
buf[i+3] = swap.b[0];
buf[i+2] = swap.b[1];
buf[i+1] = swap.b[2];
buf[i] = swap.b[3];
}
}
else
{
for(i=0; i<len_byte; i+=4)
{
swap.i = val[i/4];
buf[i] = swap.b[0];
buf[i+1] = swap.b[1];
buf[i+2] = swap.b[2];
buf[i+3] = swap.b[3];
}
}
return write(slave,org,dbnum,start,len_byte,buf,rlSiemensTCP::WriteByte);
}
| int rlSiemensTCPClient::writeFloat | ( | int | slave, |
| int | org, | ||
| int | dbnum, | ||
| int | start, | ||
| int | len, | ||
| const float * | val | ||
| ) |
Definition at line 87 of file rlsiemenstcpclient.cpp.
{
SWAP swap;
int i,len_byte;
unsigned char buf[BUFSIZE];
len_byte = len * 4;
if(len_byte < 0) return -1;
if(len_byte > BUFSIZE) return -1;
if(slave < 0) return -1;
if(slave > 255) return -1;
if(have_to_swap == 1)
{
for(i=0; i<len_byte; i+=4)
{
swap.f = val[i/4];
buf[i+3] = swap.b[0];
buf[i+2] = swap.b[1];
buf[i+1] = swap.b[2];
buf[i] = swap.b[3];
}
}
else
{
for(i=0; i<len_byte; i+=4)
{
swap.f = val[i/4];
buf[i] = swap.b[0];
buf[i+1] = swap.b[1];
buf[i+2] = swap.b[2];
buf[i+3] = swap.b[3];
}
}
return write(slave,org,dbnum,start,len_byte,buf,rlSiemensTCP::WriteByte);
}
| int rlSiemensTCPClient::writeShort | ( | int | slave, |
| int | org, | ||
| int | dbnum, | ||
| int | start, | ||
| int | len, | ||
| const short * | val | ||
| ) |
Definition at line 159 of file rlsiemenstcpclient.cpp.
{
SWAP swap;
int i,len_byte;
unsigned char buf[BUFSIZE];
len_byte = len * 2;
if(len_byte < 0) return -1;
if(len_byte > BUFSIZE) return -1;
if(slave < 0) return -1;
if(slave > 255) return -1;
if(have_to_swap == 1)
{
for(i=0; i<len_byte; i+=2)
{
swap.s[0] = val[i/2];
buf[i+1] = swap.b[0];
buf[i] = swap.b[1];
}
}
else
{
for(i=0; i<len_byte; i+=2)
{
swap.s[0] = val[i/2];
buf[i] = swap.b[0];
buf[i+1] = swap.b[1];
}
}
return write(slave,org,dbnum,start,len_byte,buf,rlSiemensTCP::WriteByte);
}
| int rlSiemensTCPClient::writeUDword | ( | int | slave, |
| int | org, | ||
| int | dbnum, | ||
| int | start, | ||
| int | len, | ||
| const unsigned int * | val | ||
| ) |
Definition at line 191 of file rlsiemenstcpclient.cpp.
{
SWAP swap;
int i,len_byte;
unsigned char buf[BUFSIZE];
len_byte = len * 4;
if(len_byte < 0) return -1;
if(len_byte > BUFSIZE) return -1;
if(slave < 0) return -1;
if(slave > 255) return -1;
if(have_to_swap == 1)
{
for(i=0; i<len_byte; i+=4)
{
swap.ui = val[i/4];
buf[i+3] = swap.b[0];
buf[i+2] = swap.b[1];
buf[i+1] = swap.b[2];
buf[i] = swap.b[3];
}
}
else
{
for(i=0; i<len_byte; i+=4)
{
swap.ui = val[i/4];
buf[i] = swap.b[0];
buf[i+1] = swap.b[1];
buf[i+2] = swap.b[2];
buf[i+3] = swap.b[3];
}
}
return write(slave,org,dbnum,start,len_byte,buf,rlSiemensTCP::WriteByte);
}
| int rlSiemensTCPClient::writeUShort | ( | int | slave, |
| int | org, | ||
| int | dbnum, | ||
| int | start, | ||
| int | len, | ||
| const unsigned short * | val | ||
| ) |
Definition at line 227 of file rlsiemenstcpclient.cpp.
{
SWAP swap;
int i,len_byte;
unsigned char buf[BUFSIZE];
len_byte = len * 2;
if(len_byte < 0) return -1;
if(len_byte > BUFSIZE) return -1;
if(slave < 0) return -1;
if(slave > 255) return -1;
if(have_to_swap == 1)
{
for(i=0; i<len_byte; i+=2)
{
swap.us[0] = val[i/2];
buf[i+1] = swap.b[0];
buf[i] = swap.b[1];
}
}
else
{
for(i=0; i<len_byte; i+=2)
{
swap.us[0] = val[i/2];
buf[i] = swap.b[0];
buf[i+1] = swap.b[1];
}
}
return write(slave,org,dbnum,start,len_byte,buf,rlSiemensTCP::WriteByte);
}
| unsigned char rlSiemensTCPClient::buf[2048] |
Definition at line 62 of file rlsiemenstcpclient.h.
int rlSiemensTCPClient::have_to_swap [private] |
Definition at line 64 of file rlsiemenstcpclient.h.
1.7.5.1