Trace:
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]] | ||