显示接口测试
背景需求
两个显示器连接到一台PC,期望每台显示器可以单独显示,在一台显示器显示时,另外一台显示器同PC的连接断开,即系统下查看到连接状态为disconnected。
同时在显示器上图形化显示当前显示器编号。如下图,期望当显示器A连接到PC时,显示器内容显示为:显示器A;对B同理。
显示控制
问题
当从显示器A切换到显示B时,桌面上的图标不可见。
分析
1) 首先查看 当前屏幕设置,已经改成为单屏显示。并非扩展屏幕显示导致的。
2) xranr --verbose
通过命令输出可以看到当前screen大小为 3840*1080
xrandr --verbose
Screen 0: minimum 320 x 200, current 3840 x 1080, maximum 16384 x 16384
而此时查询到的当前的分辨率仅仅为1920*1080
DP-1 connected 1920x1080+1920+0 (0x47) normal (normal left inverted right x axis y axis) 477mm x 268mmIdentifier: 0x43Timestamp: 545969Subpixel: unknownGamma: 1.0:1.0:1.0Brightness: 1.0Clones: CRTC: 2CRTCs: 0 1 2Transform: 1.000000 0.000000 0.0000000.000000 1.000000 0.0000000.000000 0.000000 1.000000filter: EDID: 00ffffffffffff0009d10185010000002619010368301b78ee0db0a755499b25155054a7ef80d1c08100810f818081c0a9c0b3000101023a801871382d40582c4500dd0c1100001a000000fd00384b1e5312000a202020202020000000fc0042656e5120444c323230360a20000000ff00455446394630303333303030560013_MUTTER_PRESENTATION_OUTPUT: 0 Content Protection: Undesired supported: Undesired, Desired, EnabledColorspace: Default supported: Default, RGB_Wide_Gamut_Fixed_Point, RGB_Wide_Gamut_Floating_Point, opRGB, DCI-P3_RGB_D65, BT2020_RGB, BT601_YCC, BT709_YCC, XVYCC_601, XVYCC_709, SYCC_601, opYCC_601, BT2020_CYCC, BT2020_YCCmax bpc: 12 range: (6, 12)Broadcast RGB: Automatic supported: Automatic, Full, Limited 16:235audio: auto supported: force-dvi, off, auto, onsubconnector: VGA supported: Unknown, VGA, DVI-D, HDMI, DP, Wireless, Nativelink-status: Good supported: Good, BadCONNECTOR_ID: 103 supported: 103non-desktop: 0 range: (0, 1)1920x1080 (0x47) 148.500MHz +HSync -VSync *current +preferredh: width 1920 start 2008 end 2052 total 2200 skew 0 clock 67.50KHzv: height 1080 start 1084 end 1089 total 1125 clock 60.00Hz
于是猜测,是否由于另外一个显示器的信息还在系统中导致此问题。
通过如下命令,关闭另外一个显示接口的输出:
xrandr --output DP-2 --off
此时再切换显示器,则可以正常显示ubuntu桌面信息。
复制屏
也称为mirrors ,即两个显示器显示同样的内容。
通过xrandr也可以进行配置。
但是配置复制屏幕不能解决此问题。
可视化提示信息
需求:
1) 关键信息字体 特殊标识:例如 显示器A。
当前连接 显示器A。
2) 采用ubuntu自带软件。
xlib库
通过下面的代码可以显示一个窗口及文字提示,而且xlib库不需要单独安装。但是从下面图中可以看到,其中的文字很小,不符合要求。而要调整文字大小,通过xlib库相当繁琐。
如下代码for死循环是必须的,不然会很快退出,看不到窗口。
/** 下边是编译命令* gcc x11.c -o zhdisplay_test -I/usr/X11R6/include -L/usr/X11R6/lib -lX11*/#include <X11/Xlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <X11/XKBlib.h>#define XK_Escape 0xFF1Bint main(int argc,char *argv[])
{Display *display;Window window;XEvent event;KeySym key_symbol; char msg[] = {"Test VGA"}; int s;int i = 0;int win_width;int win_height;if (argc<2)memcpy(msg, "Test VGA",strlen(msg));else{if (!strncmp(argv[1],"DPB",3))memcpy(msg, "Test DPB",strlen(msg));if (!strncmp(argv[1],"DPC",3))memcpy(msg, "Test DPC",strlen(msg)); /* 与Xserver建立连接 */display = XOpenDisplay(NULL);if (display == NULL){fprintf(stderr, "Cannot open display\n");exit(1);}s = DefaultScreen(display); win_width = DisplayWidth(display, s);win_height = DisplayHeight(display, s);printf("w:%d,h :%d\n",win_width,win_height);/* 创建一个窗口 */window = XCreateSimpleWindow(display, RootWindow(display, s), win_width/2, 0, win_width/2, win_height, 1,BlackPixel(display, s), WhitePixel(display, s));/* 选择一种感兴趣的事件进行监听 */XSelectInput(display, window, ExposureMask | KeyPressMask);/* 显示窗口 */XMapWindow(display, window);/* 事件遍历 */for (;;){XNextEvent(display, &event); // 阻塞函数/* 绘制窗口或者重新绘制 */if (event.type == Expose){//TO DO }/* 当检测到键盘按ESC键,退出消息循环 */if (event.type == KeyPress){key_symbol = XkbKeycodeToKeysym(display, event.xkey.keycode, 0,0);if (XK_Escape == key_symbol) {break;}}XDrawString(display, window, DefaultGC(display, s), win_width/4-10, win_height/2, msg, strlen(msg)); } /* 关闭与Xserver服务器的连接 */XCloseDisplay(display); return 0;}
图像显示命令
于是,考虑用是否有系统命令可以直接显示图片,结论是可以的。
如下两个命令,带图片名称就可以打开
xdg-open
问题: 通过pkill 杀掉此命令对应的进程时,图片窗口还在。
eog
可以被pkill杀死。eog 输出,可以看到提示信息清晰。
在此基础上,我们可以设计各种各样的底色图片,对显示接口进行测试。
解决这个问题在于思路的转变,从代码层面转换到工具层面,体现解决问题的灵活性。
参考资料
linux 视频输出xrandr设置命令 - 简书 (jianshu.com)
相关文章:
显示接口测试
背景需求两个显示器连接到一台PC,期望每台显示器可以单独显示,在一台显示器显示时,另外一台显示器同PC的连接断开,即系统下查看到连接状态为disconnected。同时在显示器上图形化显示当前显示器编号。如下图,期望当显示…...
Tcl_Init error: Can‘t find a usable init.tcl in the following directories
目录 问题 解决 小结 问题 最近在研究开源波形显示软件gtkwave时,Ubuntu18.04下编译打包完成,移植到另一个电脑上运行时,出现以下错误,如图: 擦掉的部分是一些路径信息,这个错误提示意味着您的系统中缺少所需的 Tcl 初始化文件,路径下确实没有init.tcl文…...
进程控制(详解)
进程控制上篇文章介绍了进程的相关概念,形如进程的内核数据结构task_struct 、进程是如何被操作系统管理的、进程的查看、进程标识符、进程状态、进程优先级、已经环境变量和进程地址空间等知识点; 本篇文章接着上篇文章继续对进程的控制进行展开&#x…...
瓜子大王稳住基本盘,洽洽食品做对了什么?
2月24日,洽洽食品披露2022年业绩快报,公司预计实现营收总收入68.82亿元,同比增长14.98%, 实现归母净利润9.77 亿元,同比增长5.21%,业绩基本符合市场预期。来源:洽洽食品2022年度业绩快报2022年,瓜子大王洽洽…...
【音视频安卓开发 (十一)】jni基础
要使用jni开发需要包含jni.h头文件JNIEXPORT JNI : 是一个关键字,不能少(编译能通过),标记为该方法可以被外部调用jstring : 代表java中的stringJNICALL: 也是一个关键字,可以少的jni callJNIENV : 这是c和java相互调用…...
通过FRP搭建内网穿透,实现域名访问局域网本机
1我的目标:实现通过域名访问局域网tomcat服务,域名访问方便本地微信调试2思路:(1)用服务器搭建内网穿透利用FRP实现穿透,frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、…...
Pytorch 代码复现终极指南【收藏】
修改自:https://zhuanlan.zhihu.com/p/532511514我在刚接触pytorch的时候搜到了这个大佬的文章,当时最后天坑部分没有看的太明白,直到今天我也遇到的相同的问题,特来做一点点补充,方便大家理解。上述大佬文章的简版内容…...
iOS 后台运行
背景:app有在后台运行的需求 常用的后台常驻实现方法 1.Audio(音乐播放软件) 应用在后台播放无声的音频文件,只要播放不断,后台可一直活着,苹果审核人员如果发现,会被拒,有可能会…...
软设下午题第一大题--数据流图(做题)
软设下午第一大题一、数据流图(Data Flow Diagram,简称DFD)1、基本图形元素元素(1)外部实体(External Agent)(2)数据存储(Data Store)(3ÿ…...
springboot内嵌Tomcat 安全漏洞修复
漏洞扫描提示的是tomcat-embed-core[CVE-2020-1938],解决方式是升级tomcat的版本。 该漏洞影响的版本: Apache Tomcat 9.x < 9.0.31 Apache Tomcat 8.x < 8.5.51 Apache Tomcat 7.x < 7.0.100 Apache Tomcat 6.x 其余的安全漏洞也可以通过…...
Android OTA 相关工具(三) A/B 系统之 bootctl 工具
文章目录1. bootctl 的编译2. bootctl 的帮助信息3. bootctl 的用法1. hal-info2. get-number-slots3. get-current-slot4. mark-boot-successful5. set-active-boot-slot6. set-slot-as-unbootable7. is-slot-bootable8. is-slot-marked-successful9. get-suffix10. set-snaps…...
【Flink】org.apache.flink.table.api.ValidationException: SQL validation failed
遇到问题如下 Exception in thread "main" org.apache.flink.table.api.ValidationException: SQL validation failed. From line 1, column 15 to line 1, column 17: Object aaa not found at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.orgat org.…...
宏基因组鉴定病毒流程中需要的生物信息工具
谷禾健康 许多流行病的爆发都是病毒引起的,面对新的传染性基因组出现的最佳策略是及时识别,以便于在感染开始时立即实施相应措施。 目前可用的诊断测试仅限于检测新的病理因子。适用于同时检测存在的任何病原体的高通量方法可能比使用基于当前方法的大量…...
Doris入门篇-分区分桶实验
简介 测试分区分桶效果。 分区的基本操作 添加分区 ALTER TABLE v2x_olap_database.government_car ADD PARTITION p20221203 VALUES LESS THAN ("2022-12-04");动态分区表不能添加分区,需要转为手动分区表。 查看分区 show partitions from <表…...
Spring-Xml配置
一、Spring 简介 1.简介 文档下载地址:Index of /spring-framework/docs 1.简介 Spring framework 是 Spring 基础框架 学习Spring 家族产品 Spring framework SpringBoot SpringCloud Spring 能用来做什么 开发 WEB 项目 微服务 分布式系统 Spring framew…...
设计模式-工作线程 创建多少线程池合适
1、定义 让有限的工作线程(Worker Thread)来轮流异步处理无限多的任务。也可以将其归类为分工模式,它的典型实现就是线程池,也体现了经典设计模式中的享元模式(重用对象)。 例如,海底捞的服务员(线程),轮流…...
【算法基础】深度优先搜索(DFS) 广度优先搜索(BFS)
一、DFS & BFS 1. 深度优先搜索DFS 深度优先搜索属于图算法的一种,英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。 2. 广度优先搜索BFS 广度优先搜索较之深度优先搜索之不同在于,深度…...
【分布式】ProtocolBuffer平滑升级原则
原文链接:https://blog.csdn.net/nash_cyk/article/details/99549719 关于Protocol Buffer优势这里就不详细介绍了,如便于不同开发语言的交互通信,便于服务器上线的平滑升级等。 但Protocol Buffer的Message协议升级是需要注意一些细节&…...
第四阶段17-关于Redis中的list类型,缓存预热,关于Mybatis中的`#{}`和`${}`这2种格式的占位符
关于Redis中的list类型 Redis中的list是一种先进后出、后进先出的栈结构的数据。 在使用Redis时,应该将list想像为以上图例中翻转了90度的样子,例如: 在Redis中的list数据,不仅可以从左侧压入,也可以选择从右侧压入…...
stringstream用法
stringstream是 C++ 提供的另一个字串型的串流(stream)物件,和之前学过的iostream、fstream有类似的操作方式。包含在头文件sstream中(#include <sstream>)。 实例: 1、C++标准库中的<sstream>提供了比ANSI C的<stdio.h>更高级的一些功能,即单纯性、类…...
2022年下半年系统集成项目管理工程师综合知识真题及答案解析
2022年下半年系统集成项目管理工程师综合知识真题及答案解析 1、()不属于“提升云计算自主创新能力”的工作内容。A.加强云计算相关基础研究、应用研究、技术研发、市场培育和产业政策密衔接与统筹协调B.引导大型云计算中心优先在能源充足、气候适宜、自然灾害较少的地区部…...
【洛谷 P2089】烤鸡(搜索)
烤鸡 题目背景 猪猪 Hanke 得到了一只鸡。 题目描述 猪猪 Hanke 特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke 吃鸡很特别,为什么特别呢?因为他有 101010 种配料(芥末、孜然等)…...
Mac item2 配置免密登录开发机
1、配置 vi ~/.ssh/config 内容如下: Host * ControlMaster auto ControlPath ~/.ssh/master-%r%h:%p ControlPersist yes ServerAliveInterval 60 学习: ControlMaster #连接共享 ControlPath #与ControlMaster一起使用,指定连接共享的路径…...
vue 解决问题:Webpack安装不成功,webpack -v无法正常显示版本号
目录 一、解决问题:Webpack安装不成功,webpack -v无法正常显示版本号 二、解决问题: ERROR Error: Cannot find module webpack-log 三、 解决报错:error:03000086:digital envelope routines::initialization error 四、解决…...
07-1【openEuler】系统及进程管理(网络管理的补充实验及说明)
文章目录说在前面关于nmcli命令的使用使用nmcli命令修改主机IP地址1、运行ip addr列出openEuler20.03上的以太网卡2、列出当前活动的以太网卡3、开始分配静态IP地址(1)命令语法(2)将 IPv4 地址192.168.74.175分配给 ens33 网卡上&…...
【Linux】磁盘结构、文件系统、软硬链接、动静态库链接
文章目录1、磁盘结构1.1 磁盘的物理结构1.2 磁盘的存储结构1.3 磁盘的逻辑结构2、文件系统2.1 4KB加载到内存2.2 文件系统结构3、软硬链接3.1 软链接3.2 硬链接4、动静态库4.1 什么是库?4.2 静态库和静态库链接4.3 动态库和动态库链接4.4 动静态库的加载下面了解到&…...
交换机电口、光口、网络速率的基本概念总结
电口和光口千兆网 & 万兆网:POE:包转发率:背板带宽/交换容量:)电口和光口 电口: 电口也即RJ45口,插双绞线的端口(网线),一般速率为10M或100M,即为百兆工…...
【面试题 05.02. 二进制数转字符串】
来源:力扣(LeetCode) 描述: 二进制数转字符串。给定一个介于0和1之间的实数(如0.72),类型为double,打印它的二进制表达式。如果该数字无法精确地用32位以内的二进制表示࿰…...
webpack - webpack的基本使用和总结
文章目录1,webpack概念2,为什么学webpack3,webpack特点4,相对于其他工具优点5,准备工作6,webpack的核心介绍7,webpack使用 - 打包js代码8,打包css代码9,生成html文件10&a…...
【蓝桥杯嵌入式】定时器实现按键单击,双击,消抖以及长按的代码实现
🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都在这儿哦,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏 🪔本系列专栏 - 蓝…...
网站建设拍金手指谷哥14/seo如何优化网站推广
用IN来替换OR 下面的查询可以被更有效率的语句替换:低效: SELECT…. FROM LOCATION WHERE LOC_ID 10 OR LOC_ID 20 OR LOC_ID 30 高效 SELECT… FROM LOCATION WHERE LOC_IN IN (10,20,30); 这是一条简单易记的规则,但是实际的执行效果还须检验,在ORA…...
动易 网站首页/孝感seo
我看最近微博流行CSS居中技术,我看了几编资料写的都不多好,于是抽时间把相关资料整合了,具体内容如下。点击此处下载源码效果展示:要求:1.尽可能兼容更多浏览器,这里兼容到ie7,ie6不支持max-*就不考虑了。2.浏览器尺寸…...
能不能同行网站做站长统计/先做后付费的代运营
xsim安装手记(转)或许大家都已经搞定了Redhat Linux 7.3的汉化工作,但是却在为找一款而发愁,Redhat 7.3虽然已经自带了一个中文输入法――miniChinput,不过用来总觉得不爽,于是乎呢,我搜遍网络,终于找到了一…...
自己编辑网站怎么做的/刷赞网站推广空间免费
魔术方法:PHP把类中所有以__(两个下划线)开头的方法当成魔术方法,一般建议用户不要将自定义的方法前面加上__作为前缀。魔术方法:1. __construct()类的默认构造方法,如果__construct()和与类同名的方法共同…...
做面食专业网站/网络营销和推广的方法
2019独角兽企业重金招聘Python工程师标准>>> 1、文件处理命令:ls 命令名称:ls 命令英文原意:list 命令所在路径:/bin/ls 功能描述:显示目录文件 语法:ls 选项[-ald] [文件或目录] -a all显示所…...
秦皇岛正在建设的医院/徐州网页关键词优化
文章目录一、连接池是什么?二、使用步骤三、实际使用一、连接池是什么? 连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。 都应该使用过数据连接池,例如druid,c3p0 大致原理差不多ÿ…...