장성호님께서 보신게 맞습니다.
4byte로 떨어진다는 걸 몰랐군요.
그럼 어떤 식으로 수식을 정해야 할까요?
BMP[]배열의 크기가 항상 달라지니까(여러가지 그림을 사용할 시)
그 배열의 크기를 그 때 그 때 달라지게 해줘야 되는데 어떤 식으로 해야 가능할까요?
참고로 배열은 글로벌로 bmp[1024] = {0x00,0x11,...................}; 이런식으로 선언되어 있습니다.
장성호 님이 쓰신 글 :
: 음..
: 다른것은 잘모르겠구요
:
: 한가지 문제가 있는데..
:
: unsigned char *BMP 의 size를 구한 부분에 문제가 있습니다.
: 코드의 의도를 볼때 BMP변수에 할당된 크기를 구하려고 하는것 같은데
: 아래 코드는 그냥 포인터변수의 크기 입니다.
:
: win32시스템에서는 모든 포인터의 크기는 4Byte입니다.
:
:
: void GLCD_BMP(int page, int column, const unsigned char *BMP)
: {
: unsigned int i, k=0;
:
: GLCD_xy(page,column);
: GLCD_xy_row(xcharacter,ycharacter,0);
:
: i= sizeof(bmp)/sizeof(bmp[0]);
: // sizeof(bmp) 는 항상 4가 됨
: // sizeof(bmp) 는 BMP에 할당된 size를 구하는것이 아니라
: // BMP변수의 size 즉 포인터의 size임
: // win32 시스템에서 모든 포인터의 size는 4Byte임
:
: while(k <= i)
: {
: disp_write(BMP[k]);
: k++;
: }
: }
:
:
:
: 그럼..
:
:
: 김민조 님이 쓰신 글 :
: : void GLCD_BMP(int page, int column, const unsigned char *BMP)
: : {
: : unsigned int i, k=0;
: :
: : GLCD_xy(page,column);
: : GLCD_xy_row(xcharacter,ycharacter,0);
: : i= sizeof(bmp)/sizeof(bmp[0]);
: :
: : while(k <= i)
: : {
: : disp_write(BMP[k]);
: : k++;
: : }
: : }
: :
: : 이런식으로 하면 LCD에 BMP가 제대로 뿌려질까요?
: : bmp는 코드변환프로그램을 이용해서 사용했고요.
: : GLCD_xy_row()에서 x 어드레스와 y어드레스를 설정한다음
: : BMP배열의 값을 뿌려주는 형식으로 짠 건데 지금 학교가 아니라서 구동이 되는지 확인을 못하겠네요~
: : 고수님들의 의견을 듣고 싶습니다.