I have started working on retrieving some settings and values, for now only the frame number works, everything else fails.
It seems I have something wonky on the side of buffers, I get some of the identification string when i dataRead() after sending a command to retrieve the frame number... where it shouldn't since after the identification we should be "clean", adding some libserialport flush didn't help.
dashie@ubuntu-shared:~/pikon$ ./pikon get_settings 16:06:28 INFO src/nikonDatalink.cpp:36: Starting session. 16:06:28 INFO src/nikonDatalink.cpp:133: libserialport version: 0.1.1 16:06:28 INFO src/nikonDatalink.cpp:134: Port name: /dev/ttyUSB0 16:06:28 INFO src/nikonDatalink.cpp:135: Description: FT232R USB UART - A50285BI 16:06:28 INFO src/nikonDatalink.cpp:169: Identifying camera... 16:06:28 INFO src/nikonDatalink.cpp:170: Sending wakeup string... 16:06:28 INFO src/nikonDatalink.cpp:184: Sending nikon inquiry string... 16:06:30 INFO src/nikonDatalink.cpp:184: Sending nikon inquiry string... 16:06:30 INFO src/nikonDatalink.cpp:55: Camera is a N90/F90 Film present, frame 23 ISO: 6 Lens: id: 0 - focal min: - - ap min: 1 Focale: - 16:06:32 INFO src/nikonDatalink.cpp:79: Ending session.
Here everything after the frame should not be empty (ISO should be 400). It is to be noted that the frame counter returned by the Nikon is the next frame so here it does -1 to show the actual one.
Verbosly annoying debug log:
Notes:
XXXXXXX is the limit between all the wakeup + identification part, and start of retrieval (sendCommand etc.)
The first retrieval is at address 0x0000FD21 which is the frame counter, and the readData after that command seems to return "F90/N90" which is part of the identification string. After ident we should be clear but something is wrong, adding libserialport flush didn't helped.
Somehow the retrieval of frame number ends up working, but every sendCommand after that fails and returns garbage.
Also adding a longer sleep (like 3 seconds) after ident make everything fails, but it might be due to how the protocol/mcu works.
16:14:01 INFO src/nikonDatalink.cpp:169: Identifying camera... 16:14:01 INFO src/nikonDatalink.cpp:170: Sending wakeup string... 16:14:01 DEBUG src/nikonDatalink.cpp:259: writeDataSlow: '', size: 1 16:14:01 INFO src/nikonDatalink.cpp:184: Sending nikon inquiry string... 16:14:01 DEBUG src/nikonDatalink.cpp:259: writeDataSlow: 'S1000', size: 6 16:14:03 DEBUG src/nikonDatalink.cpp:345: readData: 'ED58CA84' / '', read: 0, expected: 1, err: -1 16:14:03 INFO src/nikonDatalink.cpp:184: Sending nikon inquiry string... 16:14:03 DEBUG src/nikonDatalink.cpp:259: writeDataSlow: 'S1000', size: 6 16:14:03 DEBUG src/nikonDatalink.cpp:345: readData: 'ED58CA84' / '1', read: 1, expected: 1, err: 0 16:14:03 DEBUG src/nikonDatalink.cpp:345: readData: 'ED58CA85' / '0', read: 1, expected: 1, err: 0 16:14:03 DEBUG src/nikonDatalink.cpp:345: readData: 'ED58CA86' / '1', read: 1, expected: 1, err: 0 16:14:03 DEBUG src/nikonDatalink.cpp:345: readData: 'ED58CA87' / '0��X��', read: 1, expected: 1, err: 0 16:14:03 DEBUG src/nikonDatalink.cpp:345: readData: 'ED58CA88' / 'F�X��', read: 1, expected: 1, err: 0 16:14:03 DEBUG src/nikonDatalink.cpp:345: readData: 'ED58CA89' / '9X��', read: 1, expected: 1, err: 0 16:14:03 DEBUG src/nikonDatalink.cpp:345: readData: 'ED58CA8A' / '0��', read: 1, expected: 1, err: 0 16:14:03 DEBUG src/nikonDatalink.cpp:345: readData: 'ED58CA8B' / '/�', read: 1, expected: 1, err: 0 16:14:03 DEBUG src/nikonDatalink.cpp:345: readData: 'ED58CA8C' / 'N', read: 1, expected: 1, err: 0 16:14:03 DEBUG src/nikonDatalink.cpp:345: readData: 'ED58CA8D' / '9', read: 1, expected: 1, err: 0 16:14:03 DEBUG src/nikonDatalink.cpp:345: readData: 'ED58CA8E' / '0', read: 1, expected: 1, err: 0 16:14:03 DEBUG src/nikonDatalink.cpp:345: readData: 'ED58CA8F' / '', read: 1, expected: 1, err: 0 16:14:03 DEBUG src/nikonDatalink.cpp:345: readData: 'ED58CA90' / 'WX��', read: 2, expected: 2, err: 0 16:14:03 INFO src/nikonDatalink.cpp:55: Camera is a N90/F90 16:14:04 INFO src/main.cpp:124: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 16:14:04 DEBUG src/nikonDatalink.cpp:383: Sending command, mode: 0x80, address: FD21, buffer: , size: 1 16:14:04 DEBUG src/nikonDatalink.cpp:434: Sending command loop, mode: 0x80, address: FD21, buffer: , size: 1 16:14:04 DEBUG src/nikonDatalink.cpp:293: writeData: 'ED58C960' 16:14:04 DEBUG src/nikonDatalink.cpp:584: reading a data packet with buf=, size=1 16:14:04 DEBUG src/nikonDatalink.cpp:345: readData: 'ED58CA84' / 'F90/N90', read: 4, expected: 4, err: 0 16:14:04 DEBUG src/nikonDatalink.cpp:293: writeData: 'ED58C960' 16:14:04 DEBUG src/nikonDatalink.cpp:584: reading a data packet with buf=, size=1 16:14:04 DEBUG src/nikonDatalink.cpp:345: readData: 'ED58CA84' / '', read: 4, expected: 4, err: 0 1 buf: 0xf1 partial: 0x1, address: 0xFD21 buf: 358217969 2 buf: 0xf2, partial: 0x1, address: 0xFD21 16:14:04 DEBUG src/nikonDatalink.cpp:383: Sending command, mode: 0x80, address: FD25, buffer: , size: 9 16:14:04 DEBUG src/nikonDatalink.cpp:434: Sending command loop, mode: 0x80, address: FD25, buffer: , size: 9 16:14:04 DEBUG src/nikonDatalink.cpp:293: writeData: 'ED58C960' 16:14:04 DEBUG src/nikonDatalink.cpp:584: reading a data packet with buf=, size=9 16:14:05 DEBUG src/nikonDatalink.cpp:345: readData: 'ED58CA84' / '', read: 12, expected: 12, err: 0 1 buf: 0xf2 partial: 0x9, address: 0xFD25 buf: 358217970 2 buf: 0xfb, partial: 0x9, address: 0xFD25
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.
it is to be noted that putting the sendCommand for ISO before FrameNumber does retrieve the ISO, only the first sendCommand works, the others fails
Are you sure? yes | no