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->len = dataLen;
frame->fid = std::string(buffer.GetData() + find + sizeof(gHeader) + sizeof(uint16_t), 32);
frame->tid = std::string(buffer.GetData() + find + sizeof(gHeader) + sizeof(uint16_t) + 32, 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);
std::memcpy(&frame->dataType, buffer.GetData() + find + sizeof(gHeader), sizeof(frame->dataType));
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);
*buf = new char[len];
std::memset(*buf + sizeof(gHeader) + sizeof(uint16_t), 0x0, 64);
std::memcpy(*buf, gHeader, sizeof(gHeader));
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) + 32, frame->tid.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(), frame->tid.size());
std::memcpy(*buf + sizeof(gHeader) + sizeof(uint16_t) + 64, &frame->len, sizeof(frame->len));
if (frame->len > 0) {
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 f;
}
int main()

View File

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