Differences

This shows you the differences between the selected revision and the current version of the page.

optical:neurospy:devel 2007/10/11 11:44 optical:neurospy:devel 2008/12/17 05:51 current
Line 1: Line 1:
 +[[../../neurospy/home|Back to neurospy documentation home]]
 +
====== Guide to developing neurospy ====== ====== Guide to developing neurospy ======
Line 6: Line 8:
[[install|install]] and [[manual|use]] the software. [[install|install]] and [[manual|use]] the software.
 +
 +===== About NetBeans Platform =====
What exactly is the What exactly is the
[[http://platform.netbeans.org|NetBeans Platform]] [[http://platform.netbeans.org|NetBeans Platform]]
-and why is it important?  Read the essay about the +and why is it important?  The quick answer is that the Platform and the 
- [[http://dvbcentral.sourceforge.net/netbeans-runtime.html|NetBeans Runtime Container]]+Integrated Development Environment (IDE) built on top of it 
 +simplify development and deployment of large 
 +and complex applications by facilitating modularization and 
 +encouraging good design practices. 
 +Combined with the prevalence of 
 +[[http://www.fluffycat.com/Java-Design-Patterns/|Java Patterns]] 
 +in modern software development this saves time and 
 +dramatically increases productivity of large teams compared 
 +to "roll your own" solutions.  There are many 
 +plug-in modules being actively developed for the Platform, 
 +meaning that your application, no matter how small, can 
 +take advantage of all the future improvements without ever 
 +having to recompile any code, for as long as the [[APIs]] it 
 +builds on are not [[deprecated]] as part of their natural 
 +[[lifecycle]]. 
 +For a longer treatise read the essay about the 
 +[[http://dvbcentral.sourceforge.net/netbeans-runtime.html|NetBeans Runtime Container]]
by Jaroslav Tulach. by Jaroslav Tulach.
 +
 +If you're new to NetBeans head over to [[NetBeans basics]] for
 +many digested tips.  The following links lead to much more information
 +should you decide to delve deeper---NetBeans has a large and very active
 +user community and is being continuously improved by a small army of
 +both paid and volunteer programmers around the world.
 +
 +  * [[http://wiki.netbeans.org/wiki/view/NetBeansDeveloperFAQ|NetBeans developer FAQ]]
 +
 +  * [[http://www.nabble.com/Netbeans.org-f2602.html|netbeans.org forums on nabble]]
 +
 +  * [[http://bits.netbeans.org/dev/javadoc/|NetBeans API list]]
 +
 +  * [[http://bits.netbeans.org/dev/javadoc/apichanges.html|List of recent changes to the APIs]]
 +
 +==== Why NetBeans? ====
In case you're torn between [[http://www.ni.com/labview/|LabView]] and a Real In case you're torn between [[http://www.ni.com/labview/|LabView]] and a Real
Line 21: Line 57:
first. first.
 +
 +
 +===== neurospy Architecture Overview =====
 +
 +It is a common mistake to think of neurospy as a "program".
 +It is more accurate to think of it as an "Application Framework".
 +What this means is that "neurospy" is simply a brand put on a
 +loose collection of modules that, once deployed together and
 +configured properly, make up an application for data acquisition
 +and analysis.  The application can then be extended to do other
 +things by simply dropping in additional modules downloaded from
 +the net.  For instance, the Java editor and compiler from the
 +NetBeans IDE can be made available as part of neurospy so that
 +additional neurospy-related functionality can be developed and
 +tested inside of the running neurospy application, without
 +having to have a separate IDE open.  In the same fashion any of
 +the modules that are part of neurospy can be made part of other
 +branded applications.
 +
 +The modules in neurospy are organized in a logical hierarchy of
 +dependence.  Low-level modules are, for instance, the ones that
 +talk to acquisition hardware, or that read and save data files
 +in a particular format.  These
 +have few dependencies other than those on the underlying system
 +libraries.  Next level up are modules that abstract or combine
 +functionality from one or more low-level modules.  Finally, at
 +the top of the hierarchy are modules that combine all of this
 +underlying functionality into high-level tasks perceived by the
 +user, such as "scan a full frame and save the image to disk".
 +The [[mvc|Model-View-Controller]] paradigm is used pervasively
 +throughout.
 +
 +This [[moduledependencies|diagram]] shows the tree of
 +dependencies between the various modules.
 +
 +Here are the descriptions of the different subsystems:
 +
 +  * [[protocols|Protocols]]
 +  * [[dataflow|Data Flow]]
 +  * [[scheduling|Scheduling]]
 +  * [[scanners|Scanners]]
 +  * [[digitizers|Digitizers]]
 +  * [[motion|Motion Control]]
 +  * [[cdm|CDM File Type Support]]
 +
 +
 +
 +
 +===== Miscellaneous =====
  * [[jai|About Java Advanced Imaging (JAI)]]   * [[jai|About Java Advanced Imaging (JAI)]]
 +  * [[imagej|Adapting ImageJ plugins to neurospy]]
 +  * [[USBcommunication|USB drivers and communication]]
 +=== Hardware Support ===
-  * [[timings|Limits on how fast one can scan with Direct Digital Synthesis]]+  * [[NSC 200 controllers]]
 +  * [[timings|Limits on how fast one can scan with a AD9959/PCB Direct Digital Synthesis board]]

Personal Tools