Ejemplo n.º 1
0
void ClassicLadderEndOfAppli( void )
{
	CyclicThreadRunning = 0;
	if(modmaster)  {   CloseSocketModbusMaster( );   }
	if(modslave)   {   CloseSocketServer( );   }

}
Ejemplo n.º 2
0
void PrepareModbusMaster( void )
{
       if(modmaster) 
            { 
                CloseSocketModbusMaster( );
		InitSocketModbusMaster( );
            }
}
Ejemplo n.º 3
0
void InitSocketModbusMaster( )
{

	int Error;
	int ScanClientSock;

	// WSAStartup for Windows already done for socket server...
	
	for( ScanClientSock=0; ScanClientSock<NBR_CLIENTS_MAX; ScanClientSock++ )
	{
		ClientSocketOpened[ ScanClientSock ] = -1;
		ClientSockDescrip[ ScanClientSock ] = SOCK_INVALID;
	}

	ClientSocketRunning = 1;
#ifdef __WIN32__
	ThreadHandleClient = CreateThread( NULL/*no security attributes*/, 16*1024L/*default stack size*/,                                                   
			(LPTHREAD_START_ROUTINE)SocketModbusMasterLoop/* thread function*/, 
			NULL/*argument to thread function*/,                
			THREAD_QUERY_INFORMATION/*use default creation flags*/,                           
			&ThreadIdClient/* returns the thread identifier*/);                
	if ( ThreadHandleClient==NULL )
#else
	Error = pthread_create( &thread_socket_client, NULL, (void *(*)(void *))SocketModbusMasterLoop, (void *)NULL );
	if (Error)
#endif
	{
		printf(_("ERROR CLASSICLADDER-   Failed to create thread I/O modbus master...\n"));
		CloseSocketModbusMaster( );
	}
	else
	{
		Error = 0;
		if ( ModbusSerialPortNameUsed[ 0 ]!='\0' )
		{
			if ( !SerialOpen( ModbusSerialPortNameUsed, ModbusSerialSpeed ) )
				Error = -1;
                        printf(_("INFO CLASSICLADDER---I/O modbus master Data bits %i Stop bits %i Parity %i\n"),ModbusSerialDataBits,ModbusSerialStopBits,ModbusSerialParity);
		}
		if ( Error!=-1 )
		printf(_("INFO CLASSICLADDER---I/O modbus master (%s) init ok !\n"), ModbusSerialPortNameUsed[ 0 ]!='\0'?_("Serial"):_("Ethernet"));
	}
}