You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
2.4 KiB
C++
55 lines
2.4 KiB
C++
#ifndef _MSGHANDLER_HPP_
|
|
#define _MSGHANDLER_HPP_
|
|
|
|
#include <queue>
|
|
#include <mutex>
|
|
#include <vector>
|
|
#include <map>
|
|
|
|
class MsgHandler {
|
|
public:
|
|
int fd;
|
|
std::string device;
|
|
std::vector<uint8_t> m_PrintData;
|
|
|
|
MsgHandler();
|
|
~MsgHandler() = default;
|
|
|
|
void HandleDdsMsg(const std::map<std::string, std::string>& msg);
|
|
void EncodeMsg(const std::map<std::string, std::string>& msg);
|
|
bool SetDevice(const std::string& device);
|
|
|
|
virtual bool OpenPort(const std::string& port, const std::string& baudrate);
|
|
virtual int SendDeviceMsg(const std::vector<uint8_t>& data);
|
|
virtual int RecvDeviceMsg(std::vector<uint8_t>& data, int timeoutMs);
|
|
int SendMsg(const std::vector<uint8_t>& data);
|
|
int RecvMsg(std::vector<uint8_t>& data, int timeoutMs);
|
|
bool isOpen() const {
|
|
return fd != -1;
|
|
}
|
|
void ClosePort();
|
|
|
|
private:
|
|
std::vector<char> BuildLine(int m_max, const std::map<int, std::string>& PointList, int no_line_min = 0, int no_line_max = 0); //行线条生成器
|
|
std::vector<char> BuildStringLine(std::map<int, std::string>& PointList); //行线条生成器
|
|
std::vector<char> BuildStringLine_HSK33(std::map<int, std::string>& PointList); //行线条生成器
|
|
|
|
void Page_ClearAndSet(std::vector<uint8_t>& Data, char * h1h2h3h4);
|
|
void Page_ESCL (std::vector<uint8_t>& Data, const char *n1n2, const char *x1x2x3x4, const char *y1y2y3y4,
|
|
const char *x5x6x7x8, const char *y5y6y7y8, char d, char w);
|
|
void Page_ESCPC(std::vector<uint8_t>& Data, const char *n1n2, const char *x1x2x3x4, const char *y1y2y3y4,
|
|
char w, char h, char c, const char * r1r2, const char * s1s2);
|
|
void Page_ESCRC(std::vector<uint8_t>& Data, const char *n1n2, const char *str);
|
|
void Page_ESCH(std::vector<uint8_t>& Data, char n, char *x1x2x3x4, char *y1y2y3y4, char *bmp, int bmpsize);
|
|
void Page_Cut(std::vector<uint8_t>& Data);
|
|
void Page_End(std::vector<uint8_t>& Data);
|
|
void GtstrLength(int iVal, char *p);
|
|
bool is_chinese_char(const std::string& str, size_t start_byte);
|
|
int get_utf8_char_width(const std::string& str, size_t start_byte);
|
|
size_t get_utf8_display_width(const std::string& str);
|
|
std::vector<std::string> split_utf8_by_width(const std::string& str, size_t max_width);
|
|
|
|
void Print1_3(const std::map<std::string, std::string>& msg);
|
|
};
|
|
|
|
#endif |