Commit ec97ede2 authored by Pavel Vainerman's avatar Pavel Vainerman

сделал ключ для управления "постоянством" соединения у "тестера"

плюс мелкие правки
parent a4868787
...@@ -199,7 +199,6 @@ int main( int argc, char **argv ) ...@@ -199,7 +199,6 @@ int main( int argc, char **argv )
mb.connect(ia,port); mb.connect(ia,port);
mb.setForceDisconnect(!persist); mb.setForceDisconnect(!persist);
mb.setForceDisconnect(true);
if( verb ) if( verb )
cout << "connection: " << (mb.isConnection() ? "YES" : "NO") << endl; cout << "connection: " << (mb.isConnection() ? "YES" : "NO") << endl;
......
...@@ -27,11 +27,12 @@ class ModbusTCPMaster: ...@@ -27,11 +27,12 @@ class ModbusTCPMaster:
{ {
force_disconnect = s; force_disconnect = s;
} }
protected:
void reconnect(); void reconnect();
void cleanInputStream(); void cleanInputStream();
protected:
virtual int getNextData( unsigned char* buf, int len ); virtual int getNextData( unsigned char* buf, int len );
virtual void setChannelTimeout( timeout_t msec ); virtual void setChannelTimeout( timeout_t msec );
virtual ModbusRTU::mbErrCode sendData( unsigned char* buf, int len ); virtual ModbusRTU::mbErrCode sendData( unsigned char* buf, int len );
...@@ -40,7 +41,7 @@ class ModbusTCPMaster: ...@@ -40,7 +41,7 @@ class ModbusTCPMaster:
private: private:
ost::TCPStream* tcp; ost::TCPStream* tcp;
int nTransaction; ModbusRTU::ModbusData nTransaction;
std::queue<unsigned char> qrecv; std::queue<unsigned char> qrecv;
PassiveTimer ptTimeout; PassiveTimer ptTimeout;
std::string iaddr; std::string iaddr;
......
...@@ -441,7 +441,6 @@ mbErrCode ModbusServer::processing( ModbusMessage& buf ) ...@@ -441,7 +441,6 @@ mbErrCode ModbusServer::processing( ModbusMessage& buf )
return res; return res;
} }
ErrorRetMessage em( buf.addr, buf.func, erUnExpectedPacketType ); ErrorRetMessage em( buf.addr, buf.func, erUnExpectedPacketType );
buf = em.transport_msg(); buf = em.transport_msg();
send(buf); send(buf);
...@@ -1226,11 +1225,14 @@ mbErrCode ModbusServer::send( ModbusMessage& msg ) ...@@ -1226,11 +1225,14 @@ mbErrCode ModbusServer::send( ModbusMessage& msg )
int len = szModbusHeader+msg.len; int len = szModbusHeader+msg.len;
if( crcNoCheckit ) if( crcNoCheckit )
{
msg.len -= szCRC;
len -= szCRC; len -= szCRC;
}
// printf("send to %02x type=%d size=%d\n",m.dest,(m.type&TypeMask),slen); // printf("send to %02x type=%d size=%d\n",m.dest,(m.type&TypeMask),slen);
if( dlog.debugging(Debug::INFO) ) if( dlog.debugging(Debug::INFO) )
dlog[Debug::INFO] << "(send data)(" << len << " bytes): " << msg << endl; dlog[Debug::INFO] << "(send): data(" << len << " bytes): " << msg << endl;
try try
{ {
......
...@@ -58,9 +58,22 @@ mbErrCode ModbusTCPCore::sendData( unsigned char* buf, int len, ost::TCPStream* ...@@ -58,9 +58,22 @@ mbErrCode ModbusTCPCore::sendData( unsigned char* buf, int len, ost::TCPStream*
if( !tcp || !tcp->isConnected() ) if( !tcp || !tcp->isConnected() )
return erTimeOut; return erTimeOut;
try
{
for( int i=0; i<len; i++ ) for( int i=0; i<len; i++ )
(*tcp) << buf[i]; (*tcp) << buf[i];
return erNoError; return erNoError;
}
catch( ost::SockException& e )
{
// cerr << "(send): " << e.getString() << ": " << e.getSystemErrorString() << endl;
}
catch(...)
{
// cerr << "(send): cath..." << endl;
}
return erHardwareError;
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment