输入 v2??? 命令,选择修改 v2??? 配置, 然后选择修改传输协议, 可以选择 mKcp_wechat-video 。然后重新生成 vmess,放入客户端使用。

  1. v2??? 重启失败, 提示
    
    Authorization not available. Check if polkit service is running or see debug message for more information.

2. 检查 message

vi /var/log/messages

Nov 17 08:47:34 kvm-Buffalo dbus[475]: [system] Activating via systemd: service name='org.freedesktop.PolicyKit1' unit='polkit.service' Nov 17 08:47:34 kvm-Buffalo systemd: Starting Authorization Manager... Nov 17 08:47:34 kvm-Buffalo systemd: polkit.service: main process exited, code=exited, status=1/FAILURE Nov 17 08:47:34 kvm-Buffalo systemd: Failed to start Authorization Manager. Nov 17 08:47:34 kvm-Buffalo systemd: Unit polkit.service entered failed state.


3. 检查 polkit

systemctl status polkit.service

  • polkit.service - Authorization Manager Loaded: loaded (/usr/lib/systemd/system/polkit.service; static; vendor preset: enabled) Active: failed (Result: exit-code) since Sun 2019-11-17 09:02:29 CST; 9min ago Docs: man:polkit(8) Process: 1158 ExecStart=/usr/lib/polkit-1/polkitd --no-debug (code=exited, status=1/FAILURE) Main PID: 1158 (code=exited, status=1/FAILURE)

Nov 17 09:02:29 kvm-Buffalo.ovz systemd[1]: Starting Authorization Manager... Nov 17 09:02:29 kvm-Buffalo.ovz systemd[1]: polkit.service: main process exited, code=exited, status=1/FAILURE Nov 17 09:02:29 kvm-Buffalo.ovz systemd[1]: Failed to start Authorization Manager. Nov 17 09:02:29 kvm-Buffalo.ovz systemd[1]: Unit polkit.service entered failed state. Nov 17 09:02:29 kvm-Buffalo.ovz systemd[1]: polkit.service failed.


4. 手动启动 polkit

/usr/lib/polkit-1/polkitd

Error switcing to user polkitd: Error calling getpwnam(): Success Exiting with code 1


5. 查看系统版本

cat /etc/redhat-release

CentOS Linux release 7.6.1810 (Core)


6. 检查是否安装了 polkit

yum list installed | grep polkit


7. 安装 polkit

yum install polkit

================================================================================================================= Package Arch Version Repository Size

Installing: polkit x86_64 0.112-22.el7_7.1 updates 170 k Installing for dependencies: mozjs17 x86_64 17.0.0-20.el7 base 1.4 M polkit-pkla-compat x86_64 0.1-4.el7 base 39 k


8. 启动 polkit

systemctl start polkit


9. 重启 v2???

v2??? restart

qt 中直接使用 c 语言文件,c 文件可以直接包含,h 文件包含的时候,需要在 c++ 中添加额外信息,如下:


#ifdef __cplusplus
extern "C" {

#include "c头文件.h"

#endif
#ifdef __cplusplus
}
#endif

1. 概念:

坐标轴-QAbstractAxis:

图表中,一般都有 X、Y 坐标轴,复杂一些的还带有 Z 轴。对应到 Qt 的图表也有 X、Y 轴对象。但是今天,我们先不展开介绍。如果我们不创建轴坐标对应的对象,可以使用 Qt 的默认轴对象。后面我们会介绍用法。

系列-QAbstractSeries:

不论是曲线、饼图、棒图还是其他图表,其中展示的内容本质都是数据。一条曲线是一组数据,一个饼图也对应一组数据。在 Qt Charts 中,这些一组组的数据被称作系列。对应不同类型的图表 Qt 提供了不同的系列。系列除了负责存储、访问数据,应该还提供了数据的绘制方法,比如折线图和曲线图分别对应 QLineSerie 和 QSPLineSerie。我们可以用不同的系列达到不同的展示目的。

图例-Legend:

类似于 Excel,Qt Charts 中也提供了图例,并且还可以显示或者隐藏图例。

图表-QChart:

Qt 提供了 QChart 类来封装前面所说的内容,比如坐标轴、系列、图例等。QChart 承担了一个组织、管理的角色。QChart 派生自 QGraphicsObject,因此它实际上是一个图元 item。我们可以从 QChart 获取到坐标轴对象、数据系列对象、图例等等,并且可以设置图表的主题、背景色等样式信息。

视图-QChartView:

负责 QChart 的展示。QChart 本身只负责图表内容的组织、管理。图表的展示由视图负责,这个视图就是 QChartView。QChartView 派生自 QGraphicsView,只是它专门提供了几个面向 QChart 的接口,比如 setChart(QChart*)等。

2. 使用

要使用QtCharts 需要几个步骤:

1. pro 文件中 修改

QT       += charts

