摘要: 在串口传输文件时,我们通常希望以二进制形式将文件发送出去,因为这样可以避免文件内容被解释为ASCII码,并且可以减少数据传输的时间和数据量。在QT上位机中可以使用以下方式将文件读取并发送出去: // 读取本地SQLite3数据库文件 QString filename = "wifi_UAV.db"; 阅读全文
posted @ 2023-05-01 19:51 成信吴彦祖(略胜亿筹) 阅读(292) 评论(0) 推荐(0)
摘要: 做项目时调用串口,遇到了只有存在回车时才能read到数据的情况,这是设置了行规程的结果。禁用行规程即可取消按行读取机制,如下: (建议大部分情况下都禁用) newtio.c_lflag &= ~ICANON; 阅读全文
posted @ 2023-05-01 18:18 成信吴彦祖(略胜亿筹) 阅读(138) 评论(0) 推荐(0)
摘要: linux正则表达式详解(一) -通配符与基本正则表达式 - 知乎 (zhihu.com) 阅读全文
posted @ 2023-03-04 21:26 成信吴彦祖(略胜亿筹) 阅读(16) 评论(0) 推荐(0)
摘要: 1、删除软件 方法一、如果你知道要删除软件的具体名称,可以使用 sudo apt-get remove --purge 软件名称 sudo apt-get autoremove --purge 软件名称 方法二、如果不知道要删除软件的具体名称,可以使用 dpkg --get-selections | 阅读全文
posted @ 2023-02-27 10:14 成信吴彦祖(略胜亿筹) 阅读(217) 评论(0) 推荐(0)
摘要: double a = 9.9; int &b = a; 很明显上面的代码编译会报错,C++引用时不能跨数据类型。 double a = 9.9; int &b = (int)a; 这时编译代码仍会报错,错误提示,我们需要改成如下格式: double a = 9.9; const int &b = ( 阅读全文
posted @ 2023-02-22 18:10 成信吴彦祖(略胜亿筹) 阅读(32) 评论(0) 推荐(0)
摘要: 毫无疑问,一个 file 结构体仅由 open 创建,由 realse 清除。通常我们以为 close 即为 realse ,实际并不是。 close 作为系统调用,会选择性调用 realse ,一旦调用 realse 将会清除整个 file 结构体,但例如 fork、dup 等调用会创建原进程副本 阅读全文
posted @ 2023-01-11 01:00 成信吴彦祖(略胜亿筹) 阅读(372) 评论(0) 推荐(0)
摘要: 创建守护进程一般通过 fork() 子进程后,进行处理得到。fork() 出的子进程是父进程的复制品,所以必须除去从父进程继承的东西。 1. 创建子进程,终止父进程 这一步的目的是使其脱离终端控制,进入后台运行。 2. 在子进程中建立新的会话 通过 setsid 函数建立新的会话,使得进程摆脱原会话 阅读全文
posted @ 2022-10-03 22:02 成信吴彦祖(略胜亿筹) 阅读(33) 评论(0) 推荐(0)
摘要: 僵尸进程的定义是:一个已经终止运行但其父进程尚未对其进行善后处理(获取终止子进程的有关信息、释放它仍占用的资源)的进程,被称为僵尸进程。这种僵尸进程会在父进程退出后,变成孤儿进程,会被 init 进程过继并清理。还有另外的情况是父进程先于子进程退出,这种情况下的子进程也会被 init 进程清理,但并 阅读全文
posted @ 2022-10-03 21:28 成信吴彦祖(略胜亿筹) 阅读(31) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-09-22 19:38 成信吴彦祖(略胜亿筹) 阅读(33) 评论(0) 推荐(0)
摘要: 先放一张图,这张图简略描述了 cdev 结构体在字符设备驱动中的地位,及其依赖关系。这张图中被方框框起来的部分是内核空间。 很明显,无论是加载模块、卸载模块,都是直接对 cdev 进行操作,因为它描述了整个字符设备,包括 file_operations 结构体变量。 cdev结构体分析(简): fi 阅读全文
posted @ 2022-09-08 19:08 成信吴彦祖(略胜亿筹) 阅读(100) 评论(0) 推荐(1)