QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4292|回复: 16

斑竹:运行例程出错的问题可以解决吗?

[复制链接]
发表于 2006-11-13 14:42:50 | 显示全部楼层 |阅读模式
情况是这样:运行jawbreaker:
/mnt/egui/bin # ./jawbreaker
New windows id = 3
Open file error r.jpg       
/mnt/egui/bin #

## 这是程序打印出来的信息,说明出错了。VGA没有显示出图案。为什么会是这样的?


运行monitor:
/mnt/egui/bin # ./monitor
New windows id = 3
   ## VGA显示出正确的图案。


显示JPEG图片:运行viewjpeg:
./viewjpeg w.jpg >>/dev/null &
/mnt/egui/bin #
    ### VGA显示图片框但没有图片,为什么会是这样?
   
再用如下方式运行:   
/mnt/EGui/bin # ./viewjpeg  w.jpg
New windows id = 1
Egui ERROR = 133 x1 = 231 y = 745 y1 = 763,someone too big.
Egui ERROR = 135 x1 = 230 y = 747 y1 = 762,someone too big.
Egui ERROR = 23 x1 = 121 y = 745 y1 = 763,someone too big.
Egui ERROR = 25 x1 = 120 y = 747 y1 = 762,someone too big.   
    ### VGA显示图片框但没有图片,为什么会是这样?

运行fifteen:
./fifteen >>/dev/null &
[7] Done(1) ./jawbreaker 1>>/dev/null
/mnt/egui/bin #
## VGA显示出正确的图案。

但运行脚本文件run-egui.sh:
/mnt/egui/bin # ./run-egui.sh
/mnt/egui/bin #
##VGA没有图片输出,提示信息为:
Open ok ....
EGui release ....
        ## 为什么会是这样?
发表于 2006-11-13 15:32:39 | 显示全部楼层
咱们一个一个解决问题
./jawbreaker
New windows id = 3
Open file error r.jpg

你查找r.jpg有问题吗?用display r.jpg看看。
回复

使用道具 举报

 楼主| 发表于 2006-11-14 11:37:23 | 显示全部楼层
用display r.jpg可以看到 small red ball .
回复

使用道具 举报

发表于 2006-11-14 12:00:05 | 显示全部楼层
提示r.jpg找不到?这个不应该阿,就是一个open函数而已。你再看看jawbreaker代码,我这里没有出现过。
回复

使用道具 举报

 楼主| 发表于 2006-11-17 22:15:16 | 显示全部楼层

问题解决了!

我把VGA配成800*600或者1024*768之后,运行就正常了。但编译程序时,还是提示zlib找不到,只有通过先编译zlib-1.2.3,然后放把zlib copy到LIB中才可以。想不明白。我用的是ARM9平台。
回复

使用道具 举报

发表于 2006-11-18 09:49:58 | 显示全部楼层
1.zlib 可能和编译选项有关系。我需要查找一下。我这里没有问题。
2. 你以前VGA配置是多少?不是800*600或者1024*768?
   我这里测试过480x272都没有问题。
回复

使用道具 举报

 楼主| 发表于 2006-11-18 16:31:12 | 显示全部楼层
又有遇到新问题!!
  例程我是留在PC上的, 通过开发板挂载到PC上去运行例程。以前我的VGA配置是600*480,就一直不能打开,
后有我配成800*600 或 1024*768就正常备了。



但现在发现显示JPG图片颜色不对,红色小球显示出来的是偏向淡黄色,我开发板framebuf配置是16bpp。是不是颜色转换不对??bmp图片颜色对的.
回复

使用道具 举报

发表于 2006-11-19 08:38:46 | 显示全部楼层
16bpp以前我测试没有问题.你能贴一个图片看看?
在EGui下怎么截图呢?

1.
capturebmp *.bmp 可以将当前屏幕保存为*.bmp图片.

2.在 window下使用MS的画图 另存为 *.jpg就可以了.
回复

使用道具 举报

 楼主| 发表于 2006-11-20 09:18:32 | 显示全部楼层
我把egui下的截图及原图发给你邮箱了,请查收!
回复

使用道具 举报

发表于 2006-11-20 10:28:26 | 显示全部楼层
没有收到,请发送到[email protected]
回复

