- 博客(336)
- 资源 (18)
- 收藏
- 关注

原创 freeswitch二、freeswitch之注册,呼叫接听测试
在上一篇文章中讲解了freeswitch的安装方法,安装完后测试了和数据库的交互,下面就要测试一下freeswitch的功能了。
2022-09-23 14:42:08
2740
5

转载 ffmpeg中PTS和DTS
计算视频长度: time(秒) = st->duration * av_q2d(st->time_base) ffmpeg内部的时间与标准的时间转换方法: ffmpeg内部的时间戳 = AV_TIME_BASE * time(秒) AV_TIME_BASE_Q=1/AV_TIME_BASE av_rescale_q(int64_t a, AVRational bq, AVRational cq)函数 这个函数的作用是计算a*bq / cq来把时间戳从一个时间基调整到另外一个时间基。PTS和DTS的时间基。
2022-09-22 14:53:56
1665

原创 linux下网卡多IP静态IP
修改/etc/network/interfaces# interfaces(5) file used by ifup(8) and ifdown(8)auto loiface lo inet loopbackauto eth0iface eth0 inet staticaddress 192.168.0.36netmask 255.255.255.0auto eth0:1iface eth0:1 inet staticaddress 192.168.10.46netmask 255
2022-04-15 17:38:19
287

