CONFOCALMICROSCOPY Archives

October 2008

CONFOCALMICROSCOPY@LISTS.UMN.EDU

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Johan Henriksson <[log in to unmask]>
Reply To:
Confocal Microscopy List <[log in to unmask]>
Date:
Sat, 11 Oct 2008 01:45:20 +0200
Content-Type:
multipart/mixed
Parts/Attachments:
text/plain (1885 bytes) , ix81.txt (3257 bytes)
we've acquired some new equipment at our facility, including an olympus
ix81. unfortunately olympus happens to be one of those few companies
left that still refuse to give out protocol specifications, unless with
some effort you manage to sign an NDA. the problem with the NDA is that
we want to share the code so others can repeat our experiments. I've
told this to a salesperson at olympus but still no reply; it would be
nice if others also could point out that the investment is at jeopardy
without this kind of information. for example, the now hyped feature of
creating mosaic images is a one-hour programming exercise with proper
documentation. or you go out and buy yet another limited software
package, for money that could have been spent better (if there is one
that works with your hardware).

anyway, we had a small team sit down for two hours and reverse engineer
the stand, with legal precautions. most of it is done and attached.
we're looking for beta testers since I know there are related models,
ix71 & ix91, maybe more, and it would be nice if compatibility could be
confirmed. send me a private mail in that case. to see if it works, just
use the Hyper Terminal in windows, with the attached commands. if you
have signed an NDA you can for legal reasons not participate.

want to try reverse engineering? if you run windows and the equipment
has a parallel or serial interface then it's trivial. you can use for
example portmon
(http://technet.microsoft.com/en-us/sysinternals/bb896644.aspx). to be
legally safe you should have 3 teams; one analyzing the hardware and
writing a specification, one which implements the specification, and one
that tests the implementation. sometimes it's possible with fewer.

happy hacking!

/Johan

-- 
--
------------------------------------------------
Johan Henriksson
MSc Engineering
PhD student, Karolinska Institutet
http://mahogny.areta.org http://www.endrov.net





Olympus IX81 microscope stand ===================================================== These commands have been obtained by using "Portmon for Windows v3.02", logging the traffic from bundled software. Commands are sent over a serial cable. Each command is ended by CR LF (0x0d 0x0a) Command is separated by arguments by a single space. Replies might not need not arrive in order, it seems the stand supports event driven programming as opposed to polling. Replies can be sent without a query if status changes. Serial port mode ================ baud: 19200 StopBits: ERROR Parity: EVEN WordLength: 8 EOF:0 ERR:0 BRK:0 EVT:a XON:11 XOFF:13 Shake:80000008 Replace:80 XonLimit:2048 XoffLimit:512 Querying value ============== If a command has name CMD then a status query can be sent as   'CMD?' whereby the stand will reply   'CMD xxx' where xxx is the value. Setting value ============= if CMD is the command then write   'CMD xxx' where xxx is the value. Undetermined value ================== It seems the stand can reply + as the argument, meaning "currently not determined", while state is being changed. Command list ======================= # is used whenever something needs confirmation ==Shutter 1 command: 1SHUT1 observed argument: IN OUT ==Shutter 2 command: 1SHUT2 observed argument: IN OUT ==#mirror unit command: 1MU observed argument: 3 5 +(read) polled a lot maybe related to objective change ==objective command: 1OB observed argument: 2 3 +(read) ==Lamp source command: 1LMPSEL observed argument: DIA probably selection of which light source to have turned on. #EPI might be another argument ==#Lamp intensity command: 1LMP observed argument: 0 ==Condenser selection command: 1CD observed argument: 5 ==Prism selection command: 1PRISM observed argument: 1 2 +(read) 1=eye piece 2=side i.e. camera (need confirmation) ==#autofocus command: 2AFSTS observed argument: OFF ==#jog dial sensitivity command: 2JOGSNS observed argument: 9 +(read) ==#movement, relative? command: 2MOV observed written arg: F,3000000 observed written arg: N,600000 observed read arg: !,E02412 ==#absolute position Z command: 2POS observed argument: 610000 598625 10000 ========= todo need to check for a version command to allow plug and play ====================== additional log, setting 20x ============ 0.00000148 ANDOR iQ.exe IRP_MJ_READ Serial0 SUCCESS Length 11: 2JOGSNS +.. 0.00002462 ANDOR iQ.exe IRP_MJ_WRITE Serial0 SUCCESS Length 7: 2POS?.. 0.00000131 ANDOR iQ.exe IRP_MJ_READ Serial0 SUCCESS Length 13: 2POS 610000.. 0.00002384 ANDOR iQ.exe IRP_MJ_WRITE Serial0 SUCCESS Length 7: 2POS?.. 0.00000129 ANDOR iQ.exe IRP_MJ_READ Serial0 SUCCESS Length 13: 2POS 610000.. 0.00817574 ANDOR iQ.exe IRP_MJ_WRITE Serial0 SUCCESS Length 16: 2MOV F,3000000.. 0.00000244 ANDOR iQ.exe IRP_MJ_READ Serial0 SUCCESS Length 15: 2MOV !,E02412.. 0.00002848 ANDOR iQ.exe IRP_MJ_WRITE Serial0 SUCCESS Length 7: 1OB 2.. 0.00000249 ANDOR iQ.exe IRP_MJ_READ Serial0 SUCCESS Length 7: 1OB +.. 0.00002955 ANDOR iQ.exe IRP_MJ_WRITE Serial0 SUCCESS Length 7: 2POS?.. 0.00000143 ANDOR iQ.exe IRP_MJ_READ Serial0 SUCCESS Length 12: 2POS 10000.. 0.00817658 ANDOR iQ.exe IRP_MJ_WRITE Serial0 SUCCESS Length 15: 2MOV N,600000..

ATOM RSS1 RSS2