109 lines
2.6 KiB
C++
109 lines
2.6 KiB
C++
#pragma once
|
|
#include <iostream>
|
|
#include <memory>
|
|
#include <string>
|
|
#include <thread>
|
|
#include <grpcpp/grpcpp.h>
|
|
#include "../protobuf/stream.grpc.pb.h"
|
|
|
|
using grpc::Channel;
|
|
using grpc::ClientContext;
|
|
using grpc::Status;
|
|
using stream::Stream;
|
|
using stream::RequestInfo;
|
|
using stream::ResponseInfo;
|
|
|
|
enum READTYPE {
|
|
ALARM = 0, //报警
|
|
RESPOND, //回应
|
|
TIMEDATA //定时数据 一次大概50个左右
|
|
};
|
|
|
|
enum DATATYPE {
|
|
iBOOL = 0,
|
|
iSHORT,
|
|
iUSHORT,
|
|
iINT,
|
|
iUINT,
|
|
iFLOAT
|
|
};
|
|
|
|
struct ReadData {
|
|
READTYPE dataType;
|
|
bool result;
|
|
std::string nameKey; //参数key 空格隔开
|
|
std::string strValue; //value 空格隔开
|
|
DATATYPE valueType; //数据类型
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
enum WRITETYPE {
|
|
GET = 0,
|
|
SET,
|
|
LOAD, //载入
|
|
SUPPLYAXLEAFTER, //供粉轴后移
|
|
LOADOUT, //载出
|
|
SUPPLYAXLEFRONT, //供粉轴前移
|
|
SUPPLYAXLEAFTERCONT, //供粉轴后移连续
|
|
SUPPLYAXLEFRONTCONT, //供粉轴前移连续
|
|
PAVEAXLEFRONT, // 铺粉臂前移
|
|
PAVEAXLEFRONTCONT, //铺粉臂前移连续
|
|
PAVEAXLEAFTER, //铺粉臂后移
|
|
PAVEAXLEAFTERCONT, //铺粉臂后移连续
|
|
PAVEAXLECLEAR, //铺粉臂清零
|
|
PRINTAXLEUP, //成型缸上升
|
|
PRINTAXLEUPCONT, //成型缸连续上升
|
|
PRINTAXLEDOWN, //成型缸下降
|
|
PRINTAXLEDOWNCONT, //成型缸连续下降
|
|
PRINTAXLECLEAR, //成型缸清零
|
|
TRANSFERAXIELEFT, //移栽轴左移
|
|
TRANSFERAXIELEFTCONT, //移栽轴连续左移
|
|
TRANSFERAXIERIGHT, //移栽轴右移
|
|
TRANSFERAXIERIGHTCONT, //移栽轴连续右移
|
|
TRANSFERAXIECLEAR //移栽轴清零
|
|
};
|
|
|
|
struct WriteData {
|
|
WRITETYPE dataType;
|
|
std::string nameKey; //参数key
|
|
std::string strValue; //value
|
|
DATATYPE valueType;
|
|
};
|
|
|
|
class StreamClient {
|
|
typedef void (*DataCallBack)(void* pthis, const ReadData& msg);
|
|
public:
|
|
StreamClient();
|
|
~StreamClient();
|
|
|
|
void Init();
|
|
void AllStream(); //双向流式
|
|
|
|
void SetCallBackFunc(void* pthis, DataCallBack dataCallBack) {
|
|
m_handlePtr = pthis;
|
|
m_dataCallBack = dataCallBack;
|
|
}
|
|
|
|
void SetPushMsg(WriteData* msg);
|
|
private:
|
|
bool GetPushMsg(WriteData& msg);
|
|
|
|
private:
|
|
std::unique_ptr<Stream::Stub> m_stubTwo;
|
|
std::string m_localIp;
|
|
int m_port; //服务端口
|
|
DataCallBack m_dataCallBack;
|
|
|
|
bool m_readQuitFlag;
|
|
bool m_writeQuitFlag;
|
|
|
|
std::thread m_connectTd;
|
|
|
|
std::list<WriteData*> m_msgList; //信息缓存区
|
|
std::mutex m_msgLock; //信息锁
|
|
|
|
void* m_handlePtr;
|
|
}; |