fix:修正Linux下wxDateTime初始化问题。

This commit is contained in:
taynpg 2025-05-12 12:53:16 +08:00
parent 1476e9ba49
commit 7bf936fa8f
3 changed files with 7 additions and 6 deletions

View File

@ -41,8 +41,8 @@ FrameBuffer* Communicate::ParseBuffer(MutBuffer& buffer)
frame = new FrameBuffer(); frame = new FrameBuffer();
frame->len = dataLen; frame->len = dataLen;
frame->fid = std::string(buffer.GetData() + find + sizeof(gHeader) + sizeof(uint16_t), 32); frame->fid = std::string(buffer.GetData() + find + sizeof(gHeader) + sizeof(uint16_t));
frame->tid = std::string(buffer.GetData() + find + sizeof(gHeader) + sizeof(uint16_t) + 32, 32); frame->tid = std::string(buffer.GetData() + find + sizeof(gHeader) + sizeof(uint16_t) + 32);
std::memcpy(&frame->dataType, buffer.GetData() + find + sizeof(gHeader), sizeof(frame->dataType)); std::memcpy(&frame->dataType, buffer.GetData() + find + sizeof(gHeader), sizeof(frame->dataType));
if (frame->len > 0) { if (frame->len > 0) {
@ -70,10 +70,11 @@ bool Communicate::PackBuffer(FrameBuffer* frame, char** buf, int32_t& len)
} }
len = sizeof(gHeader) + sizeof(uint16_t) + 64 + sizeof(len) + frame->len + sizeof(gTail); len = sizeof(gHeader) + sizeof(uint16_t) + 64 + sizeof(len) + frame->len + sizeof(gTail);
*buf = new char[len]; *buf = new char[len];
std::memset(*buf + sizeof(gHeader) + sizeof(uint16_t), 0x0, 64);
std::memcpy(*buf, gHeader, sizeof(gHeader)); std::memcpy(*buf, gHeader, sizeof(gHeader));
std::memcpy(*buf + sizeof(gHeader), &frame->dataType, sizeof(frame->dataType)); std::memcpy(*buf + sizeof(gHeader), &frame->dataType, sizeof(frame->dataType));
std::memcpy(*buf + sizeof(gHeader) + sizeof(uint16_t), frame->fid.c_str(), 32); std::memcpy(*buf + sizeof(gHeader) + sizeof(uint16_t), frame->fid.c_str(), frame->fid.size());
std::memcpy(*buf + sizeof(gHeader) + sizeof(uint16_t) + 32, frame->tid.c_str(), 32); std::memcpy(*buf + sizeof(gHeader) + sizeof(uint16_t) + 32, frame->tid.c_str(), frame->tid.size());
std::memcpy(*buf + sizeof(gHeader) + sizeof(uint16_t) + 64, &frame->len, sizeof(frame->len)); std::memcpy(*buf + sizeof(gHeader) + sizeof(uint16_t) + 64, &frame->len, sizeof(frame->len));
if (frame->len > 0) { if (frame->len > 0) {
std::memcpy(*buf + sizeof(gHeader) + sizeof(uint16_t) + 64 + sizeof(len), dataPtr, frame->len); std::memcpy(*buf + sizeof(gHeader) + sizeof(uint16_t) + 64 + sizeof(len), dataPtr, frame->len);

View File

@ -84,6 +84,7 @@ void test3()
} }
delete[] d; delete[] d;
} }
delete f;
} }
int main() int main()

View File

@ -18,8 +18,7 @@ class MLogFormatter : public wxLogFormatter
public: public:
wxString Format(wxLogLevel level, const wxString& msg, const wxLogRecordInfo& info) const override wxString Format(wxLogLevel level, const wxString& msg, const wxLogRecordInfo& info) const override
{ {
//wxDateTime time(info.timestampMS / 1000); wxDateTime time(static_cast<time_t>(info.timestampMS / 1000));
wxDateTime time;
time.SetMillisecond(info.timestampMS % 1000); time.SetMillisecond(info.timestampMS % 1000);
auto timeStr = time.Format(wxT("%H:%M:%S.%l")); auto timeStr = time.Format(wxT("%H:%M:%S.%l"));
wxString levelStr; wxString levelStr;