2019年12月

在 qt 中想要把 qvector 转化为原始数据构成的数组,有几种方法:

  1. 直接使用循环读取
double *bytes = new double[vec.size()];
for (int i = 0; i < vec.size(); ++i) {
   bytes[i] = vec[i];
}
QByteArray array = QByteArray::fromRawData(reinterpret_cast<void*>(bytes));
delete []bytes;
  1. 使用 qvector 自带的 constData 和 data

    QByteArray data = QByteArray::fromRawData(
        reinterpret_cast<const char*>(vec.constData()),
        sizeof(double) * vec.size()
    );
  2. 使用 stream 来输出
    QVector<double> vec;
    QByteArray data;
    QDataStream stream(&data, QIODevice::WriteOnly);
    for (auto x : vec)
    stream << x;

或者

QVector<double> vec;
// populate vector
QByteArray data;
QDataStream stream(&data, QIODevice::WriteOnly);
stream << vec;

调试 mcu 的时候,使用 jlink 的 rtt 可以方便的输出信息。

输出有两种模式, client 和 logger。 client 必须依附其他程序,比如说 mdk 调试状态,或者 logger 程序。

logger 可以不依附其他程序,但是 rtt 默认的代码只支持 client 的通道 0,想要使用 logger,需要修改代码,具体如下:

static SEGGER_RTT_CB _SEGGER_RTT = {
  "SEGGER RTT",
  SEGGER_RTT_MAX_NUM_UP_BUFFERS,
  SEGGER_RTT_MAX_NUM_DOWN_BUFFERS,
  {{ "Terminal",         &_acUpBuffer[0],           BUFFER_SIZE_UP,   0, 0, SEGGER_RTT_MODE_NO_BLOCK_SKIP },
   { "Log",                 &_acUpBuffer1[0],          BUFFER_SIZE_UP,   0, 0, SEGGER_RTT_MODE_NO_BLOCK_SKIP }},
  {{ "Terminal",         &_acDownBuffer[0],         BUFFER_SIZE_DOWN, 0, 0, SEGGER_RTT_MODE_NO_BLOCK_SKIP },
   { "Log",                 &_acDownBuffer1[0],  BUFFER_SIZE_DOWN, 0, 0, SEGGER_RTT_MODE_NO_BLOCK_SKIP }},
};

这段代码是给予 4.90e 的 rtt 代码,增加了一个通道,在调用 rtt 的时候,通道写 1 即可通过 logger 来输出了。

1. 撤销提交

git reset --soft HEAD^
git reset --hard [commit_id]

注意: soft撤销可以保留已经修改的文件,hard 撤销完全恢复为指定的状态,抛弃已有的修改。

2. 强制更新

git push origin HEAD --force
git push origin --force

3. 修改 commit 注释

git commit --amend

4. 修改仓库地址

git remote set-url origin [url]

git remote rm origin   +   git remote add origin [url]

5. 对某个文件取消跟踪

git rm --cached readme1.txt    删除readme1.txt的跟踪,并保留在本地。
git rm --f readme1.txt    删除readme1.txt的跟踪,并且删除本地文件。

6. branch 改名

git checkout <old_name>
git branch -m <new_name>

参考: https://linuxize.com/post/how-to-rename-local-and-remote-git-branch/

7. 版本回退

git log
git reset --hard commit_id

如果要回到未来版本,运行下面命令获得未来的 commit_id

git reflog

参考: https://www.liaoxuefeng.com/wiki/896043488029600/897013573512192 https://blog.csdn.net/yxys01/article/details/78454315