【C语言】之获取屏幕显示器信息

1、操作的设备为:/dev/fb (显存设备)
2、完整代码如下:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <linux/fb.h>

int main(int argc, char **argv)
{
	int fd;
	
	/* 打开fb设备文件 */
	fd = open("/dev/fb0", O_RDWR);
	if (-1 == fd)
	{
		perror("open fb");
		return -1;
	}

	/* 获取fix屏幕信息:获取命令为FBIOGET_FSCREENINFO */
	struct fb_fix_screeninfo fixInfo;

	if (ioctl(fd, FBIOGET_FSCREENINFO, &fixInfo) == -1)
	{
		perror("get fscreeninfo");
		close(fd);
		return -2;
	}
	/* 打印fix信息 */
	printf("id = %s\n", fixInfo.id); /* 厂商id信息 */
	printf("line length = %d\n", fixInfo.line_length); 
									/* 这里获取的是一行像素所需空间
									 * 该空间大小是出厂时就固定的了
									 * 厂商会对一行像素字节进行对齐*/

	/* 获取var屏幕的信息:获取命令为FBIOGET_VSCREENINFO */
	struct fb_var_screeninfo varInfo;

	if (ioctl(fd, FBIOGET_VSCREENINFO, &varInfo) == -1)
	{
		perror("get var screen failed\n");
		close(fd);
		return -3;
	}
	/* 打印var信息 */
	printf("xres = %d, yres = %d\n", varInfo.xres, varInfo.yres);
	printf("bits_per_pixel = %d\n", varInfo.bits_per_pixel);
	printf("red: offset = %d, length = %d\n", \
					varInfo.red.offset, varInfo.red.length);
	printf("green: offset = %d, length = %d\n", \
					varInfo.green.offset, varInfo.green.length);
	printf("blue: offset = %d, length = %d\n", \
					varInfo.blue.offset, varInfo.blue.length);
	printf("transp: offset = %d, length = %d\n", \
					varInfo.transp.offset, varInfo.transp.length);

	close(fd);
	return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值