2. 把 chart 相关的头文件放在 ui 相关的头文件上面,否则会导致 编译错误,找不到 chartView 相关。

#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
QT_CHARTS_USE_NAMESPACE

3. 在 ui 中放入 widget,然后右键 widget,选择 promote to 选项,选项卡里面:

base class name: QWidget promoted class name: QChartView Header file: QChartView

4. 注意 setChart 之后需要把 旧的给删除掉。否则内存占用越来越多。

    QChart *oldChart = ui->widget->chart();
    QChart *chart = new QChart();
    ui->widget->setChart(chart);

    if (oldChart != nullptr) {
        delete  oldChart;
    }

参考: https://www.cnblogs.com/ybqjymy/p/13253152.html https://www.cnblogs.com/linuxAndMcu/p/11381839.html

3. charts 如果需要图像进行滚动显示,那么可以参考自带的例程 dynamicspline;如果需要再图像上显示具体的 坐标,可以参考自带例程 callout.

参考: https://www.cnblogs.com/shenLong1356/p/11230390.html

4. charts 里面使用 chart.scroll(x, 0); 这个 x 注意不是 chart.plotArea().width() / m_axis.tickCount(); 而应该是 m_chart->plotArea().width() / (X_RANGE_MAX - X_RANGE_MIN); 是和 setRange 这个设置相对应,而不是和 setTickCount 这个设置的值相对应。

1. 首先把 release 版本的 exe 复制到其他文件夹,比如 Desktop\test

2. 使用开始菜单中 qt 里面的控制台窗口,使用 cd 命令打开到 Desktop\test 位置,然后使用打包命令:

windeployqt test.exe

然后 qt 会自动把依赖复制到 Desktop\test 文件夹里面。

3. 安装 enigma virtual box.

4. 使用 enigma virtual box.

  1. enter input file name 后面的 browse 里面选择,Desktop\test 中的 test.exe 文件。
  2. 左下角 files 里面的 add 中选择 add folder recursive 里面选择 Desktop\test 文件夹。
  3. 点击右下角 process 进行封包。

1. qt 中两个字符的字符串直接转换为 hex,类似于 ”1A" 要转换成 16进制的 0x1A,使用 int QString::toInt(bool *ok, int base)。具体如下:

QString  str = "0x1A";
int value = str.toInt(nullptr, 16);
uint8_t tmp = static_cast<uint8_t>(str.toUInt(nullptr, 16));

2. 如果是字符串本身转换为16进制,类似于 "1" 要转换成 0x31,使用 QByteArray,其中有方法 toLatin1、toLocal8Bit, Latin1代表ASCII,Local8Bit代表unicode

QByteArray ar = str.toLatin1().toHex();

3. 如果是16进制转为 QByteArray,可以用 setNum 函数

QByteArray().setNum( hex )

首先正常安装芯片包,然后在设置里面找到当前包存放的位置,默认是: C:\Users\Administrator\STM32Cube\Repository

然后解压 更新包,把更新包里面的文件覆盖到 C:\Users\Administrator\STM32Cube\Repository 这个里面,重新打开 cubemx,就可以看到显示的是新的芯片包了。

软件模拟 spi 时序有以下几个点需要注意:

  1. cs 使能后到第一个 sck 边沿需要延时。
  2. 最后一个sck 边沿到下一个 cs 需要延时。
  3. sck 的高电平和低电平本身需要维持时间。
  4. mosi 需要先把数据放上去,然后启动上升沿,然后延时 sck 高电平的时间。
  5. 在延时了 sck 高电平的时间后,读取 miso 的电平,然后启动下降沿,然后延时 sck 低电平的时间。

今天使用 systick 的时候,只使用了头文件 core_cm4.h,结果就报错了,原因是 __FPU_PRESENT 没有定义,这个定义其实在 stm32f4xx.h 里面。所以如果要解决这个错误,有两种方法:

  1. 只使用 core_cm4.h,然后碰到所有未定义的,都手动定义,或者添加相应的头文件。
  2. 不使用 core_cm4.h,使用 stm32f4xx.h。

比较起来,1 需要包含的头文件比较少,但是操作比较繁琐,2 需要的操作比较少,相应包含的头文件就比较多了。

  1. 可以使用 go get -u github.com/gogs/gogs 来升级,但是因为网络原因,这种升级方式失败了。另外一种是在 github 或者 gitee 上面直接下载源码,然后解压到 $GOPATH/src/github.com/gogs/gogs 位置。
  2. $GOPATH/src/github.com/gogs/gogs 这个位置,使用 go build 来构建,或者 go build -tags "sqlite pam cert" 来构建。
  3. 从旧文件夹里面把 custom, data, log 3个个人文件夹复制到现在的位置。
  4. 使用 ./gogs web 来测试。
  5. 还有不要忘了对比 scripts/init/gentoo 目录下的启动文件和现有的文件差别。

gogs 使用当中,团队的作用暂时来看,主要是权限上的使用,一部分人只有读的权限。