home *** CD-ROM | disk | FTP | other *** search
- Short: Get pictures from Camedia digital camera
- Author: afleuti@iiic.ethz.ch (Andreas Patrick Fleuti), TetiSoft@apg.lahn.de (Detlef Würkner)
- Uploader: TetiSoft@apg.lahn.de (Detlef Würkner)
- Version: 0.43
- Type: comm/misc
-
- This is the new version of Camedia.
- Camedia is a the name of my digital camera from Olympus.
- To be precise, it's name is Camedia C-900 Zoom, in US, the same camera is called 400Z.
-
- What does the program:
- ----------------------
- - copy pictures from the camera to the computer
- - copy thumbnails (tiny pictures) from the camera to the computer
- - shows some infos about the camera and it's pictures
- - shows a preview
- - delete pictures
-
-
- What's new:
- -----------
-
- 0.43
- Changes by TetiSoft:
- Fixed source code to be compatible with SAS/C 6.58 and recompiled with it.
- Fixed compiler warnings.
- Fixed enforcer hits.
- Fixed some bugs.
- Added serial speed of 230400 Baud (untested).
- Added return codes to be usable in shell scripts.
- Added version string.
- Now also works with Camedia C-860L.
-
- 0.42 beta
- Should now work with C400L
-
- 0.41 beta
- I thought thumbails can't get bigger then about 4KB. Well I was wrong.
- I set the buffer now dynamicly, which should be fine for all thumbails.
-
- 0.4 beta
- Implemented new commands like
- - TAKE_PICTURE, which asks the camera to take a picture,
- - THUMBNAILS, is like RETR (retrieve) but instead of the big_picture, the camera sends a tiny one
- (my jpeg.datatype was unable to load that tiny jpeg picture, but PhotoAlbum could do it)
- - DEL, which deletes pictures (* be careful about that, You won't get asked if You are sure! *)
-
- I also changed the code from C++ back to C and here are the reasons why:
- The StormC compiler was UNABLE to compile my code. This behavior (this bug) is known, but
- there is no fix for it. This way, in C, everybody can extend my code with StormC without hoping the
- compiler will be nice as it was in C++.
- The bad news (just for programmers) is that they must take care of my own implementaion of try/catch
- which is easy to understand. Also the functionoverloading (dump) was changed because of C.
-
-
- 0.3 beta
- The hardcoded DisplayID is gone. So the PREVIEW mode shows each time a screen mode requester.
- The restriction to true color mode is still there (16Bit, 24Bit works, I guess 15Bit too).
-
- Fixed the unit-bug. Even You set the unit, the 0.2 beta version always used unit 0.
-
- The source code is freely available. I decided to make it public, so everybody can enjoy it more.
- [Take a look at the infos about the source code at the end of this file]
-
- 0.2 beta
- You don't need any longer 600 KB free memory.
- The memory requirements are about 50 KB when retrieving pictures or using the info function.
- When using the preview function, You need about 300 KB, Cybergraphics, jpeg.library and a 24Bit Graphic-Board.
-
- The old restriction using the serial.device at 57600 Baud is obsolote.
- You can set the device, the unit and the speed (9600, 19200, 38400, 57600 or 115200).
-
- You can choose, which picture you like to retrive (from x to y).
-
- You can set the name, the retrieved picture should have.
- The camera saves for each picture when it was taken. This is saved (as before) in the comment.
- However, if this date doesn't make real sense, the comment will be set to "No Date" (that's new).
-
- There is an info function. This shows you many information about your camera, and the stored pictures.
-
- A preview function, which turns your camera into a (inexpensive ?) video camera.
- This way, You can watch yourself at your display :)
- To use this feature, you need:
- - about 300 KB memory for the program (plus some more for the 24 Bit screen)
- - jpeg.library, which can be found at Aminet
- - Cybergraphics
- - a graphic card, which has the DisplayID 0x40120051 (24Bit, 640x480, Cybervision?)
- P.S. (BestCModeIDTags() seems not work for me...that's why DisplayID is hardcoded)
-
- You are able to retrieve uncompressed pictures. The old version crashes when you try to get
- uncompressed pictures! the uncompressed pictures will be saved in tiff, but it's filename ends with
- .jpeg - next version will be better :)
-
-
- Requirements:
- -------------
- OS 3.0 or higher (should work with OS 2.1 as well)
- normaly about 50 KB free memory
- a Camedia digital camera from Olympus
-
-
- for the preview function, you need:
- -----------------------------------
- about 300 KB memory for the program (plus some more for the true color screen)
- jpeg.library, which can be found at Aminet
- Cybergraphics
- a graphic card
-
-
-
- How to use this software:
- ------------------------
- - Connect the camera to the serial port and turn the camera on.
-
- - Open a shell where you have access to the program Camedia.
-
-
- INFO:
- =====
- - type "Camedia INFO" to get infos about your camera
-
-
- RETR:
- =====
- - type "Camedia RETR" to get all pictures, which will be stored localy.
- The pictures will have the name "picture_1.jpeg", "picture_2.jpeg" and so on.
-
- - type "Camedia RETR from 3" to get the pictures 3, 4, and so on
-
- - type "Camedia RETR from 3 to 5" to get the pictures 3, 4 and 5
-
- - type "Camedia RETR from 3 to 3" to get only the picture 3.
-
- - type "Camedia RETR to 3" to get the picture 1, 2 and 3.
-
- THUMBAILS:
- ==========
- This behaves exactly like RETR except that it get thumbnails instead of the big pictures.
-
- - type "Camedia THUMBAILS" to get all thumbnails (tiny pictiures), which will be stored localy.
- The thumbails will have the name "picture_1.jpeg", "picture_2.jpeg" and so on.
-
- DEL:
- ====
- This behaves exactly like RETR except that it will delete instead of getting the big pictures.
- WARNING: The software won't ask you if you realy like to delete the picture in the camera, so be careful.
-
-
- Options for RETR or THUMBNAILS:
- -------------------------------
- - type "Camedia RETR Name my_name" to get all picture, which will get the name
- "my_name_1.jpeg", "my_name_2.jpeg" and so on.
-
-
- Note:
- ----
- If You have an uncompressed picture, then it will be saved in the format tiff.
- However, the filename ends with .jpeg. Next release will be better :)
-
- Make sure you have enough disk space for the pictures. The disk should be reasonable fast
- (so if You wanna use floppy, ok, but then make sure, no other program access the floppy).
-
- PREVIEW:
- ========
- - type "Camedia PREVIEW" to use your camera as a video camera.
- You can resize the window. To quit, close the window.
-
-
- Important options:
- ==================
- In all the modes (INFO, THUMBNAILS, RETR, DEL and PREVIEW), you can set device, the devie unit and the speed.
-
- - type "Camedia DEVICE my_serial.device UNIT 0 SPEED 115200 RETR" to get all pictures.
-
-
- Notes:
- -----
- The program will NOT delete the pictures in the camera when You just retrieve the pictures.
- However, in the mode DEL (delete), the program DOES delete the pictures in the camera.
- If You like to stop the program, do a CTRL-C or CTRL-F.
-
-
- Problems:
- --------
- If there is a problem, You will get some hints, but they are mainly useful for
- me, maybe not so much for You.
- Reading from the camera fails sometimes when
- - You type some text during the program tries to make some output on the console *
- - You press the right mouse button very long
- - Your computer is very busy
- - the batteries of Your camera are too low **
-
- * when You type some text in the console, the program might can't go on.
- Cause the camera will disconnect after a while (maybe five seconds), when not
- retrieving any data from the computer, You shouldn't type in the console the
- program is running.
-
- ** Well, right now, that's Your task. In future, I might will warn You "batteries
- are low", cause I can read the capacity of the batteries with a command.
-
- -----------------------------------------------------------------------------------------------
- Important: If you have any problem (like timeout), make sure to put fully charged batteries
- in your camera. If you still have problem, e-mail me.
- -----------------------------------------------------------------------------------------------
-
-
- Must it be a Camedia digital camera from Olympus?
- ------------------------------------------------
- The protocol to communicate with digital cameras seems to be very much the same
- for many cameras like Fuji, Epson, Sanjo, Agfa and Olympus.
- The problem is the protocol is NOT official available, but there is some good
- information at:
- http://www.average.org/digicam/
-
- So probably, this program works also with other digital cameras. Please tell me Your
- experiences.
-
-
- Is the program dangerous for my camera?
- --------------------------------------
- Of course I don't guarantee anything, except that it worked for me five minutes ago.
- I played a lot with my camera, and sometimes I got strange behaviors. Till today, I
- was unable to destroy or damage my camera by sending commands to it.
- To make a conclusion out of my experiences is up to Your risk.
-
-
- Infos about the source code
- ---------------------------
-
- The source code is split up in two parts.
- Camedia.c has many nice functions, it does the communication and some more.
- camprg.c is an example how to use the functions in Camedia.c
-
- Camedia.h is pretty important, cause all constants, definitions and prototypes are set there.
-
- Please study http://www.average.org/digicam/
- There you can find many infos about how the protocol looks like. You don't neet this infos,
- but of course it helps a lot. To get an overview of the available register, it's helpful.
-
- There are two ways to use Camedia.c's function.
- The easy way is to use the Set_XXX(...) and Get_XXX(...) functions.
- These functions are wrappers to make your life easier (I hope so :)
- The other way to use Camedia.c's function is more direct.
- For that, You have only these four functions:
-
- void SetIntegerRegister(enum Command_0, L4, error_msg);
- void ReadIntegerRegister(enum Command_1, L4 *, error_msg);
- void TakeAction(enum Action_Code action, L1 arg, error_msg);
- void ReadVDataRegister(enum Command_4, L1 *, L4 *, error_msg);
-
- There should be a fifth function, but I did't implement this one:
- (NOT implemented yet: void SetVDataRegister(enum Command_3, L1 *, L4); )
-
- the error_msg is of type char*. It's used instead of try and catch. Whenever a error occured in the
- function, it will return AND it will have an explaining message in error_msg, which You can and maybe
- should printf("%s\n", error_msg);
-
- The code itself should be clear.
- The 'not so nice' part of Camedia.h is the macro definition (header files shouldn't contain code...)
-