- 博客(271)
- 资源 (5)
- 问答 (2)
- 收藏
- 关注
原创 使用C语言+USRP B210从零开始实现无线通信(1) 基本情况介绍
近期,有同学成功使用taskBus进行AM/FM广播的收发,并提出了问题:有没有可能简单几步就实现数据传输呢?答案是肯定的。只要能传声音,那一定能传数据。不但如此,如果不考虑带宽、效率,在稳定的实验室环境下,实现起来很简单。本系列文章,我们带大家抛开GNURadio里现成的通信模块(如GSM),从零开始,一句句构造最简无线网络,实现双向数据互通。
2022-09-06 10:15:00 2631
原创 谁删了服务器?谈VC源码字符集和回车换行注意事项
在Windows Visual C/C++编程时,经常需要从Github或者其他既有项目中“借鉴”(呵呵哒)一些代码过来。这个时候,就要格外注意字符集和回车换行带来的编译问题。这类编译问题造成的错误千奇百怪,可能在编译时、链接时,甚至运行时造成困扰。尤其是运行时,很难发现,在极其倒霉的时候,会造成删库跑路或者惨痛的事故。
2022-08-24 21:35:39 575
原创 使用MSYS2和UPX显著缩小发布文件体积
对于经常发布桌面应用程序的攻城狮而言,当然希望自己的程序只要一个可执行文件,拷贝到任何位置直接双击就能运行啦。比如笔者,经常使用MSYS2 里的mingw64 Qt静态编译程序,以便只要一个可执行文件就能到处运行。以前,我用MFC静态编译很香。换成Qt后,感觉静态编译出来的程序,体积出乎意料的大,有的一个EXE文件就有20MB。用了UPX后,可以获得20%的高压缩率!...
2022-08-18 23:42:03 396
翻译 PC博物馆(6) 1975 IBM 5100 计算机
5100型是IBM的第一台小型计算机,也就是说,它不是大型机,而且被认为是世界上最早的便携式计算机之一。显然,对于IBM来说,在5100中使用解释器来完成APL是一项困难的任务,因此他们编写了一个仿真程序,这样就可以运行APL的S/360大型机版本——5100就像一台台式IBM S/360主机计算机,只运行APL。描述:“针中的干草堆-这种计算机芯片包含48000个独立的信息位,但它适合普通缝纫针的针眼。没有像现代计算机那样的独立CPU(中央处理器),下面看到的电路板是“处理器”-它有超过15个大型芯片。.
2022-08-13 11:56:26 1471
原创 UDP丢包替代:用PCAP实现C/C++以太网SDR吞吐
硬件实时系统和通用软件系统之间的交互永远是让工程师头大的问题。UDP/IP是一种较为高层的协议。但还可以通过以太网协议直接与硬件交互。本文就介绍了这种技术。
2022-08-12 11:56:10 2056 1
原创 PC博物馆(番外01)-城会玩,初中生开发实体尺规大航海游戏
发了好几期翻译的PC博物馆,本期发个番外,说说老软件写的小游戏。1992年,笔者读初中。当时小城人家里基本都没有电话、空调,更别说电脑了。比较幸运的是,矿务局淘汰了一批长城286给学校,电脑班的小伙伴们就写起了GWBASIC/QBasic。回想起在学校里的经历,和伙伴们一起设计这个小游戏是最开心的事情。.........
2022-08-06 22:04:34 1205 3
翻译 PC博物馆(5) 1975 IMSAI 8080
原文链接:http://oldcomputers.net/IMSAI由William Millard于1972年创立。他们提供的服务非常先进。一些人称IMSAI为另一个计算机系统的第一个克隆,在本例中,是MITS Altair 8800的第一个复制品,这是一台仅在几个月前发布的类似计算机。由于S-100总线的设计,它甚至可以接受与Altair相同的卡。IMSAI不是唯一一台复制MITS S-100总线方案的计算机,但它是第一台。...
2022-08-06 16:30:32 559
翻译 PC博物馆(4) 1975 The Digital Group
苏丁拥有该地区为数不多的能工作的Mark-8电脑之一,志同道合的爱好者从四面八方赶来,只是为了看看他的系统,并为他们的系统寻求帮助。贝米斯对苏丁的成就印象深刻,并说服苏丁,他们应该联手成立一家公司,因此贝米斯,苏丁,和他们的妻子,成立了数字集团,以市场和销售苏丁的改进Mark-8设计。他们早期的系统只是“一堆板”,但到1976年10月,该数字集团推出了他们的“加盖”系统——他们的整个系统现在可以订购重型机箱和阳极氧化铝前面板,全部采用DG棕色油漆方案。这也是当他们把他们的标志从突兀的块状文字改为圆形标志。.
2022-07-30 22:05:23 354
原创 【已解决】MSYS2 QtCreator Clangd 代码分析找不到 mm_malloc.h的问题补救
近期学校的机房里升级了msys2,遇到了QtCreator的代码提示"In include file : 'mm_malloc.h' file not found"问题,不算完全解决,因为要上课,采用了临时的补救方法。
2022-07-30 19:50:44 1343 1
翻译 PC博物馆(3) MITS Altair 8800
ALRAIR 8800 是一个神奇的PC。首先,它使用了总线的概念,使得可以接驳各种标准硬件扩展功能。而后,它的原始版本竟然是没有键盘和显示器的,使用LED和开关输入输出。
2022-07-24 19:33:26 1426
翻译 PC博物馆(2) 1972年 HP-9830A
大多数惠普文档将HP-9830A称为计算器-甚至用户手册也将其称为计算器。此外,据Hp.com联合创始人比尔·休利特(BillHewlett)描述,早期的HP-9100A具有这样的特点“如果我们称它为计算机,它会被我们客户的计算机专家拒绝,因为它看起来不像IBM。它采用了一个单行显示器,实时上,后来DOS和早期的Unix下的Line-Editor也是一行行的编辑,行号就是用来定位行的。......
2022-07-23 19:13:56 281
翻译 PC博物馆(1) 1970年 Datapoint 2000
这里显示的Datapoint2200实际上标有CiiHoneywellBull,这是一家法国计算机公司,使用Datapoint2200作为智能终端FEP“前端处理器”,用于其迷你计算机GE-58-Level61/60,于1974年发布。最终,英特尔和TI都为2200创造了单芯片微处理器-英特尔的原型芯片被称为Intel1201,TI的芯片被称为TMX-1795,但两家公司都花了一年多的时间才完成,而且两个芯片都太慢了,或者几乎不起作用。110VAC美国版右侧只有一个红色断路器。...
2022-07-22 12:20:23 741
原创 机器学习小试(11)验证码识别测试-使用Qt与Tensorflow2进行深度学习实验
由于非常熟悉nativeC开发,学习Python的过程中还老是忘不了Qt,准备用Qt产生训练样本。而后,使用Qt的GUI在后台调用python进行实验。实验使用Tensorflow2 可以有效的识别生成的验证码的文字。
2022-07-22 10:44:42 1102
原创 机器学习小试(10)使用Qt与Tensorflow创建CNN/FNN测试环境
继续介绍使用Qt+Python搭建简单但灵活的CNN实验工具神经网络的思路和方法。实验工具神经网络,使得可以迅速读取自定义的训练数据,并验证AI在当前需求场景下的区分度和可用性。
2022-07-21 22:28:04 1005
原创 可用于SDR的C语言纠错编码通用算法收集(2)-李德-所罗门(RS)编码
为了配合学生借助进行纯控制台STDIO模块的开发,我们收集了手头的通用纠错算法,便于学生进行开发学习。今天介绍李德-所罗门(RS)编码。
2022-07-16 14:00:00 1425
原创 可用于SDR的C语言纠错编码通用算法收集(4)-LDPC低密度奇偶校验码
为了配合学生借助进行纯控制台STDIO模块的开发,我们收集了手头的通用纠错算法,便于学生进行开发学习。今天介绍LDPC编码。
2022-07-16 10:55:08 879
原创 可用于SDR的C语言纠错编码通用算法收集(3)-卷积码与Viterbi译码
为了配合学生借助进行纯控制台STDIO模块的开发,我们收集了手头的通用纠错算法,便于学生进行开发学习。今天介绍卷积码以及维特比译码算法。
2022-07-16 09:17:44 656
原创 可用于SDR的C语言纠错编码通用算法收集(1)-朴素字典查表BCH纠错
在开设了SDR软件无线电课程后,有余力的学生开始尝试开发自己的小通信电台,实现HelloWorld的无线传输。在实验过程中,一定会遇到纠错的问题。基于GUNRadio现有的纠错模块,基本是使用几类固定的编译码类型,且封装的很深。陆续开发+收集一些开源的通用编译码器,供SDR使用。...
2022-07-15 11:51:03 936
原创 避坑必看:C++移植C语言结构体char短整形导致生产事故分析
C++中直接使用C语言短整形结构体成员时,要注意很多短整形的实际类型为char.如果错误的利用自动类型函数重载完成字符转换,存在把短整形ASCII化的潜在隐患。本例子是一次现实生产事故的简化介绍。.........
2022-06-30 20:26:56 600 1
转载 工科应该重视C/C++Qt的学习
前面有学生问我为什么学校还在教授C语言、Qt,为什么不学习Python,我说,你可以边学C++Qt,边学Python,一点不矛盾啊!以后要解决卡脖子问题,有的是用武之地。这里转载知乎上看到的一个文章,权当科普啦...
2022-05-24 23:20:02 1283 3
原创 基于进程管道的SDR最大吞吐速率测试
使用一个用例程序,测试了级联STDIO管道在不同操作系统上的极限吞吐能力。在 i7 6700K DDR4-2666MHz 普通计算机上,极限可达到7GByte/s, 也就是 56Gbps的带宽。
2022-05-05 10:26:36 386
原创 极致敏捷-使用C语言在Taskbus中一天实现ADS-B接收机和实时飞行地图
我们如何用一天时间,把毫不相干的2个工程整合在一起,形成对ADS-B飞机航迹的实时接收、显示呢?答案是使用管道技术。taskBus轻量级管道总线,使得我们非常迅速的完成了开源代码、团队历史代码能力的迁移,构造出无需python\html\web的实时ADS-B接收机。项目在Linux, win10下测试通过,同时提供发行版,理论上可以直接在具备USRP B210的计算机是运行。但重要的不是项目本身,而是基于管道构造敏捷开发平台的思维。这种思维对迅速整合能力有非常关键的意义。......
2022-04-28 13:48:43 1840 7
原创 Qt lambda槽在跨进程功能发现与参数同步中的应用
Qt 5 和 Qt 6 在引入 lambda 槽后,对动态创建控件提供了更多的方便。背景taskBus软件无线电平台使用一种多进程
2022-04-26 19:11:30 1027 3
原创 50行实现C语言FM收音机-Taskbus Stdio封装器在SDR课程中的应用
本文介绍了一种仅用C语言本科教材的知识,就能参与完成实时SDR接收实验的方法。该方法用于教学实验,显著提高了学生的参与度。学生感受到,如此简单的一个小程序,就能参与到一架FM收音机的实时播音中去,并深刻了解自己所做的程序在完整处理流程中的作用。通过不断替换模块,学生可以逐步深入,直到实现完整的收音机SDR模型。通过C语言的信号处理,能够避免SDR实验课中对GNURadio嵌套调用过程追溯给普通学生带来的困扰。...
2022-04-19 15:51:04 2388 2
原创 特性提醒-Qt6录音QIODevice::readAll()返回奇数字节。
主要的问题:我在一个项目中使用QMultiMedia模块录音,假设了 QIODevice::readAll() 每次必然返回整数组样点。比如立体声,16位,则返回的字节数必然是4的整数倍。这个行为从Qt4、Qt5都没有出问题。结果Qt6时,在Win10下返回了奇数个字节。如果不做缓存,后续的样点字节就被破坏,声音就很怪很怪。我已经在Qt的社区反馈了这个问题:A noteworthy issue: QAudioSource returns a QIODevice object, whose QIODev
2022-04-16 12:48:40 3032 1
原创 QtCreator对CMake的支持与局限-CMake快速上手小记
通过近期对QtCreator、CMake的试用,已经把现有的两组较为完备的项目迁移到CMake。在试用期间,还是遇到了一些坑,也对CMake的套路有了一些基本的认识。本文介绍通过在QtCreator下新建空项目,获得CMakeLists.txt模板的开始方法。围绕CMake变量表的获取与查看,介绍如何快速用变量表完成判断。评价目前Qt CMake与IDE的一些特点。CMake与QMake的工程对照见我的工程taskBus和qplanetosm。1. 快速开始一次迁移1.1 从模板开始对于
2022-04-14 22:32:24 3957 3
原创 从QMake到CMake-带有插件与ActiveX的Qt .pro工程向MSYS2-CMake移植实验
鉴于 Qt6 已经选择了CMake作为基本的源码编译工具,看来我们不得不好好熟悉一下CMake的用法了。从网上和Qt新建工程的模板出发,花了3天时间,基本熟悉了CMake的语法和原理,并成功用笔者的一个OpenStreetMap客户端工程作为实验,为其添加了CMake支持。本文主要介绍一下迁移的基本过程,以及注意事项,最后,会进行一个小的总结。该工程在我的博文中有详细描述,完成迁移的项目可以参考源码https://gitcode.net/coloreaglestdio/qplanetosm...
2022-04-05 19:22:02 2748 1
原创 MSYS2显著简化Kafka在windows C++下的使用门槛
熟悉FPGA硬件和实时软件开发的团队,一般对消息队列等中间件不是很熟悉。在以前的各类应用中,主要只涉及FPGA/DSP和上位机之间通信,团队积累了不少“点到点”高速吞吐+双向水位控制代码。因此,即使遇到PC之间的交互,也习惯使用自定义的TCP、UDP协议搞定一切。但此单合同涉及的后续处理流程十分复杂,需要涉及多个独立的可伸缩节点,以及适应未来部署后用户的二次扩展应用。为了避免用户接触过多的底层协议,并降低伸缩节点带来的配置文件修改维护耦合度, 我们新进的软件部负责人建议公司尝试用消息队列取代传统的UDP/
2022-04-02 23:20:31 3982 2
原创 程序猿的口味-从C++STL聊到MSYS2-Qt
一直以来,我在教授C++语言编程课程的时候,总是在泛型上慌得很,生怕自己的半吊子C++知识贻笑大方。还好我发现同学们和我一样都是糊涂虫,只满足于把STL的容器和算法当作简单类型用就完了。印象深刻的一次尴尬就是学生问我:丁老师,怎么你给的例子的链表,和std::list的链表差别这么大,学了泛型,怎么还是看不懂STL库的代码呢?我只能说,师傅领进门,修行靠个人,我也不懂哩!其实老师眼都看花了,也是看不懂。通过20年的教学,我悲哀的发现一个事实:哪怕学完一本教材,让我实现一个链表或者字典,也绝对不会长得像ST
2022-03-19 23:10:32 6520 2
原创 解决MSYS2 git-gui.ico 图标BUG
最近在MSYS2里面开发Qt, 遇到一个奇怪的问题。在bash里面运行 git-gui,报错:bitmap "/usr/share/git-gui/lib/git-gui.ico" not defined while executing"wm iconbitmap . -default $oguilib/git-gui.ico" invoked from within"if {[is_Windows]} { wm iconbitmap . -default $oguilib/git-gui.
2022-03-05 20:38:56 256
原创 开源视频会议白板系统-openMeetings 6.2 局域网搭建官方教程
openMeetings是一种基于Java的BS架构会议系统,与WebRTC底层Kurento共同实现完整的流媒体会议系统。这套系统具备实时音视频、白板(画画、PDF、Word、Excel等)、桌面共享等功能。不过,搭建起来,其依赖项相当多。尝试了1天,找到了一个PDF说明,按部就班一次完成部署,非常棒。Installation of Apache OpenMeetings 6.2.0 on Ubuntu 21.04在这里分享一下。如果在互联网部署,还需要进行证书设置,参考Installation
2022-02-11 12:34:53 4291
原创 回忆2012-入坑OpenStreetMap10年纪
2007年,笔者第一次接触Open Street Map。由于一直出于自己的兴趣,断断续续玩到2012年,第一个稳定的OpenStreetMap渲染服务器虚拟机镜像搭建完成,同时完成了部分Qt/MFC客户端代码。一晃十年过去了,2022年1月,基于Manjaro的最新VMBox服务器镜像已经发布,具体参见www.goldenhawking.org:8088作为末日危机、全球断网前必须收集的重要数据财富,OpenStreetMap有很多值得书写的知识点、亮点。每年更新一版全球镜像,可玩性很高,从PostG
2022-01-13 23:06:07 1186 3
原创 现场工程师大晒:使用 ImDisk 与 junction 显著提高机械盘阵高并发吞吐性能
近期,协助朋友公司调优了一个奇葩的系统。由于盲目扩充规模,导致基于松散文件接口的多进程机械盘阵高并发计算性能下降,无法实时处理。虽然没有源码,但通过现场工程师的一顿操作猛如虎,联合 ImDisk内存磁盘、junction NTFS 文件夹链接、现场开发Qt配额控制、强制解除占用句柄,多管齐下,在24小时内完成了系统部署。
2021-12-23 21:52:12 1513 5
原创 Qt 6采用cmake替代qmake构建Qt
最近阅读了官方论坛的几个文章CMake is the build system for Qt 6Qt and CMake: The Past, the Present and the FutureBuild System Changes in Qt 6可以肯定的是为了支撑Qt EVERYWHERE 的愿景,找到一个跨平台的构建工具已经伤透了开发团队的脑筋。采用CMake应该是理智而无奈的选择。首先,推动这个想法的最大需求,就是编译Qt本身的复杂性。几个文章主要讨论的是编译Qt库不用qmake而用c
2021-12-13 00:23:52 5262 1
原创 自由空间电磁波传输损耗公式(弗里斯公式)里的常数-32.44dB到底怎么来的?
几个月前,我们几个半吊子讨论了深空通信的问题, 原文看这里。今天,和天线专业的老师聊天,才弄清楚一些问题。看起来隔行如隔山。前面我们讨论的几个很民科的议题包括:自由空间耗散公式(弗里斯公式)里的常数 -32.44 dB 到底和气压有木有关系。原因是当时在网上看到一个文章,提到了这个公式是在一个大气压下应用的。有没有方法计算天线的特性?查阅资料,发现方向图和有限元分析就是干这个的,不过好用的建模分析软件一般很专业,基本都是要花钱的。使用Matlab 的天线工具箱,可以研究一些简单的模型。1.弗里斯公
2021-11-15 22:41:33 11814 2
原创 iFFT逆运算-使用软件无线电GQRX显示简笔画信号
在新学期,我们要开始介绍信号处理的知识。同学们很快就要接触FFT与iFFT运算了。这里抛砖引玉地先安排一个好玩的实验,我们制造一个奇怪的信号,使得使用软件无线电接收机接收后,可以显示出瀑布图片,如下图所示:上面这个图片是如何显示出来的呢,又用到哪些知识呢?其实,学完这个学期的课程,基本就可以理解上面的操作了。其主要原理是通过图像逐行进行iFFT运算,生成时域波型。适当调整各行持续的时间长度,使得GQRX瀑布图卷动一行和图像变换一行的时间一致即可显示出图。主要的知识脉络:1. 图像灰度、二值化由于我们
2021-09-08 23:33:56 898
原创 freeCAD - Qt开发的工业设计软件
关于后续机电专业的教学,昨天校里开了个会,认为应该把工业软件的二次开发作为计算机教学的重要部分。提到本科机械专业的CAD教学,学校一直用的AutoCAD。有老师介绍了国内CAD的研究情况,由于没有接触过这个行业,我也听不太明白。比较有印象的是,合肥工业大学的博士介绍了freeCAD, 还是挺感慨的。对开源的CAD软件,一直没有关注过。看到现场演示,虽有心理准备还是很吃惊。这种工业级别的软件,让我们来研究如何进行教学和二次开发,一点基础也没有。虽然源码可以从https://github.com/Free
2021-08-25 15:08:24 2463 6
原创 大道至简-基于C的库封装发布技术
在教研一线工作了20多年了,发现一个问题——很多小微企业保护自身知识产权的意识很好,但是做软件功能封装的技术却亟待提高。曾经有公司做了一款分布式有害气体监测系统,灵敏度、误报率、检测气体种类都满足要求,就是不想公开自己的传输数据格式。由于要集成到煤矿的信息化系统里,提交了一个接口库,大量使用std::string交互数据。这样一弄,就限定了编译器的版本,导致传感器的升级、大系统的升级被绑定在一起了。今天就集中讲一讲如何不花很多时间精力,就设计出一个广泛支持多类开发工具链的功能库。1 最简单的库封装标准C
2021-08-22 16:55:39 680
Lenovo T490 温度墙修复软件
2023-12-31
Qt FCGI 例子
2020-10-12
gqrx-spectrogram.zip
2020-01-26
基于Qt的多线程流水线异步服务器稳定版
2014-06-07
世界地名对照表Postgres 9.1 导出
2012-09-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人