使用道具 举报

 楼主| 发表于 2006-11-20 16:10:29 | 显示全部楼层
E-mail已发给你了,请查收!
回复

使用道具 举报

发表于 2006-11-20 16:34:40 | 显示全部楼层
你的图片我看了,egui不应该这样.
jpg,显示你用什么程序做的? viewjpg?
回复

使用道具 举报

 楼主| 发表于 2006-11-21 08:35:29 | 显示全部楼层
我是在jawbreaker 例程中修改的.其实Jawbreaker原码显示小球颜色也是不对的.

以下我帖出部分我修改有代码.



int main(int argc, char **argv)

{

  char * rgbbuf;

  int width,height;

  Ecolor * bgcolor,color[4];

  int w,h;

  EGui_Window * ewindow;

  EGui_Widget * form;

  EGui_Widget * win;

  EGui_Widget * edit;

  int pictureStartX,pictureStartY,pictureWith,pictureHigh;



  if (Egui_open (&Efbinfo))

    return ;



  bgcolor = malloc (sizeof ( Ecolor));

  if (bgcolor == NULL)

    {

      printf ("malloc color ERROR\n");

      return -1;

    }



  bgcolor->r = bgcolor->g = bgcolor->b = 0xcc;

  /* create window will initial color's pixel.

   */

  ewindow = Egui_CreateWindow(&Efbinfo,0,0,800,700,bgcolor,EGUI_WINDOW_TOP);

  if (ewindow == NULL)

    {

      printf ("New windows failed\n");

      Egui_close ();

      return 1;

    }



  Egui_SetWindowName(ewindow,"Jawbreaker");



  Egui_drawwindow(ewindow);

  

  win = new_widget_window(ewindow);

  widget_show(win);



  form = new_form (win);

  widget_show (form);

  

  /* init position */

// init_pos ();

  

  /* random map */



//  random_map ();



// if (!init_pixmap(ewindow))

//   return 1;



  if (get_pixmap_form_file (argv[1],&Pixmap_buf,ewindow)==0)

          {

                  printf("open user jpg error\n");       

                  Egui_close ();

      return 1;

                }

// get_pixmap_form_file(argv[1],&Pixmap_buf,ewindow);



//  map_pixmap(form);

        pictureStartX=400;

        pictureStartY=400;

        pictureWith=300;

        pictureHigh=200;



  pixmap_tmp_buf  = new_pixmap (form,pictureStartX,pictureStartY,pictureWith,pictureHigh);  //make a picture form

        pixmap_set (pixmap_tmp_buf,&Pixmap_buf);

        widget_show(pixmap_tmp_buf);



// memset(col_kill,0,COL);

  

  button_win = new_button (form,20,220,100,20);

  widget_set_name(button_win,"New Start");

  widget_show(button_win);

  widget_register_callback (button_win, BUTTON_REL_LEFT,button_win_click);



  button_mark = new_button (form,130,220,100,20);

  widget_set_name(button_mark,"0");

  widget_show(button_mark);



  edit = new_edit(form,240,220,100,20);

  widget_show(edit);



  widget_draw (win);



/* after form draw line */

// init_background (form,ewindow);   // draw line for form



  Egui_loop ();



  Egui_CloseWindow (ewindow);

  free (bgcolor);

  Egui_close ();

}
回复

使用道具 举报

发表于 2006-11-21 09:22:47 | 显示全部楼层
1.
你用fbset查看你的framebuffer 的配置看是不是8位色.
我这里显示小球颜色没有问题.

2. 你framebuffer 改为24位色看看.
回复

使用道具 举报

 楼主| 发表于 2006-11-21 10:57:45 | 显示全部楼层
我把运行jawbreaker 时capture的图片发给你了。请查收!



使用fbset 查看的信息如下:



A 24 bits BMP display program for Egui

usage : ./bmp filename

/testdir/EGui/bin # fbset


mode "800x600-72"

        # D: 48.001 MHz, H: 45.455 kHz, V: 72.381 Hz

        geometry 800 600 800 600 16

        timings 20833 88 40 23 1 128 4

        accel false

        rgba 5/11,6/5,5/0,0/0

endmode



我的板子底层驱动不支持24BIT的,现在只有16BIT的配置。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 04:42 , Processed in 0.052296 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表