GrpcPrint/PrintC/DataManage/StreamClient.h

137 lines
3.6 KiB
C
Raw Normal View History

2024-03-15 12:31:34 +08:00
#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 {
2024-04-09 16:53:02 +08:00
ProcReadPLC0 = 0, //snap7 数据
ProcReadPLC1,
ProcReadPLC2,
ProcReadPLC3,
ProcReadPLC4,
ProcReadPLC5,
ProcReadPLC6,
ProcReadPLCData0 = 100,
ALARM, //报警
2024-03-15 12:31:34 +08:00
RESPOND, //回应
2024-04-09 16:53:02 +08:00
TIMEDATA, //定时数据
INITERRORINFOSRSP, //返回初始化错误信息
VERSIONRSP, //返回版本信息
2024-03-15 12:31:34 +08:00
};
enum DATATYPE {
iBOOL = 0,
iSHORT,
iUSHORT,
iINT,
iUINT,
iFLOAT
};
struct ReadData {
READTYPE dataType;
bool result;
2024-04-02 17:45:03 +08:00
std::string nameKey; //参数key 空格隔开
std::string strValue; //value 空格隔开
2024-03-15 12:31:34 +08:00
DATATYPE valueType; //数据类型
2024-04-02 17:45:03 +08:00
2024-03-15 12:31:34 +08:00
};
enum WRITETYPE {
GET = 0,
SET,
LOAD, //载入
LOADOUT, //载出
2024-04-09 16:53:02 +08:00
SUPPLYAXLEAFTER, //供粉轴后移
2024-03-15 12:31:34 +08:00
SUPPLYAXLEFRONT, //供粉轴前移
2024-04-09 16:53:02 +08:00
SUPPLYAXLEAFTERCONTSTART, //供粉轴后移连续开始
SUPPLYAXLEAFTERCONTSTOP, //供粉轴后移连续停止
SUPPLYAXLEFRONTCONTSTART, //供粉轴前移连续开始
SUPPLYAXLEFRONTCONTSTOP, //供粉轴前移连续停止
2024-03-15 12:31:34 +08:00
PAVEAXLEFRONT, // 铺粉臂前移
2024-04-09 16:53:02 +08:00
PAVEAXLEFRONTCONTSTART, //铺粉臂前移连续
PAVEAXLEFRONTCONTSTOP, //铺粉臂前移连续
2024-03-15 12:31:34 +08:00
PAVEAXLEAFTER, //铺粉臂后移
2024-04-09 16:53:02 +08:00
PAVEAXLEAFTERCONTSTART, //铺粉臂后移连续开始
PAVEAXLEAFTERCONTSTOP, //铺粉臂后移连续停止
2024-03-15 12:31:34 +08:00
PAVEAXLECLEAR, //铺粉臂清零
PRINTAXLEUP, //成型缸上升
2024-04-09 16:53:02 +08:00
PRINTAXLEUPCONTSTART, //成型缸连续上升开始
PRINTAXLEUPCONTSTOP, //成型缸连续上升停止
2024-03-15 12:31:34 +08:00
PRINTAXLEDOWN, //成型缸下降
2024-04-09 16:53:02 +08:00
PRINTAXLEDOWNCONTSTART, //成型缸连续下降开始
PRINTAXLEDOWNCONTSTOP, //成型缸连续下降停止
2024-03-15 12:31:34 +08:00
PRINTAXLECLEAR, //成型缸清零
2024-04-09 16:53:02 +08:00
TRANSFERAXIELEFT, //移载轴左移
TRANSFERAXIELEFTCONTSTART, //移载轴连续左移开始
TRANSFERAXIELEFTCONTSTOP, //移载轴连续左移停止
TRANSFERAXIERIGHT, //移载轴右移
TRANSFERAXIERIGHTCONTSTART, //移载轴连续右移开始
TRANSFERAXIERIGHTCONTSTOP, //移载轴连续右移停止
TRANSFERAXIECLEAR, //移载轴清零
SCANERSTART, //开始扫描
SCANERSTOP, //停止扫描
STARTHEATINGSCANNERTEST, //开始振镜预热测试
STOPHEATINGSCANNERTEST, //停止振镜预热
INITERRORINFOSREQ, //初始化错误信息
VERSIONREQ, //获取版本信息
IOSIGNAL, //io 信号
2024-03-15 12:31:34 +08:00
};
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;
2024-04-01 18:26:14 +08:00
std::thread m_connectTd;
2024-03-15 12:31:34 +08:00
std::list<WriteData*> m_msgList; //信息缓存区
std::mutex m_msgLock; //信息锁
void* m_handlePtr;
};