自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(158)
  • 资源 (3)
  • 收藏
  • 关注

转载 如何统计项目代码行数

find . "(" -name "*" ")" -print | xargs wc -l1、打开终端,用cd命令 定位到工程所在的目录。2、调用以下命令即可把每个源代码文件行数及总数统计出来(1)包括空行(会列出每个文件的代码行数):find . "(" -name "*.m" -or -name "*.mm" -or -name "*.c" -or -name "*.h" -or -name "*.xib" -or -name "*.pch" ")" -print | xargs.

2020-11-24 11:20:13 2

转载 解决:Error: Could not decode “*.cpp“ with “UTF-8“ - encoding. Editing not possible

点击 【select encoding】,如下,如果有 UTF-8,就选择 UTF-8, 没有的话,就选择,System, 然后【按编码重新载入】,就解决了。如果没有找到uft-8或者system,选中:GBK/windows-936-2000/CP936/MS936/windows-936)tip:文件从window上传到Ubuntu后会显示乱码,原因是因为ubuntu环境设置默认是utf-8,Windows默认都是GBK. Windows环境下,Qt Creator,菜单->工具-.

2020-11-24 11:12:01 3

转载 C++ cout打印生成两位16进制数

在头文件iomanip里的函数setw()是做什么用的?setw指的是2113定用cerr和cout输出数值时每个数值占用的最小宽度,程序5261必须4102包含头文件<iomanip.h>,setw设置的宽度仅对紧接着1653它的数值有效。<iomanip>是C++里的I/O流控制头文件。当希望格式化输出时使用。属于std名空间,使用其中的函数时使用该头文件,函数名前要增加std:: 或者在include之后使用using namespace std;常用函数有:s.

2020-11-20 12:06:28 19

转载 C语言之一维数组与指针

一维数组:假如有一维数组如下:char a[3];该数组有3个元素,数据类型为char型,地址空间如下。如果想访问数据,直接使用a[0]、a[1]、a[2]取出相应地址空间的值即可一级指针:指针即地址,char *b即定义一个指向char型数据的指针,int *b即定义一个指向int型数据的指针。int a=5;int *b=&a;例子解析:定义一个int型数据a,值为5,定义一个指向int型的指针b,b的值为a的地址。使用*b就是b指向地址的值。地址空间如

2020-11-18 08:28:58 22

转载 《CANOpen》 学习笔记

《CANOpen》 学习笔记4CANOpen 学习笔记4 现场总线 CANopen 设计与应用 第一章 通信和设备模型 1 通信层和参考模型 第二章 物理层 1 位定时和位填充 第三章 CAN协议 1 报文格式 第四章 应用层 1 基本原理 2 通信对象 21 过程数据对象PDO 211 通信参数 212 PDOP 的 CAN 标识符 213 PDO 链路 214 PDO 的通信类型 215 禁止时间和事件计时器 216 PDO 映射参数 22 服务数据对象SDO 23 同步 3 对象字典《现场总线

2020-11-17 14:31:16 24

转载 教你使用windeployqt工具来进行Qt的打包发布

Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,如果自己去复制dll,很可能丢三落四,导致exe在别的电脑里无法正常运行。因此 Qt 官方开发环境里自带了一个工具:windeployqt.exe。问题的提出既然是要发布自己的程序,那么就需要,在Release中编译运行。具体方法如下图所示。1.点击qt界面左下角的图标;2.选择Release;3.点击编译运行即可;生成的程序运行正常之后,找到项目的生成目录。比...

2020-11-17 09:52:07 13

转载 Linux串口编程——清空输入输出缓存

背景在我们的工作中,串口是一种比较常用的数据传输方式。在某些应用场景下,当程序启动并打开串口后,我们不希望读出串口打开之前的输入缓存数据(即内核驱动已接收但是并未被应用层读出的数据),因此需要对输入缓存数据进行清空(刷清、丢弃)操作。下面以Linux系统上串口编程为例进行说明:测试环境硬件环境:PC操作系统:Ubuntu 14.04虚拟机测试代码方法一fd = open("devpath", O_RDWR|O_NOCTTY);usleep(200000);tcflu...

2020-11-13 14:23:46 15

转载 ubuntu串口调试工具RS485

RS485在linux下的调试最近做485通讯,在这里梳理一下学习的内容。1、ubuntu串口调试工具ubuntu下的串口调试工具为:cutecomsudo apt-get install cutecom 打开sudo cutecom2、ubuntu串口查找sudo cat /proc/tty/driver/serial可以获得如下: 0: uart:16550A port:000003F8 irq:4 tx:0 rx:0 1:..

