With some examples found on the internet, I've done this program first on my computer :
Code: Select all
int main()
{
int USB = open( "/dev/ttyUSB1", O_RDWR | O_NOCTTY | O_SYNC );
struct termios tty;
/* Set Baud Rate */
cfsetospeed (&tty, (speed_t)B115200);
cfsetispeed (&tty, (speed_t)B115200);
/* Setting other Port Stuff */
tty.c_cflag &= ~PARENB; // Make 8n1
tty.c_cflag &= ~CSTOPB;
tty.c_cflag &= ~CSIZE;
tty.c_cflag |= CS8;
tty.c_cflag &= ~CRTSCTS; // no flow control
tty.c_cc[VMIN] = 1; // read doesn't block
tty.c_cc[VTIME] = 15; // 0.5 seconds read timeout
tty.c_cflag |= CREAD | CLOCAL; // turn on READ & ignore ctrl lines
/* Make raw */
cfmakeraw(&tty);
tcsetattr ( USB, TCSANOW, &tty ) ;
char response[261];
unsigned char cmd[20];
cmd[0] = 0x56;
cmd[1] = 0x00;
cmd[2] = 0x11;
cmd[3] = 0x00;
write(USB, cmd, 4);
sleep(1);
read(USB, response, 16);
for(int i = 0; i< 16;++i)
{
printf("%c", response[i]);
fflush(stdout);
}
cmd[0] = 0x56;
cmd[1] = 0x00;
cmd[2] = 0x3;
cmd[3] = 0x01;
cmd[4] = 0x00;
write(USB, cmd, 5);
sleep(1);
read(USB, response, 5);
cmd[0] = 0x56;
cmd[1] = 0x00;
cmd[2] = 0x34;
cmd[3] = 0x01;
cmd[4] = 0x00;
tcflush(USB,TCIOFLUSH);
write(USB, cmd, 5);
sleep(1);
int n = 0;
n = read( USB, response, 9 );
int length = 0;
unsigned int res;
if(n == 9)
{
if(response[3] == 0x00 && response[4] == 0x04)
{
res = (response[8] & 0xFF);
res += (response[7] & 0xFF) << 8;
res += (response[6] & 0xFF) << 16;
res += (response[5] & 0xFF) << 24;
}
}
int addr = 0;
FILE* f = fopen("photo.jpg", "wb");
int bytes = 255;
while(addr != res)
{
if(res - addr < bytes)
bytes = res-addr;
else
bytes = bytes;
printf("%d\n", addr);
fflush(stdout);
cmd[0] = 0x56;
cmd[1] = 0x00;
cmd[2] = 0x32;
cmd[3] = 0x0C;
cmd[4] = 0x00;
cmd[5] = 0x0A;
cmd[6] = (addr >> 24) & 0xFF;
cmd[7] = (addr >> 16) & 0xFF;
cmd[8] = (addr >> 8) & 0xFF;
cmd[9] = (addr & 0xFF);
cmd[10] = 0;
cmd[11] = 0;
cmd[12] = 0;
cmd[13] = bytes;
cmd[14] = 1;
cmd[15] = 0;
write(USB, cmd, 16);
sleep(1);
read(USB, response, 5);
read(USB, response, bytes);
fwrite(response, bytes, 1, f);
read(USB, response, 5);
addr += bytes;
}
fclose(f);
return 0;
}
Does anybody could help me ?
Thanks.
Flo.