班級:計算機應用技術1班 姓名:於青林 學號:0906041017html
1、利用for循環改變像素的值使色帶向右移動java
#include linux
#include nginx
#include c++
#include // open() close()shell
#include // read() write()api
#define DEVICE_NAME "/dev/fb0"數組
#define VERSION "PXA270RP-LCD-V1.00-090101"微信
void showversion(void)app
{
printf("*********************************************\n");
printf("\t %s \t\n", VERSION);
printf("*********************************************\n\n");
}
int main(void)
{
int fd;
int ret;
int i,j,p=0;
int row=480,colu=200;
unsigned short buf[480][800];
showversion();
printf("\nstart test_lcd test\n\n");
fd = open(DEVICE_NAME, O_RDWR);
printf("fd = %d\n",fd);
if (fd == -1)
{
printf("open device %s error\n",DEVICE_NAME);
}
else
{
for(i=0;i<480;i++){
for(j=0;j<800;j++)
buf[i][j]=0x0001;
}
ret=write(fd,buf,sizeof(buf));
usleep(100000);
close(fd);
}
while(1){
fd = open(DEVICE_NAME, O_RDWR);
for(i=0;i
for(j=p;j
buf[i][j%800]=0xf800;
for(j=colu+p;j<2*colu+p;j++)
buf[i][j%800]=0x07ef;
for(j=2*colu+p;j<3*colu+p;j++)
buf[i][j%800]=0x07ff;
for(j=3*colu+p;j<4*colu+p;j++)
buf[i][j%800]=0xffe0;
}
ret=write(fd,buf,sizeof(buf));
close(fd);
usleep(100000);
p=p+20;
}
if(getchar()>0){
system("cat fb >/dev/fb0");
system("cat apl_test/fb >/dev/fb0");
}
return 0;
} // end main
實驗結果:顯示四個色帶,且每次向右移二十個像素,移到最右側超出屏幕的部分將在最左側顯示,使之成爲一個循環顯示;
2、每一個色帶所在像素值固定,每次經過數組改變顏色的值使每一個色帶變色。
把上面程序中的while(1)用如下的while(1)替換
int c=0;
int color[4]={0x07ef,0xffe0,0xf81f,0x1258}; //存放顏色的數組;
while(1){
fd = open(DEVICE_NAME, O_RDWR);
for(i=0;i<480;i++){
for(j=0;j<800/4;j++)
buf[i][j]=color[c%4];
for(j=800/4;j<800/2;j++)
buf[i][j]=color[(c+1)%4];
for(j=800/2;j<800*3/4;j++)
buf[i][j]=color[(c+2)%4];
for(j=800*3/4;j<800;j++)
buf[i][j]=color[(c+3)%4];
}
c++;
ret=write(fd,buf,sizeof(buf));
close(fd);
usleep(1000000);
}
實驗結果:顯示四個色帶,且其中的顏色按數組所定義的顏色循環改變。
3、根據(一)中的while循環改變,可實現色帶沿對角線的方向依次分佈。實際上是昨天作實驗,把p=p+1寫到了外層for循環中,結果出現了非預期的沿對角線分佈的結果。
fd = open(DEVICE_NAME, O_RDWR);
for(i=0;i
for(j=p;j
buf[i][j%800]=0xf800;
for(j=colu+p;j<2*colu+p;j++)
buf[i][j%800]=0x07ef;
for(j=2*colu+p;j<3*colu+p;j++)
buf[i][j%800]=0x07ff;
for(j=3*colu+p;j<4*colu+p;j++)
buf[i][j%800]=0xffe0;
p=p+1;
}
ret=write(fd,buf,sizeof(buf));
close(fd);
usleep(100000);