02 设置环境变量
设置环境变量1.环境变量的定义环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。 2. export终端命令 export命令可用于显示或设置环境变量。 export命令的效果仅限于当前终端。 export的语法:export [-fnp] [变量名]=[变量设置值] 参数说明: -f:代表[变量名称]中为函数名称。 -n:删除指定的变量;实际未删除,只是不会输出到后续指令的执行环境中。 -p:显示所有的shell赋予子程序的环境变量。 3.Linux设置环境变量的方法3.1终端里直接用export命令export...
14 Qt多线程
...
信号
信号1.基本概念信号是事件发生时对进程的通知机制,也可以把它称为软件中断。信号与硬件中断的相似之处在于能够打断程序当前执行的正常流程, 其实是在软件层次上对中断机制的一种模拟。 大多数情况下,是无法预测信号达到的准确时间,所以,信号提供了一种处理异步事件的方法 1.1信号的用途一个有“一定权限”的进程(比如内核)可以给另一个进程发送信号,所以信号是一种进程间通信的机制。当某个事件发生时,一个进程通知另一个进程。 1.2信号的使用案例 Linux在终端中输入 Ctrl + Z可以使内核发送**暂停信号 **(SIGCONT )以暂停前台的进程 Linux在终端中输入 Ctrl + C可以使内核发送中断信号(SIGINT )以结束前台的进程 用户可以通过 kill() 系统调用将任意信号发送给其它进程。当然对此是有所限制的,接收信号的进程和发送信号的进程的所有者必须相同,亦或者发送信号的进程的所有者是 root 用户 ...
17 定时器
定时器Qt有2种方式实现定时器的功能 1.使用QTimer类QTimer类非常简单使用,只需创建一个该对象,设置周期即可,在开启后,他会定时发出timeout()的信号,我们可以直接使用槽函数连接该信号。 1.1常用函数:123void setInterval(int msec); //设置周期void start(std::chrono::milliseconds msec);void start(void);//个人感觉它的start()应该是和QThread一样,创建了个新的线程 1.2使用信号槽123QTimer *timer = new QTimer(this);connect(timer, &QTimer::timeout, this, QOverload<>::of(&AnalogClock::update));timer->start(1000); 使用 定时器 +...
03 控件 QLabel
QLabel类QLabel用于显示文本、图像、动画,但不提供用户交互功能 继承关系:QLabel <- QFrame <- QWidget 1.常用API 方法 描述 void setText(const QString &text) 设置显示文本 void setAlignment(Qt::Alignment) 设置文本显示位置 void setFont(const QFont &) 设置字体 void setPixmap(const QPixmap &) 设置图片 void setMovie(QMovie *movie) 设置动图 void setNum(double num) 设置数字 void clear() 清空 2.显示图片123456789//1. 设置标签QLabel *label2 = new QLabel(this);label2->setGeometry(30, 70, 200, 200);//2. 设置图片QPixmap...
00 安装
安装及更新组件Qt是可以更新组件的,但是需要注意 1.Qt更新组件是,必须要添加正确的“档案网站”才行,不然就找不到。 https://mirrors.ustc.edu.cn/qtproject这个网站是可以用的 2.Qt 那个在线下载器速度很慢,需要用命令行启动这个软件,并且在后边加上这句话 --mirror https://mirrors.tuna.tsinghua.edu.cn/qt
02 关键类
Qt中的关键类Qt对C++标准库中的许多数据类型进行了重新封装,加快了其运行速度,并且也保证了其线程安全。 一、顺序容器1.QList类数组形式的线性表在Qt中的实现,提供了增、删、改、移动、替换等操作 支持用索引访问 插入、删除的时间复杂度是O(N) insert(),replace(),removeAt(),move(),swap(),append(),preappend(),removeFirst(),removeLast()...
优秀的程序结构
记录从网上一些大佬的代码中学习到的比较好的代码结构,有助于简化编程。 1.main.cpp和CUBE生成的main.c分开放,在main.cpp中定义用户函数Main(),放到main.c的main()中。这样即使CUBE再生成也不会覆盖了。 2.稚晖君在Main()中做了如下的事情: Main(){电机:绑定驱动、编码器、初始化按键:绑定回调函数开启定时器主循环} 3.在main.cpp中,它还定义了一堆定时器的Event Callbacks,按键回调函数的实现。 4.定时器中断函数不要直接写在Cube给我们定义的接口中,可以自己定一个函数,比如Tim1Callback100Hz(),然后把这个函数放进定时器的IRQHandler中调用就行了,比较直观。 5.如果一个类需要定时器作为时间基准,那么就定义.Tick()函数,并放到定时器的回调函数中。然后在类中定义_Elapsedtime这个变量记录时间。 Tick函数的内容一般就是:给类中的_Elapsedtime变量加时间;如果涉及状态机,则在Tick()里面更新状态,并调用回调函数。手表的PageManager类就是这样的。
电赛赛后总结
电赛赛后总结 本次电赛采用MSP430F5529作为主控,做了2台寻迹小车。最后评测时并没能实现之前已经调好的功能,主要原因我认为是评测场地和学校的场地摩擦力还是差别有点大,导致主车在第三问转到内圈时转不过去。之前从车速度调高了之后老是跑出黑线外,在评测这边却没有出现该问题,导致从车会跟主车的距离过近。 虽然结果一般,但是我还是学到了一些东西: 1.传感器采集数据我之前那种宏定义的方法不太好,会多次重复读取,读取一次把各个传感器的数据放到一个数组里,再把该数组宏定义会更好。 2.寻迹的PID不一定只要P,可以加上D,会加速调整。 3.传感器采集数据可以不放在while1里,而放在一个ms级别的定时器中断内,这样可以保证采样周期一直不变。 4.尽量所有环节都闭环,如果最后那个主车用的是灰度的转弯办法应该就可以到内圈了…
01 常用Shell命令
常用Shell命令1、目录信息查看命令ls ls -a 显示目录所有文件及文件夹,包括隐藏文件,比如以.开头的 ls -l 显示详细信息,比如是否可读、可写、可执行 2、目录切换命令cd 3、当前路径显示命令pwd 4、系统信息查看命令uname 5、清理屏幕命令clear 6、显示文件内容命令cat 7、切换用户身份命令sudo 8、文件拷贝命令cp 9、切换用户命令su 10、移动文件命令mv,也可用作重命名 11、创建文件夹命令mkdir 12、创建文件命令touch 13、删除命令rm 14、目录删除命令rmdir 15、显示网络配置信息命令ifconfig 16、重启命令reboot 17、关机命令poweroff 18、系统帮助命令man 19、数据同步写入磁盘命令sync 20、查找文件命令find 21、查找内容命令grep 22、文件夹大小查看命令du 23、磁盘空间检查命令df 24、使用gedit打开某个文件命令gedit 25、当前的系统进程查看命令ps 26、进程实时运行状态查看命令top 27、文件类型查看命令file








