void init_robot() { unsigned char Init_Buffer[10] = {0,}; Init_Buffer[0] = 0xff; Init_Buffer[1] = 0xff; Init_Buffer[2] = 0x0a; Init_Buffer[3] = 0xfe; Init_Buffer[4] = 0x03; Init_Buffer[5] = 0xa2; Init_Buffer[6] = 0x5c; Init_Buffer[7] = 0x34; Init_Buffer[8] = 0x01; Init_Buffer[9] = 0x60; uart1_buffer_write(Init_Buffer, 10); }
void Send_Command(unsigned char CS1, unsigned char CS2, unsigned char DATA0) { int i; unsigned char Command_Buffer[9] = {0,}; Command_Buffer[0] = 0xff; Command_Buffer[1] = 0xff; Command_Buffer[2] = 0x09; Command_Buffer[3] = 0xfd; Command_Buffer[4] = 0x16; Command_Buffer[5] = CS1; Command_Buffer[6] = CS2; Command_Buffer[7] = DATA0; Command_Buffer[8] = 0x00; uart1_buffer_write(Command_Buffer, 9); }
void Test() { //로봇에게 메모리의 일정 부분을 읽어오라는 명령을 보냄 unsigned char Command_Buffer[7] = {0,}; Command_Buffer[0] = 0xff; Command_Buffer[1] = 0xff; Command_Buffer[2] = 0x07; Command_Buffer[3] = 0xfd; Command_Buffer[4] = 0x19; Command_Buffer[5] = 0xE2; Command_Buffer[6] = 0x1C; uart1_buffer_write(Command_Buffer, 7); //UART통신을 이용해 메모리를 읽어옴 char buf[9]; uart1_buffer_read(buf,9); }
int main(int argc, char **argv) { char ch; int ret; int decfd1, decfd2; volatile int x, y; // int img_addr=0; struct saa7111_data_info video_dec; struct disp_coordinate disp_xy; unsigned char buff[5] = {0,}; // RGB(565) Setting unsigned char RGB565_Buff[0x18] = { 0x00, //sub_addr00 : chip version 0x00, //sub_addr01 : not used 0xc0, //sub_addr02 0x23, //sub_addr03 0x00, //sub_addr04 0x00, //sub_addr05 0xde, //sub_addr06 0xdc, //sub_addr07 0x40, //sub_addr08 0x01, //sub_addr09 0x80, //sub_addr0a 0x47, //sub_addr0b 0x40, //sub_addr0c 0x00, //sub_addr0d 0x01, //sub_addr0e 0x00, //sub_addr0f 0x00, //sub_addr10 0x0c, //sub_addr11 0x01, //sub_addr12 0x00, //sub_addr13 0x00, //sub_addr14 0x00, //sub_addr15 0x00, //sub_addr16 0x00 //sub_addr17 }; if(argc <= 1) { printf("Usage 1 : imgproc_test -rd <Read Image Data>\n"); printf("Usage 2 : imgproc_test -dp <Display to Monitor>\n"); printf("Usage 3 : imgproc_test -xy [x coordinate] [y coordinate]\n"); exit(1); } ret = uart_open(); if (ret < 0) return EXIT_FAILURE; uart_config(UART1, 115200, 8, UART_PARNONE, 1); decfd1 = open("/dev/saa7111", O_RDWR); if(decfd1 < 0) { fprintf(stderr, "/dev/saa7111 open failed!!\n"); exit(1); } video_dec.addr = 0x2; video_dec.buf = RGB565_Buff; video_dec.len = sizeof(RGB565_Buff) - 2; if ( ioctl(decfd1, SAA7111_WR_REGS, &video_dec) ) { fprintf(stderr, "ioctl write error\n"); exit(1); } printf("Video Output : <RGB565 Format> Complete!\n"); close(decfd1); decfd2 = open("/dev/imgproc", O_RDWR); if(decfd2 < 0) { printf("/dev/imgproc open failed!!\n"); exit(1); } Delay(0xffffff); if(strcmp("-rd", argv[1]) == 0) { // if ( ioctl(decfd2, RD_IMG_DATA, buff) ) { if ( ioctl(decfd2, RD_IMG_DATA, &bf) ) { printf("ioctl RD_IMG_DATA error\n"); exit(1); } // memcpy(&img_addr, buff, 4); // printf("img_addr=0x%x\n", img_addr); for(y=0; y<120; y++) { for(x=0; x<180; x++) { // sprintf((char *)buff, "%04x", *(unsigned short *)(img_addr+(y*360)+(x*2))); sprintf((char *)buff, "%04x", bf[y][x]); uart1_buffer_write(buff, 4); // printf("%s", buff); // Delay(10000); } } printf("\t read 1 frame imgae data completely\n"); } else if(strcmp("-dp", argv[1]) == 0) { if ( ioctl(decfd2, DISPLAY_IMG_DATA, 0) ) { printf("ioctl DISPLAY_IMG_DATA error\n"); exit(1); } printf("\nPress Enter Key to STOP the test !!!"); ch = getchar(); ioctl(decfd2, DISABLE_IMG_IRQ, 0); printf("\nTest is Stopped\n"); } else if(strcmp("-xy", argv[1]) == 0) { if(argc < 4) { printf("Usage : imgproc_test -xy [x coordinate] [y coordinate]\n"); exit(1); } if ( ioctl(decfd2, RD_IMG_DATA, &bf) ) { printf("ioctl RD_IMG_DATA error\n"); exit(1); } // Delay(1000); printf("Image Load from FPGA!\n"); if ( ioctl(decfd2, DISPLAY_RESOLUTION, SCREEN_640_480) ) { printf("Resolution set fail!!!\n"); exit(1); } printf("Resolution set complete!\n"); if ( ioctl(decfd2, CLEAR_SCREEN, 0) ) { printf("Clear Screen fail!!!\n"); exit(1); } printf("Clear Screen!\n"); disp_xy.x = atoi(argv[2]); disp_xy.y = atoi(argv[3]); disp_xy.img_buf = (unsigned short *)&bf[0][0]; if( ioctl(decfd2, DISPLAY_IMG_DRAW, &disp_xy) ) { printf("Draw Image to Monitor -> fail!!!\n"); exit(1); } printf("1. Draw Image to Monitor!\n"); printf("\nPress Enter Key to load image again !!!"); ch = getchar(); if ( ioctl(decfd2, RD_IMG_DATA, &bf) ) { printf("ioctl RD_IMG_DATA error\n"); exit(1); } printf("Image Load from FPGA!\n"); if ( ioctl(decfd2, DISPLAY_RESOLUTION, SCREEN_640_480) ) { printf("Resolution set fail!!!\n"); exit(1); } printf("Resolution set complete!\n"); disp_xy.x = atoi(argv[2])+180; disp_xy.y = atoi(argv[3]); disp_xy.img_buf = (unsigned short *)&bf[0][0]; if( ioctl(decfd2, DISPLAY_IMG_DRAW, &disp_xy) ) { printf("Draw Image to Monitor -> fail!!!\n"); exit(1); } printf("2. Draw Image to Monitor!\n"); } else { printf("Usage 1 : imgproc_test -rd <Read Image Data>\n"); printf("Usage 2 : saa7111_test -dp <Display to Monitor>\n"); printf("Usage 3 : imgproc_test -xy [x coordinate] [y coordinate]\n"); exit(-1); } uart_close(); close(decfd2); return(0); }