原创 freeswitch一、ubuntu16.04安装freeswitch以及ODBC使用mysql
安装freeswitch下载地址:http://files.freeswitch.org/freeswitch-releases/选择下载版本freeswitch-1.8.5.tar.gz ,下载完成后拷贝到/usr/local/src解压缩cd /usr/local/src 然后解压freeswitch-1.8.5.tar.gzsudo tar -xvf freeswitch-1.8.5.tar.gz先更新软件包sudo apt-get updatesudo apt-get instal
2022-04-06 19:31:07
2879
原创 STM32单片机C语言
去看一下宏定义x?x?dox??x?x?x?x?x?x?x?x?x?;x?while0x?建议大家使用来 构造宏定义,这样不会受到大括号、分号、运算符优先级等的影响,总是会按你期望的方式调用运行!假设LED1(1)参数为真 ,那么就执行第一句,如果是LED1(0),那么就执行第二句。
2025-04-18 16:43:37
241
原创 keil5软件配置以及使用技巧
前面设置了编码格式,文本属性,代码提示和语法检测这些,他们会存储在global.prop文件中,此时我们只需要将这个文件保存下来,当重新安装keil5的时候再拿出来替换上就能使用了。下面是设置字体符合C/C++标准的字体,然后 数字 设置的大小和颜色是第三个框内Font的,Size大小是10,颜色是红色。下面是设置C/C++中程序文本的字体和颜色,第三个框Font中设置为大小10,颜色黑色。如果出现自己误操作关闭了很多需要的小窗口,那么可以通过恢复设置进行还原。2、快速定位函数或变量被定义的地方。
2025-04-18 15:15:01
143
原创 单片机基础知识-STM32
其中电脑内存的速度40GB/S怎么算的呢?首先X86架构的芯片一般是64位的,64/8 = 8 Byte(字节),8Byte*5GHz = 40GB/S由于冯诺依曼架构中程序指令和数据被存储在同一个存储器中,程序和数据共用一条地址和数据线,这就要求分时复用地址和数据线,效率偏低哈佛结构就将程序指令和数据存储到两个独立的存储器中,程序和数据的地址线和数据线都分开了,这样执行起来效率高,但是占用引脚等的资源STM32系列微控制器采用的是哈佛结构。
2025-04-12 13:24:51
398
原创 什么是中性线、零线、地线,三相四线制如何入户用电
地线和零线的区别:零线接入用电设备的内部回路,在低压220伏电路中,和火线承载一样的工作电流,它保护设备安全。地线与大地之间的阻值小于等于4欧姆为合格,并且地线系统在每隔20~30米之间要做重复接地,以防止地线的某处接地极断开,漏电电流通过接地系统从别的接地极流入大地,在变压器三相电侧,按照星形连接法,有一个中心点,这根线引出来的线接不接地:不接地就是中性线,接地就是零线。这多出来的一根是从三相电源的中性点引出来的,就是中性线或者零线,此时可以看到接入大地了,可以看做零线。在变压器的输出端出现了四根线。
2025-04-10 21:19:25
206
原创 三相电为什么没零线也能通电
3、从曲线图可以看出,随意的一点,其中一相电压等于等于另外两相电压之和,但是方向是相反的,相互抵消为0电压。由于其中一相电压,等于另外两相电压之和,假设其中一相如果是0电压可以去除,只要求出两相之间的电压差就可以了。单相电的电压:火线220V减零线0V等于220V,但是三相电之间没有零线,所以是三相火线之间的相差电压。其中一个电枢的情况就做一相,在这一相的发电中,可以看到需要零线,因为需要回路,一根火线不能成为回路。上面就是去除了一相,只留下了两相,此时就可以计算电压差了,计算电压差需要用到向量的概念。
2025-04-10 21:09:18
297
原创 stm32f103 boot引脚
在STM32F103微控制器中,配置BOOT引脚通常是为了进入系统的引导模式(Bootloader模式)或用于特定的调试和固件更新操作。STM32F103系列微控制器通常有两个BOOT引脚:BOOT0和BOOT1。它们的默认配置决定了设备在启动时如何寻找和执行代码。BOOT0:这是一个关键的引脚,用于决定设备启动时从哪种存储介质加载代码。当BOOT0引脚连接到VDD(高电平)时,设备从系统存储器(通常是内部Flash)启动。当BOOT0引脚连接到VSS(低电平)时,设备尝试从Bootloader区域启动
2025-03-20 08:54:51
595
原创 Microsoft Edge中登录海康威视摄像头显示当前浏览器不支持解决方法
1、当使用IP登录海康威视摄像头的时候,浏览器显示了当前浏览器不支持解决方法。2、解决方法:在设置中的默认浏览器里面添加一个页面,然后选择允许,然后重启。
2025-03-18 16:54:51
95
转载 桥接、交换机、路由器、网桥、网关的概念
现在推出的无线路由器,在接上WAN的网线后,路由器会自动处理生成无线信号也就是wifi,可以供有无线网卡的设备访问互联网。路由器和交换机之间有一层包含关系,路由器可以满足交换机一切功能,但交换机没法满足路由器的功能。DDNS(Dynamic Domain Name Server,动态域名服务):DDNS是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现内网穿透。
2025-03-15 16:58:33
160
原创 记录一次wifi版有人物联串口服务器桥接网络调试经过
目前的项目想法是将一台设备IP192.168.3.56的设备通过网口发给串口服务器,然后串口服务器通过桥接,将这个数据通过wifi路由器转发给另外一台设备IP为192.168.3.17,其中串口服务器的IP为192.168.3.16,wifi路由器组成的局域网的网管192.168.3.1。7、这样双方就可以互传消息了,这种情况就是串口服务器和一号设备进行桥接,使得和串口服务器同在一个wifi局域网下的设备都可以访问一号设备了。5、将二号设备连接到路由器的wifi上,设置ip为192.168.3.17。
2025-03-15 16:08:58
372
原创 Qt/C++中的多线程同步机制详解
同步操作就像排队一样,你做一件事,得等到它完成才能继续做下一件事。比如你在电商网站购物,点了“购买”按钮后,系统会马上查库存,这时候你会看到一个加载的提示,必须等到库存查完才能继续支付。如果库存不够,系统会报错,你就不能继续操作了。异步操作则不同,你做一件事,不需要一直等着,可以继续做其他事情。比如你付完钱下单后,系统会给你发订单确认邮件。这个过程是异步的,你不用等着邮件发完,可以继续浏览网站或者做其他事情。邮件在后台自己发,就算发邮件出问题,也不影响你购物或者订单的有效性。异步。
2025-03-05 14:42:42
634
原创 QT多线程中的全局变量访问:为什么修改没有立即同步,需要使用锁或者原子操作
在多线程编程中,多个线程访问同一个全局变量时,可能会遇到内存可见性的问题:即一个线程的修改,另一个线程未必能立即看到。线程B访问 counter 的值:线程B读取counter时,可能会读取到自己缓存中的值(比如还是0),而不是线程A刚刚修改的10。这里我们使用了std::atomic来声明counter,这意味着对counter的所有操作都是原子的,且能够保证在不同线程之间修改的数据能够立即同步。为了确保线程B能够看到线程A的修改,我们需要使用一些同步机制,保证所有线程在访问共享变量时能够看到最新的值。
2025-03-05 13:11:00
407
原创 TCP粘包
在基于 TCP 协议的网络通信中,当发送方连续发送多个数据包时,接收方可能会出现一种异常情况:接收到的数据包并非按照发送方的发送顺序和边界进行准确区分,多个数据包的内容粘连在一起,这就是所谓的 TCP 粘包问题。打个比方,假设发送方要发送两条消息:“Hello” 和 “World”。正常情况下,接收方应该分两次接收到这两条完整且独立的消息。
2025-02-18 13:58:10
724
原创 Linux后台启动命令nohup并且MobaXterm后台启动断网也不关闭软件
nohup主要作用就是可以在后台运行,并可以选择将日志输出到指定文件。如启动一个程序,若使用./demo的方式启动程序当窗口关闭的时候程序也停止了,而且日志会直接输出到控制台非常不直观,nohup启动就可以解决这两个问题。
2025-02-18 10:31:24
286
原创 Qt使用pri和pro文件进行模块化编程
假如我想要做一个功能,这个功能用代码模块化实现出来,方便将来移植,比如音视频播放器的界面,将来想要在其他工程使用时,只需要将widget提升为音视频播放界面即可。当我们其他工程需要这个功能时,我们在调用的时候直接添加源码吗?1、假设举个例子,假设想要做两个模块化的功能,分别是加法和减法。在widget文件中可以直接使用上面两个的头文件了。3、在calcator中使用上面两个pri文件。2、将加法写在一个类中,减法写在另一个类。addModule.pri文件,作为加法。subModule.pri文件。
2025-02-13 16:04:00
352
原创 Qt文本高亮显示QSyntaxHighlighter
在 MyHighlighter 的构造函数中,我们定义了多个高亮规则。每个规则包含一个正则表达式和一个格式。我们用不同的格式来高亮显示时间、温度、湿度以及报警状态:时间:匹配方括号内的内容(如 [12:30]),设置灰色字体和浅灰色背景。温度:匹配 温度 字符串,使用紫色字体。湿度:匹配 湿度 字符串,使用紫色字体。报警状态:根据报警类型(正常、过低、过高)设置不同的颜色和字体样式。
2025-02-13 09:34:47
454
原创 Qt在函数中更新 UI 或重新绘制图形用replot和QTimer::singleShot的区别
在 Qt/C++ 中,有时你需要在某个函数中更新 UI 或重新绘制图形。在这种情况下,你可以选择直接调用更新函数(如 replot()),或者通过 QTimer::singleShot 来延迟执行更新操作。两者的主要区别在于执行时机、阻塞与非阻塞以及对事件循环的影响。
2025-02-13 08:30:32
451
原创 Qt多线程技术【线程池案例】:QRunnable 和 QThreadPool
线程池(ThreadPool)是一种用于管理和复用线程的技术。在多线程编程中,我们经常需要处理大量的小任务,频繁地创建和销毁线程会带来性能上的开销。线程池通过预先创建一定数量的线程来处理任务,任务完成后线程会被返回到线程池中等待下一次使用,从而避免了创建新线程的开销。线程池可以根据任务量动态地调整线程的数量,保持一定数量的线程处于空闲状态,并且通过合理调度任务来提高并发执行的效率。Qt为我们提供了 QThreadPool 和 QRunnable 类来轻松实现线程池机制。
2025-02-11 16:06:28
895
原创 stm32开发之代码硬件仿真
点击Settings以后,就可以看到你的仿真器了,port这里需要设置一下,看一下自己的仿真器和板子的接口是SW还是JTAG。全速运行一般和断点配合使用,程序跑到断点位置会停下来,跳过断点会继续运行,停止全速运行。2、在需要的地方打击打上断点,然后全速运行,程序会在断点处停止。6、查看外设寄存器的值,比如DMA,ADC,GPIO等。7、还可以查看内核的外设的值,比如中断向量控制表。5、查看变量值,右键变量,然后添加到watch。4、进入函数内部运行,单步运行,跳出函数。3、程序运行到光标的位置。
2024-12-26 17:14:11
480
原创 硬件之DCDC开关电源
D12就是一个防反接二极管(肖特基二极管),也可以用MOS管,二极管比较简单但是大概有0.3V的压降,但是如果负载持续有3A的输出,这样0.3*3 = 0.9W,所以当要求输出电流比较大的时候,可以考虑使用MOS防反接,功耗小。电感的选型就是参考上面芯片手册给的值,就是L1的值15uH,但是由于负载的关系我们希望输出3A的电流,选择了4.7uH的电感。这里的D13是一个双向的TVS管,如果是单向的就要放在D12和R64中间,否则的话,一旦电源输入反接,单向的TVS就会烧坏。3、功率,查看输出的电流。
2024-12-20 16:46:04
629
原创 硬件之LDO线性电源
对于功耗就是P = (Vin - Vout)* I ,所以当压差越大,损耗越大,所以一般LDO芯片选取时尽量选择压差小的,或者电流小。
2024-12-20 13:55:59
348
原创 FreeRtos开发之实战一
LED1用来做运行指示灯间隔一秒闪烁一次,优先级最低osPriorityLowKEY任务中按键1用来打印信息,按键2、3、4组合事件组,进行事件组的触发Display就是数码管的显示,通过软件定时器,每隔一秒钟通知这个任务来刷新显示Event_Sync就是事件组同步的任务了,就是当按键2、3、4事件都发生了,就会通知这个任务,执行下一步操作Modbus:单片机通过485接口,使用串口空闲中断加DMA的功能,通过二值信号量通知Modbus,然后Modbus任务进行协议的解析。
2024-12-19 16:56:33
1131
原创 FreeRtos开发之软件定时器
在很多应用中,我们需要用到一些定时器任务,硬件定时器受硬件的限制,数量上不足以满足用户的实际需求,无法提供更多的定时器,那么可以采用软件定时器来完成,由软件定时器任务代替硬件定时器任务。在硬件定时器中,我们是在定时器中断中实现需要的功能,而使用软件定时器时,我们是在创建软件定时器时指定软件定时器的回调函数,在回调函数中实现相应的功能。定时器任务实际执行消息队列发来的命令依赖于定时器任务的优先级,如果定时器任务是高优先级会及时得到执行,如果是低优先级,就要等待其余高优先级任务释放CPU权才可以得到执行。
2024-12-17 16:53:02
1114
原创 FreeRtos开发之事件实现多任务间的同步
变量 uxBitsToSet 的低 24位的某个位设置为1,那么被设置的事件标志组的相应位就设置为 1。任务 Task1 运行过程中调用函数 xEventGroupWaitBits,等待事件标志位被设置,任务 Task1 由运行态进入到阻塞态Task1 阻塞的情况下,串口接收到数据进入到了串口中断服务程序,在串口中断服务程序中设置 Task1等待的事件标志,任务 Task1 由阻塞态进入到就绪态,在调度器的作用下由就绪态又进入到运行态上面就是一个简单的 FreeRTOS 中断方式事件标志通信过程。
2024-12-16 16:53:47
1180
原创 FreeRtos开发之互斥信号量
前面学过,取值只有0与1两种状态的信号量称之为二值信号量。而互斥信号量是一种特殊的二值信号量,具有防止优先级翻转的特性。二值信号量主要用于同步:任务与任务间同步,中断与任务间同步,也就是说在中断中完成了某个操作以后,将二值信号量释放,然后在任务中获取到了信号量,这个时候就相当于知道了某个操作完成了,类似一种完成的信号或者说通知,这相当于我们在裸机编程时常定义的Flag,或者说是一种bool类型,只有True或者false,但是二值信号量不适合做资源管理。
2024-12-04 21:44:21
925
原创 FreeRtos开发之计数信号量
前面介绍过了计数信号量的定义取值只有0与1两种状态的信号量称之为二值信号量取值大于1的信号量称之为计数信号量计数信号量的取值也可以为1,但通常大于1,如果取值为1,相当于只有0与1两种状态,用二值信号量即可。任务 Task1 运行过程中调用函数 xSemaphoreTake 获取信号量资源,如果信号量大于0,Task1 将直接获取资源。如果信号量为0,任务 Task1 将由运行态转到阻塞状态,等待资源可用。一旦获取了资源并使用完毕后会通过函数xSemaphoreGive 释放掉资源。
2024-12-02 23:16:48
907
原创 FreeRtos开发之二值信号量
等到数据到来了,在中断函数中释放一个二值信号量,任务就立即从阻塞态中解除,进入就绪态,然后在运行时处理数据,这样系统的资源就会得到很好的利用。Task1 阻塞的情况下,串口接收到数据进入到了串口中断服务程序,在串口中断服务程序中调用函数xSemaphoreGiveFromISR 释放信号量资源,信号量数值加 1,此时信号量计数值为 1,任务 Task1由阻塞态进入到就绪态,在调度器的作用下由就绪态又进入到运行态,任务Task1 获得信号量后,信号量数值减 1,此时信号量计数值又变成了 0。
2024-12-02 20:55:57
875
原创 FreeRtos开发之消息队列
1、创建队列:动态2、队列删除3、发数据到队列,默认状态下是FIFO(先进先出),此时发送过去的数据会被放到队列后部xQueueSend() //任务中使用xQueueSendFromISR() //中断中使用4、发送数据到队列尾部,和上面两个相同的功能FIFO(队列先进先出)5、发送数据到队列头部6、从队列读取数据xQueueReceiveFromlSR() //中断中读取队列,一般用的很少,几乎用不着7、队列清空8、队列数据覆盖9、判断队列是满的还是空的。
2024-12-01 22:12:12
1049
原创 STM32开发之HAL库串口中断将数据写入环形缓冲区以及环形缓冲区读取数据
1、在STM32CubeMX创建完工程后,在uart1初始化位置使能中断。上面这部分使用信号量的操作,可以换成freeRtos,这部分原理是一样的。6、在串口中断中接收数据并将数据放到环形缓冲区。7、创建读写一个字节的函数,并且要用到锁。9、读数据就是在任务中进行数据的读取。5、创建全局的环形缓冲区。3、环形缓冲区写函数。4、环形缓冲区读函数。初始化这个环形缓冲区。
2024-11-16 16:00:07
567
原创 使用STM32CubeMX点亮LED
1、创建工程2、选择芯片属性我的最小系统板上有一个LED,使用PC13引脚控制这里将PC13引脚设置为GPIO_Output
2024-09-19 11:31:38
435
原创 Stm32CubeMX开发和HAL库
进入ST官网:https://www.st.com.cn/content/st_com/zh.html。这里我修改了库的安装路径,但是这里一定不能出现中文路径,否则安装会失败。首先以管理员模式打开CubeMX软件。在CubeMX软件安装HAL库。搜索STM32CubeMX。然后就会下载这个HAL库了。然后就可以安装这个软件了。,选择自己想要的进行下载。进入以后选择工具与软件。向下拖动就可以看到很多。
2024-09-19 09:14:50
574
原创 FreeRtos的执行流程
5、空闲任务和定时器任务设置好了优先级,为默认优先级0,stm32的中断的优先级数字越低优先级越高,FreeRtos的任务优先级数字越大越高,所以这里的空闲任务和定时器任务优先级很低,这样不会影响真正的任务的切换。3、main函数中创建任务:其中创建任务会自动分配内存等。在启动文件会先执行复位函数,进行系统初始化。2、配置好时钟后,就是进入main函数了。在任务调度中会创建空闲任务和定时器的任务。配置主频,比如F103配置72M。
2024-08-10 17:10:40
330
嵌入式linux搭建nfs服务器必备的两个工具:nfs-utils,portmap,以及S60nfs文件
2023-05-31
linux下多线程服务器编程
2022-07-28
Qt写的支持多个客户端连接的服务器
2022-07-20
飞腾上银河麒麟编译qt5.9.8,使用aarch64-linux-gnu-g++,可以在飞腾直接编译,也可交叉编译
2022-07-15
Qt自定义弹窗,可阻塞,可以点击确定和取消并且两个按键可以做不同操作,界面可根据需求修改
2022-06-17
Qt在linux和windows通过QStorageInfo类来获取某个特定磁盘信息,包括大小
2022-06-13
pjsip库的头文件文件夹
2022-04-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人