You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.2 KiB
73 lines
1.2 KiB
/////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// nwthread.h is part of TestModbus-Client.
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _NWTHREAD_H_
|
|
#define _NWTHREAD_H_
|
|
|
|
#include <string>
|
|
#include <gtk/gtk.h>
|
|
#include <gdk/gdk.h>
|
|
#include <glib.h>
|
|
#include <sys/time.h>
|
|
|
|
#include "modbus.h"
|
|
#include "tcp.h"
|
|
|
|
enum {
|
|
NWT_nothing,
|
|
NWT_connect,
|
|
NWT_running,
|
|
NWT_error,
|
|
NWT_close
|
|
};
|
|
|
|
|
|
struct {
|
|
int fc;
|
|
int reg;
|
|
int cnt;
|
|
uint16_t data[0x100];
|
|
} typedef NWTReqResult;
|
|
|
|
class NetworkThread {
|
|
private:
|
|
GMutex mutex;
|
|
GThread *thread;
|
|
int state;
|
|
|
|
int req_new; // new request
|
|
|
|
modbustcp_rq_header req_mbh;
|
|
// .fc == 0 no request
|
|
int req_timeout; // timeout[ms]
|
|
struct timeval req_time;
|
|
TCP tcp;
|
|
std::string host, port;
|
|
|
|
void SetState(int s);
|
|
void GuiSendStatustext(char* txt);
|
|
void GuiSendResult(char *buffer, int len, modbustcp_rq_header *mbh_in);
|
|
void BuildAndSendReadReq(char *buffer, int size);
|
|
|
|
public:
|
|
NetworkThread();
|
|
~NetworkThread();
|
|
|
|
void Lock();
|
|
void UnLock();
|
|
|
|
int Connect(std::string dest_host, std::string dest_port);
|
|
int Disconnect();
|
|
|
|
int GetState();
|
|
int SendRequestRead(int unitid, int fc, int reg, int num);
|
|
|
|
void Thread();
|
|
};
|
|
|
|
|
|
#endif
|