2020-11-11 16:23:00 17

转载 UART和RS232/RS485的关系是什么?RS485在linux下的调试 ubuntu串口调试工具

串口通讯是电子工程师和嵌入式开发工程师面对的最基本问题,RS232则是其中最简单最常用的通讯方式。但是初学者往往搞不清有关的名词如UART和RS232或RS485之间是什么关系,因为它们经常被放到语句中同等的位置使用。在百度搜索二者的区别,可以看到排在最前面的答案充斥着混淆的概念。就此,谈谈我对这几个概念的理解,希望能帮初学者厘清它们之间的关系。~~ 通讯问题,和交通是一样的。串口通信,我们这里可以用公交来类比。 公交运行可以简单分成...

2020-11-11 13:15:57 42

原创 TPDO建立映射的顺序理解:

TPDO建立映射的顺序理解:1:对象字典:2:TPDO映射UNS32实际是被映射的对象地址 主索引(16bit)+子索引(8bit)+数据大小(8bit--位数)3:TPDO按照标准发送格式附加:1800 1801 1802 等等是配置TPDO发送的属性配置附加:RPDO...

2020-11-07 16:52:12 17

原创 TPDO --RPDO 对象字典地址 1400 1600 1800 1A00

TPDO映射组:1A00 00 :TPDO1 映射组1A00 01 :TPDO1 映射11A00 02 :TPDO1 映射21A00 03 :TPDO1 映射31A00 04 :TPDO1 映射41A00 05 :TPDO1 映射51A00 06 :TPDO1 映射61A00 07 :TPDO1 映射71A00 08 :TPDO1 映射8TPDO2:1A01 00...

2020-11-07 15:26:31 15

原创 CanOpen 节点和心跳保护+NMT 简答解析(笔记)

解析;节点保护,从站自我保护,心跳保护,主站主动处理错误,两者选其一NMT 通过发送CS命令,切换从站的状态,比如 :从预操作 -> 运行

2020-10-29 15:48:42 39

原创 CanOpen PDO简单解析(笔记)

PDO说明:举例说明某伺服驱动器COBID:大家只要加深对下边这几个十六进制+NodeId理解即可:0x180 0x280 0x380 0x480 0x580(SDO 回复用到)...0x200 0x300 0x400 0x500 0x600(SDO 发送用到)cobid = 0x*** + NodeId...

2020-10-29 15:41:29 34

转载 Ubuntu16.04如何调整屏幕分辨率至1920*1080

1 引言ubuntu16.04桌面版安装好后,发现屏幕分辨率调整选项里没有1920x1080这一选项,经过一番研究,可通过如下方式进行屏幕分辨率设置,以下操作均在ubuntu16.04桌面版操作。不要用远程连接操作,否则xrandr命令会无法监测到显示器信息。2 操作步骤1)(快捷键:Ctrl+Alt+T)打开终端,在终端上输入命令:cvt 1920 1080显示如下:2)继续在终端上输入命令:xrandr显示如下:其中 Virtual1 为显示器...

2020-10-26 09:30:15 40

转载 ubuntu中vi编辑器键盘错乱的问题

Ubuntu安装完成后vi编辑器键盘不能正常使用,使用下面方法解决:编辑文件/etc/vim/vimrc.tiny,将“compatible”改成“nocompatible”非兼容模式;并添加一句:set backspace=2 转载自:http://blog.csdn.net/ai_net/article/details/7710324...

2020-10-26 08:48:57 10

转载 虚拟机ubuntu16.04 出现“The system is running in low-graphics mode”的亲测解决方法 + 修改xorg.conf 屏幕变小的解决办法

Ubuntu16.04 cp xorg.conf.failsafe xorg.conf虚拟机Ubuntu16.04无法进入图形界面 The system is running in low-graphics mode安装的虚拟机Ubuntu16.04 64位本可以正常使用,在安装了许多软件包(caffe)后不知哪里配置出现问题,出现The system is running in low-graphics mode错误,尝试多种方法,以下方法适用:Ctrl+ALT+F1 进入控制台输入用户名.

2020-10-24 13:59:26 35

原创 ubuntu16.04 默认用wine打开windows软件配置

1:在软件中心安装好wine2:双击windows程序的xxx.exe程序,显示载入错误,原因是默认用归档程序打开的, 右键exe ->使用其他程序打开,显示->推荐应用程序第一个默认是归档程序打开, 右键归档程序,点击忘记关联 ,即可。3:这时候wine Windows Program Loader 默认变第一个了,点击确定即可 下次双击ubuntu下的exe即可。...

