I am trying to modify the CameraRemoteSampleApp provided by the Sony SDK to add full control over the aperture, iso, and shutter speed to the interface.
At this point however all the relevant functions are off limits.
The documentation defines these functions as "available if the latest version of the PlayMemories Smart Remote Control is installed and in use".
a) The smart remote control is installed and running, with the smartphone connected through it and wifi (Samsung Galaxy SIII).
b) I can take photos with the SDK Sample App.
c) Using the available API list shows that the functions exist but are not available.
d) Calling one of those functions directly returns "Not Available Now". This error code is not present in the documentation.
How can one get access to ISO/F-number/Shutter speed functions in this case?
JSON requests and responses:
Request Methods: {"id":1,"method":"getMethodTypes","version":"1.0","params":[""]}
Response: {"id":1,"results":[["actTakePicture",[],["string*"],"1.0"],["actZoom",["string","string"],["int"],"1.0"],["awaitTakePicture",[],["string*"],"1.0"],["cancelTouchAFPosition",[],[],"1.0"],["getApplicationInfo",[],["string","string"],"1.0"],["getAvailableApiList",[],["string*"],"1.0"],["getAvailableExposureCompensation",[],["int","int","int","int"],"1.0"],["getAvailableExposureMode",[],["string","string*"],"1.0"],["getAvailableFNumber",[],["string","string*"],"1.0"],["getAvailableFlashMode",[],["string","string*"],"1.0"],["getAvailableFocusMode",[],["string","string*"],"1.0"],["getAvailableIsoSpeedRate",[],["string","string*"],"1.0"],["getAvailableLiveviewSize",[],["string","string*"],"1.0"],["getAvailablePostviewImageSize",[],["string","string*"],"1.0"],["getAvailableSelfTimer",[],["int","int*"],"1.0"],["getAvailableShootMode",[],["string","string*"],"1.0"],["getAvailableShutterSpeed",[],["string","string*"],"1.0"],["getAvailableWhiteBalance",[],["{\"whiteBalanceMode\":\"string\", \"colorTemperature\":\"int\"}","{\"whiteBalanceMode\":\"string\", \"colorTemperatureRange\":\"int*\"}*"],"1.0"],["getEvent",["bool"],["{\"type\":\"string\", \"names\":\"string*\"}","{\"type\":\"string\", \"cameraStatus\":\"string\"}","{\"type\":\"string\", \"zoomPosition\":\"int\", \"zoomNumberBox\":\"int\", \"zoomIndexCurrentBox\":\"int\", \"zoomPositionCurrentBox\":\"int\"}","{\"type\":\"string\", \"liveviewStatus\":\"bool\"}","{\"type\":\"string\", \"liveviewOrientation\":\"string\"}","{\"type\":\"string\", \"takePictureUrl\":\"string*\"}*","{\"type\":\"string\", \"continuousError\":\"string\", \"isContinued\":\"bool\"}*","{\"type\":\"string\", \"triggeredError\":\"string*\"}","{\"type\":\"string\", \"sceneRecognition\":\"string\", \"steadyRecognition\":\"string\", \"motionRecognition\":\"string\"}","{\"type\":\"string\", \"formatResult\":\"string\"}","{\"type\":\"string\", \"storageID\":\"string\", \"recordTarget\":\"bool\", \"numberOfRecordableImages\":\"int\", \"recordableTime\":\"int\", \"storageDescription\":\"string\"}*","{\"type\":\"string\", \"currentBeepMode\":\"string\", \"beepModeCandidates\":\"string*\"}","{\"type\":\"string\", \"currentCameraFunction\":\"string\", \"cameraFunctionCandidates\":\"string*\"}","{\"type\":\"string\", \"currentMovieQuality\":\"string\", \"movieQualityCandidates\":\"string*\"}","{\"type\":\"string\", \"checkAvailability\":\"bool\", \"currentAspect\":\"string\", \"currentSize\":\"string\"}","{\"type\":\"string\", \"cameraFunctionResult\":\"string\"}","{\"type\":\"string\", \"currentSteadyMode\":\"string\", \"steadyModeCandidates\":\"string*\"}","{\"type\":\"string\", \"currentViewAngle\":\"int\", \"viewAngleCandidates\":\"int*\"}","{\"type\":\"string\", \"currentExposureMode\":\"string\", \"exposureModeCandidates\":\"string*\"}","{\"type\":\"string\", \"currentPostviewImageSize\":\"string\", \"postviewImageSizeCandidates\":\"string*\"}","{\"type\":\"string\", \"currentSelfTimer\":\"int\", \"selfTimerCandidates\":\"int*\"}","{\"type\":\"string\", \"currentShootMode\":\"string\", \"shootModeCandidates\":\"string*\"}","{\"type\":\"string\", \"currentAELock\":\"bool\", \"aeLockCandidates\":\"bool*\"}","{\"type\":\"string\", \"checkAvailability\":\"bool\", \"currentBracketShootMode\":\"string\", \"currentBracketShootModeOption\":\"string\"}","{\"type\":\"string\", \"checkAvailability\":\"bool\", \"currentCreativeStyle\":\"string\", \"currentCreativeStyleContrast\":\"int\", \"currentCreativeStyleSaturation\":\"int\", \"currentCreativeStyleSharpness\":\"int\"}","{\"type\":\"string\", \"currentExposureCompensation\":\"int\", \"maxExposureCompensation\":\"int\", \"minExposureCompensation\":\"int\", \"stepIndexOfExposureCompensation\":\"int\"}","{\"type\":\"string\", \"currentFlashMode\":\"string\", \"flashModeCandidates\":\"string*\"}","{\"type\":\"string\", \"currentFNumber\":\"string\", \"fNumberCandidates\":\"string*\"}","{\"type\":\"string\", \"currentFocusMode\":\"string\", \"focusModeCandidates\":\"string*\"}","{\"type\":\"string\", \"currentIsoSpeedRate\":\"str
Request Versions: {"id":2,"method":"getVersions","version":"1.0","params":[]}
Response: {"id":2,"result":[["1.0"]]}
Request API: {"id":3,"method":"getAvailableApiList","version":"1.0","params":[]}
Response: {"id":3,"result":[["getVersions","getMethodTypes","getApplicationInfo","getAvailableApiList","getEvent","actTakePicture","stopRecMode","startLiveview","stopLiveview","actZoom","setSelfTimer","getSelfTimer","getAvailableSelfTimer","getSupportedSelfTimer","setExposureCompensation","getExposureCompensation","getAvailableExposureCompensation","getSupportedExposureCompensation","setShootMode","getShootMode","getAvailableShootMode","getSupportedShootMode","getSupportedFlashMode"]]}
Request Flash: {"id":5,"method":"getSupportedFlashMode","version":"1.0","params":[]}
Response Flash: {"id":5,"result":[["off","auto","on","slowSync","rearSync"]]}
Request speed: {"id":5,"method":"getAvailableShutterSpeed","version":"1.0","params":[]}
Response speed: {"id":5,"error":[1,"Not Available Now"]}
There are a couple things that you can check first:
Do you have the latest version of Smart Remote Control installed?
Do you have the latest firmware update for your camera?
I have an atmel UC3-L0 and compass sensor. Now I install AtmelStudio and download some demo code into the board. But I have no idea where the function printf in demo code will appear the data. How should I do to get the data?
The printf function outputs to stdout.
Usually on a "naked" processor with no operating system you need to define how a character is sent or received from a physical interface (usually an USART, console port, USB port, 4-port LCD interface, etc.). So typically you may want to use the USART port of your processor board to connect to a PC running Hyperterm, PuTTY or similar using a serial cable.
In essence you will need to
create FILE streams using the fdev_setup_stream() macro and
provide pointers to functions get() and put() that tell the printf() function how exactly to read and write from/to that stream (e.g. read/write to a USART, an LCD display, etc.).
you may have libraries - depending on your hardware - that already contain such functions (plus the correct port initialisation functions), like e.g. uart.c/.h, lcd.c/.h, etc.
In the documentation of stdio.h (e.g. here) look for the following:
printf(), fdev_setup_stream()
If you have downloaded Atmel Studio you may look into the stdiodemo.c code for further insight.
In order to use printf in ATMEL studio you should check the following things:
Add and Apply the Standard serial I/O module from Project->ASF Wizard.
Also add the USART module from the ASF Wizard.
Include the following code snippet before the main function.
static struct usart_module usart_instance;
static void configure_console(void)
{
struct usart_config usart_conf;
usart_get_config_defaults(&usart_conf);
usart_conf.mux_setting = EDBG_CDC_SERCOM_MUX_SETTING;
usart_conf.pinmux_pad0 = EDBG_CDC_SERCOM_PINMUX_PAD0;
usart_conf.pinmux_pad1 = EDBG_CDC_SERCOM_PINMUX_PAD1;
usart_conf.pinmux_pad2 = EDBG_CDC_SERCOM_PINMUX_PAD2;
usart_conf.pinmux_pad3 = EDBG_CDC_SERCOM_PINMUX_PAD3;
usart_conf.baudrate = 115200;
stdio_serial_init(&usart_instance, EDBG_CDC_MODULE, &usart_conf);
usart_enable(&usart_instance);
}
Make Sure you call the configure_console after system_init() from the main function.
Now go to tools->extension manager. Add the terminal window extension.
Build and Run your program and open the terminal window from view-> terminal window. put the correct com port to which your device is running on and set the baud to 115200 and hit connect on the terminal window.
You should see the printf statements now. (Float doesn't get printed in Atmel studio)
I was recently puzzling over this myself. I has installed Atmel Studio 7.0 and was using the SAMD21 Dev Board via an example project in which a call to printf was made.
In the sample code I saw that there was a configuration section:
/*!
* \brief Initialize USART to communicate with on board EDBG - SERCOM
* with the following settings.
* - 8-bit asynchronous USART
* - No parity
* - One stop bit
* - 115200 baud
*/
static void configure_usart(void)
{
struct usart_config config_usart;
// Get the default USART configuration
usart_get_config_defaults(&config_usart);
// Configure the baudrate
config_usart.baudrate = 115200;
// Configure the pin multiplexing for USART
config_usart.mux_setting = EDBG_CDC_SERCOM_MUX_SETTING;
config_usart.pinmux_pad0 = EDBG_CDC_SERCOM_PINMUX_PAD0;
config_usart.pinmux_pad1 = EDBG_CDC_SERCOM_PINMUX_PAD1;
config_usart.pinmux_pad2 = EDBG_CDC_SERCOM_PINMUX_PAD2;
config_usart.pinmux_pad3 = EDBG_CDC_SERCOM_PINMUX_PAD3;
// route the printf output to the USART
stdio_serial_init(&usart_instance, EDBG_CDC_MODULE, &config_usart);
// enable USART
usart_enable(&usart_instance);
}
In windows device manager I saw that there was an "Atmel Corp. EDBG USB Port (COM3)" listed under "Ports". However, the one of the "Properties" of this port was listed as 9600 Bits per second. I changed this from 9600 to 115200 to be consistent with the config section above.
Finally, I ran PuTTY.exe and set the Connection-->Serial setting to COM3 and 115200 baud. Then I went to Session, then clicked the Serial Connection Type, then clicked the Open button. And, BAM, there's my printf output via PuTTY.