mirror of
https://gitee.com/js-yhsec/energy_storage.git
synced 2026-05-28 03:09:24 +08:00
搭建PVB架构,实现前端的基础布局、菜单、表格、图示等功能
This commit is contained in:
100
libs/pvb/include/rllib/rlcanopendaemon.h
Normal file
100
libs/pvb/include/rllib/rlcanopendaemon.h
Normal file
@@ -0,0 +1,100 @@
|
||||
/***************************************************************************
|
||||
rlcanopen.cpp - description
|
||||
-------------------
|
||||
begin : Tue March 03 2004
|
||||
copyright : (C) 2004 by Marc Bräutigam, Christian Wilmes, R. Lehrig
|
||||
email : lehrig@t-online.de
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE as *
|
||||
* published by the Free Software Foundation *
|
||||
* *
|
||||
***************************************************************************/
|
||||
#ifndef DAEMON
|
||||
#define DAEMON
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "rlthread.h"
|
||||
#include "rlcutil.h"
|
||||
#include "rlsocket.h"
|
||||
#include "rlwthread.h"
|
||||
#include "rlcanopen.h"
|
||||
|
||||
|
||||
enum rl_msg {
|
||||
MSG_SEND = 0,
|
||||
MSG_RECEIVE = 1,
|
||||
MSG_SDO_READ = 0,
|
||||
MSG_SDO_WRITE = 1,
|
||||
MSG_PDO_RECEIVE = 3,
|
||||
MSG_CONNECT = 5,
|
||||
MSG_DISCONNECT = 6,
|
||||
MSG_PDO_TRANSMIT = 4,
|
||||
MSG_NMT_TRANSMIT = 7,
|
||||
MSG_RESTART_BOARD = 8,
|
||||
MSG_GET_NODE_STATE = 9
|
||||
};
|
||||
|
||||
|
||||
//! canopen tcp/ip interface for concurrent device-access of multiple clientprocesses
|
||||
/*! this is a multi threaded server process, which listens on a tcp port for incomming
|
||||
connections. It runs the only recommended instance of rlcanopen class for beeing the
|
||||
very only process accessing the device.
|
||||
Different processes who concurrently try to access the device will be queued autmaticly
|
||||
by daemonprocess. These processes are inteded to communicate through rlcanopenclient. */
|
||||
|
||||
class rlCanOpenDaemon{
|
||||
public:
|
||||
|
||||
/*! empty constructor initializes on port 5000.
|
||||
creates a new rlCanOpen Object which
|
||||
performs all access to canopen device */
|
||||
rlCanOpenDaemon();
|
||||
|
||||
/*! main constructor sets port and inifilename.
|
||||
creates a new rlCanOpen Object which
|
||||
performs all access to canopen device */
|
||||
rlCanOpenDaemon(int _port, char* _iniFileName=0);
|
||||
|
||||
/*! destructor destroys rlcanopen object */
|
||||
~rlCanOpenDaemon();
|
||||
|
||||
/*! returns value of current port */
|
||||
int getPort();
|
||||
|
||||
/*! daemon creates a listener thread which handels
|
||||
incoming connections by himself creating
|
||||
clientconnection threads for each client connecting to the daemon. */
|
||||
void start();
|
||||
|
||||
/*! pointer to rlCanOpen Object which performs all access to canopen device */
|
||||
rlCanOpen* nodes;
|
||||
|
||||
/*! rlThread object which manages basic thread functionality e.g.
|
||||
locking to prevent threads
|
||||
from concurrently accessing the canopen device */
|
||||
rlThread daemon_thread;
|
||||
|
||||
private:
|
||||
int port;
|
||||
|
||||
};
|
||||
|
||||
// parameter struct for passing parameters to handler thread
|
||||
struct THREADTRANSFER
|
||||
{
|
||||
int socketdescr; // socket descriptor identifying the new connection
|
||||
rlCanOpenDaemon* daemonptr; // pointer to daemon object
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user