2020-10-24 10:55:19 14

原创 Ubuntu16.04 下找不到软件中心的解决方法

1: 终端输入一下命令直接打开software-center2:发现打不开后,输入安装命令sudo apt install software-center3: 一路Yes 安装后,再次终端输入software-center4:打开之后,在左侧的启动器又见ubuntu软件中心,锁定启动器,下次,单击打开即可。另外:ubuntu16.04升级到18.04之后,软件中心找不到,解决办法: 查看software-center 源 sudo apt list | e.

2020-10-24 10:31:59 70

原创 QTableWidget 如何通过属性配置+代码实现选中单行 + 设置单元格不可编辑

一:属性栏设置setSelectionMode : SingleSelectionsetSelectionBehavior : SelectRows二:直接通过代码设置QTableWidget *table = new QTableWidget;table->setSelectionMode(QAbstractItemView::SingleSelection);table->setSelectionBehavior(QAbstractItemView::Se...

2020-10-15 16:49:24 21

转载 Qt之QCheckBox

简述QCheckBox继承自QAbstractButton,它提供了一个带文本标签的复选框。QCheckBox(复选框)和QRadioButton(单选框)都是选项按钮。这是因为它们都可以在开(选中)或者关(未选中)之间切换。区别是对用户选择的限制:单选框定义了“多选一”的选择,而复选框提供的是“多选多”的选择。尽管在技术上可以通过复选框来实现单选框的行为,反之亦然,但还是强烈建议使用众所周知的约定。详细描述QButtonGroup可以用来在视觉上把许多复选框组织在一起。只要复选框被

2020-10-14 11:04:22 23

原创 在Ubuntu软件中心中搜索wine,出来的几个wine软件都没有安装选项

在Ubuntu软件中心中搜索wine,出来的几个wine软件都没有安装选项,1、更新源终端下命令:sudo apt-get update2、安装wine终端下命令:sudo apt-get install wine3、如果安装wine是遇到问题, 可修复依赖。终端下命令:sudo apt-get install -f...

2020-10-14 08:09:08 26

转载 Qt中new 之后不需要delete的情况

QT的父子对象机制是在 QWidget和QOject中实现的。当我们使用父对象来创建一个对象的时候 ,父对象会把这个对象添加到自己的子对象列表中。当这个父对象被删除的时候,它会遍历它的子对象类表并且删除每一个子对象,然后子对象们自己再删除它们自己的子对象,这样递归调用直到所有对象都被删除。这种父子对象机制会在很大程度上简化我们的内存管理工作,减少内存泄露的风险。我们需要显试删除(就是用DELETE删除)的对象是那些使用NEW创建的并且没有父对象的对象(切记是new的才要delete,通过成员函数获得的对

2020-10-12 16:21:23 17

转载 QT之CheckBox单项选择与多项选择

QT之CheckBox单项选择与多项选择开篇之叙今天简单的给大家介绍下CheckBox的单项选择与多项选择。我们在使用CheckBox时,就好比我们做选择题一样,有单项,也有多项选择题。那么,我们QT能不能做到这效果呢,答案是肯定的。怎么做?其实很简单。我们先看看效果图效果图这里我们看到的是多选项我们再来看看单项选择好了,到了这里相信大家都想赶紧看看代码了。上代码//其实方法很简单,你只需要这样做。void ButtonGroup::initCheckBox.

2020-10-12 16:09:37 21

转载 Ubuntu 16.04 常用软件安装命令

1 简介Ubuntu 16.04安装完后,还需要做一些配置才能愉快的使用,包括添加软件源、安装搜狗输入法、Chrome浏览器、网易云音乐、配置快捷键、安装git等等,下面就跟着我来配置吧,just do it 2 版本选择如果你是小白,不想折腾,可以直接选择安装deepin linux,中文名”深度Linux”,这个是国内目前最好用的Linux之一,开箱即用,常用软件都安装好了,甚至连最新版的QQ都有,mac风格的界面也很漂亮。但是,作为一个程序员,还是要使用Ubutnu,之前博主用过Ub..

2020-10-12 11:42:47 184

转载 powerlink介绍

1.总体介绍Powerlink是一种基于IEEE802.3的纯软件方案,100%与IEEE802.3以太网保持一致。但是它在不同的层次都有自己的定义,并很好地与IP,TCP,UDP等进行了适当的结合。在数据链路层(DLL层)作了分时管理的定义,同时在网络层和应用层的限制性的定义。Powerlink的一些应用数据可以使用IP协议进行传输。同时IP数据在异步阶段传输。Powerlink在应用层使用CanOpen协议。Powerlink定义了自己的路由管理机制,可以完成powerlink网段之间的..

2020-10-09 09:45:35 49

转载 Qt控件提示的使用方法和对QDialogButtonBox的理解-鼠标悬浮在上时显示一下内容

今天工作中遇到的问题:- Qt控件提示Qt编写界面的时候,有时候需要进行提示,即鼠标悬浮在上时显示一下内容,提示客户需要进行什么样的操作。遇到这种问题,Qt有一个专门的属性tooltip,通过这个属性,输入的内容就可以在鼠标放在对应控件上显示提示内容啦!当然,对于QLineEdit这样的控件来说,如果当你没有输入的时候,或许需要有个提示,告诉客户不能为空,这时就可以用属性placeholderText,其字面意思是占位文本,就是当里面没有输入时,用灰色的字体显示的一种提示符。这两个属性就是Qt常用的

2020-10-07 18:11:59 62

转载 Qt绘图的相关使用方法

今天主要想复习并学习一下Qt的绘图功能,简单的二维绘图主要使用QPainter进行绘图,只要在任意QWidget内部重写paintEvent(QPaintEvent *)方法,并且内部使用QPainter进行绘图,就可以绘制一个图形,例如:void SimpleExampleWidget::paintEvent(QPaintEvent *){ QPainter painter(this); painter.setPen(Qt::blue); painter.setFont(QFont("

2020-10-07 18:02:10 4

转载 设计模式—职责链模式(将要求提交给小领导,每个人都有一个顶头上司,直到有人能处理为止)

今天使用不同品牌的手机和在其上面安装不同的应用举例子:#ifndef MOBILE_H#define MOBILE_H#include <QDebug>class HandsetSoft //手机软件抽象类{public: virtual void Run() = 0; virtual ~HandsetSoft(){}};class HandsetGame final : public HandsetSoft //手机游戏{public:

2020-10-07 14:53:45 11

转载 设计模式—合成/聚合复用原则的区别简单分析

合成/聚合复用原则,尽量使用合成/聚合,尽量不要使用类继承合成和聚合都是关联的特殊种类聚合表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分合成则是一种强的‘拥有’关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样比如:大雁有两个翅膀,翅膀与大雁就是部分和整体的关系,并且它们的生命周期是相同的,于是大雁和翅膀就是合成关系而大雁是群居动物,所以每只大雁都属于一个雁群,一个雁群可以有多只大雁,所以大雁和雁群是聚合关系合成/聚合复用原则的好处是,优先使用对象

2020-10-07 14:16:52 11

转载 设计模式—迭代器模式(迭代器实现的基本原理和思路)

最后,在main函数中添加乘客,然后迭代打印结果:#include "iterator.h"#include <QDebug>int main(int argc,char* argv[]){ ConcreteAggregate *a = new ConcreteAggregate(); a->set("大鸟"); a->set("小菜"); a->set("行李"); a->set("老外"); a-&gt

2020-10-07 14:04:22 14

转载 设计模式--组合模式

组合模式:将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性这里使用公司总部和分公司来举例:#ifndef COMPANY_H#define COMPANY_H#include <QString>#include <QDebug>#include <QList>class Company //公司类,抽象接口{public: explicit Company(QString n

2020-10-07 12:16:13 9

转载 Error mounting /dev/sda1 at /media/XXXX: Command-line `mount -t “ntfs“ -o

我的电脑是在win10下装的ubuntu16.04双系统,今天进入ubuntu系统访问win10磁盘,出现如下错误:、可能原因:上一次使用win10后使电脑睡眠,没有完全关机,这次开机直接进入ubuntu系统,访问win10磁盘报错。解决方法:1.在终端输入如下命令,查看分区挂载情况sudo fdisk -l2.修复挂载错误的相应的分区,如提示中的/dev/sda5,输入:sudo ntfsfix /dev/sda5现在...

2020-10-07 09:55:52 14

转载 普通的抽象工厂模式 + 简单工厂模式改进的抽象工厂模式+在简单工厂模式中使用反射技术来改进的抽象工厂模式

抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类!这个例子也可以用简单工厂模式+反射+读取配置文件来完成,这样更加简洁!!!普通的抽象工厂模式#ifndef USER#define USER#include <QString>#include <QtDebug>class User{public: User() = default; int getID(){return _id;} void setI

2020-10-07 09:39:46 13

转载 C++11之final关键字

-----------------------------------------------------------------------------一、禁用继承C++11中允许将类标记为final,方法时直接在类名称后面使用关键字final,如此,意味着继承该类会导致编译错误。实例如下: class Super final { //...... }; ------------------------------------------..

2020-10-07 08:56:18 10

转载 装饰器模式和代理模式的区别

代理模式和装饰器模式很像,这里用【到咖啡馆喝咖啡】作例子来讲解。基础实现定义一个咖啡的接口。public interface Coffee { /** * 打印当前咖啡里有什么 */ void printMaterial();}定义一个苦咖啡的实现。public class BitterCoffee implements Coffee { @Override public void printMaterial() {

2020-09-29 11:23:27 31

原创 为什么说装饰器模式是运行时扩充,而继承是编译时扩充

实例1:装饰器模式主要是为了扩充一个类的功能,也就是说,它把一个类进行了一定的装饰,使它有了新的功能,但保证了类原有的功能。实现的方法通常是把原有类作为装饰类构造函数的一个参数进行传入。咋一看,好像装饰器模式和继承没什么区别,都是保证原有的功能,然后在扩充功能。但其实区别还是挺大的,装饰器模式最主要的优势是比较灵活,因为它修饰哪个类是在运行时才确定的;而继承中,继承哪个类是在编写哪个继承类的时候就要确定下来的,也就是说继承是编译时确认的。什么,有点晕?且看下面的例子: 1 //Compo

2020-09-29 09:53:26 77

转载 设计模式中 聚合和组合的区别?

组合和聚合是有很大3区别的,这个区别不是在形式上,而是在本质上:比如A类中包含B类的一个引用b,当A类的一个对象消亡时,b这个引用所指向的对象也同时消亡(没有任何一个引用指向它,成了垃圾对象),这种情况叫做组合,反之b所指向的对象还会有另外的引用指向它,这种情况叫聚合。在实际写代码时组合方式一般会这样写:A类的构造方法里创建B类的对象,也就是说,当A类的一个对象产生时,B类的对象随之产生,当A类的这个对象消亡时,它所包含的B类的对象也随之消亡。聚合方式则是这样:A类的对象在创建时不会立即创建B类的

2020-09-29 08:37:39 30

转载 Ubuntu下九大最佳绘图程序---kolourpaint4 ubantu已经自带了

ubuntu系统是以桌面应用为主的linux操作系统,具有实用的界面,并且完全免费。越来越多的用户也开始使用ubuntu系统。下文是Ubuntu环境下九大最佳绘图程序推荐,具体内容如下所述。在本文中,像GIMP或者 Krita这样的应用程序并没有包含在内,因为它们已经是完全成熟的图像处理应用程序,而不仅仅是简单的绘图程序;因目的不同,也不包扩Scribus或Inkscape。本文概述了 KDE和GNOME两种环境下的9种简单绘图应用程序。请容忍我丑陋的屏幕截图,除了矩形、圆和曲线,我从出生到现在,还

2020-09-28 18:05:24 43

转载 qt QTabWidget设置tab头的宽度

setStyleSheet(QTabBar::tab{width:宽度});右击控件,在样式表编辑框中写入这样就可以。

2020-09-28 16:51:21 37

原创 QTabWidget 无法隐藏tab标签完美解决办法

隐藏: ui->tabWidget->setTabEnabled(1, false); ui->tabWidget->setStyleSheet("QTabBar::tab:disabled {width: 0; color: transparent;}"); 显示 ui->tabWidget->setTabEnabled(1, true); ui->tabWidget->setStyleSheet("QTabBa...

2020-09-28 16:14:42 106

QtCretor支持中文输入.txt|QtCretor支持中文输入.txt

解决QTCreator 支持中文输入 几个基本命令设置方法,即可,完成qt字体库的导入, 让qtcreator完美支持中文输入,不乱码

2020-09-07

shell脚本 ping所有网段ip|pingNetAll.sh

shell脚本 ping所有网段ip 当局域网内,网络设备ip不知,可以用此脚本ping可以更改[ping指定网段ip 1s一个ip是否通畅

2020-09-07

Snake.zip QT5编写的贪吃蛇游戏,源码|Snake.zip

QT/贪吃蛇源码/ Linux/C++ Linux测试通过,方向键控制,设置速度,游戏等级,练习UI和QT的好玩Demo

2020-09-07

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除