Download Version 0.2.3. Please email me to let me know you're trying it out.
New: Andy Piper used jarbuilder to provide Stripes 0.2.3 with a proper Mac UI, download here!
This is the main page for Stripes, a simple and fast java-based Stripboard Designer app. It's a reaction to Stripboard Designer written by Forrest Higgs and published on the RepRap.org website. Because I’m designing a number of small circuits on an experimental basis and I use stripboard with the intention of being able to design and produce them quickly, I’ve been on the look-out for a simple stripboard designing application.
Like Forrest I managed to find a number that were either not really free, or not really simple, or actually really clunky (for example, because they were excructiatingly slow on my 1.5GHz PowerBook G4 even after adding a few components). On the other hand, because Forrest wrote his in VB Express for Windows I wasn’t easily able to run it. Besides, running it means installing a whole load of VB.NET on a Windows machine. So instead I bit the bullet in early October 2009 and decided to write my own version. Stripes bears some similarity to Stripboard designer, but there are some major differences:
Stripes is written in Java/Swing and not in Visual Basic. This means I can make use of Java’s better object-oriented features.
Stripes is much shorter than Stripboard Designer. It does more in around 2/3 of the code.
Stripes is driven by conventional menu options. Even in version 0.2 they don’t all work, but they are becoming increasingly useful.
Stripes is very portable. It's known to run on Mac OS X and XUbuntu/OpenJava (PPC) and has successfully run on Windows XP.
Stripes is fast. It runs quickly even on my 600MHz iBook.
Stripes has been in active development, there have been about four versions since October 2009, fixing bugs and adding features.
Stripes supports multiple boards (though it’s a bit awkward at doing that at the moment).
Stripes has a few bugs in it!
Stripes is supplied as a .jar file. On my Mac I can just double-click it to run it, but it can be started from the command line with:
java -jar Stripes.jar
The initial display is a main board and (although the cursor never changes) you are set up to pick and place components. You might find it easier to just see what the program does in summary:
You can easily muck about by placing components, clicking, dragging; you can move components by their contacts or select them and drag them to different locations. Shift-select; marquee select (and shift-marquee select) work; cut, copy, paste and clear work; Save As; Open and Quit work. View Tracks works. In addition you can now place labels on your circuit by choosing the text tool and clicking on a grid location.
At the moment that’s pretty much everything.
You can pick and place components by selecting the component type from the component menu. There are two types of track breaks; several colours for wires; a number of descrete components; DIL ICs of various sizes (Stripboard doesn’t easily support any other kind); generic resizable headers.
Components with a fixed size (breaks / ICs / Connectors) are placed by clicking on a location. All the other components can be drawn by dragging from where you want to start the component to where you want to end it.
Transistors can be placed in the same way, but the base of the transistor is also a contact you can drag around afterwards.
In a similar way you can drag other contacts to move the connections for components around.
If you click on a component’s contact (it doesn’t work if you click on the central part of a component), then the component will be selected and you can drag the whole component round.
You can shift-click on more components; a bounding box shows the full bounds over all the components you’ve selected - it’s a bit crude at the moment.
You can choose the Marquee-selection tool. Here, dragging over a range will select a number of components and shift-dragging will add the new selection to the old one.
You can use the edit menu to cut, copy, paste and clear selections.
You can use the View menu to see your track cuts on the other side - they are shown correctly with the x-axis reversed. Updating the main view will cause the track view to update too.
You can use the File menu to Save As... your board and Open a new board. Since you can open multiple boards, you can use that mechanism to work with multiple boards at the same time.
From v 0.2.0 you can add annotation to your circuits using the text tool. Just choose the text tool and then click somewhere on the board. Choosing another tool will place any text you typed as a label; which you can drag around using its orange anchor point.
Stripes is a java / Swing application and the source code is included in the .zip file. I developed Stripes using just the basic command line compiler. To do any development for Stripes means you need the java development kit: Jdk / OpenJdk. There are some good reasons to help improve Stripes. For example, Stripes has a limited component list and you might want to add to it.
From Stripes 0.1.3 it's easier to add your own components (although stripes is fairly restrictive on how you use them). For example, let's say you wanted to add a standard USB B-type connector with a suitable outline. To add it, you'll need to add to the list of commands and create a new connector class. This is how you can do it, step-by-step:
Change the Stripes extension to .zip and then unzip it into the directory Stripes. Now it's unzipped you'll need to run Stripes by cd'ing to Stripes and using the command: java -cp .:start start.Stripes.
Create a dummy Connector class. We'll start with the handy TerminalHousing3 connector class. Just copy and paste and replace all occurances of TerminalHousing3 in the class with UsbBConnector.
You need a menu option to choose it. Add , "UsbBConnector" to the String array kComponentsConnectorsMenuItems.
Compile Stripes with javac start/Stripes.java and run it. You should have a Components:Connectors:UsbBConnector option now, but it will produce TerminalHousing3 components.
Now you can change the component. New connectors need to know how many line segments there are in the connector (a USB B has 4); the dimensions of the connector (a USB B is 6x5 units); you need to tell it the coordinates of all the points in its drag method; you need to provide the bounds for the connector (relative to the current coordinates; which should be centred on a USB contact); finally you need to provide the draw method.
When you have done this for a USB-B connector you should end up with a working ElectricalUsbBConnector class (the Usb B connector class is included from v 0.2.0).
Bugs, Limitations and Philosophy
Stripes has bugs and limitations. Some menu options don’t work. Closing the main window closes the app, not the window (not normal on a Mac). Save As... works, but Save doesn’t. Buzz doesn’t work (it’s intended to help buzz out a circuit). New doesn’t work (it should create a new board from dimensions you specify). You can't undo mistakes; nor arrange, nor annotate objects. These are things I obviously would want to change on future versions.
On Stripboard designer RepRap people have made comments about being able to generate files for milling stripboards based on the drawn files. This is a good idea - it’ll reduce the number of errors made when building the stripboards. I guess at some point a RepRap will function as a pick and place machine! It’s worth adding this in a future version too.
You can’t yet place wires and components on the Track side of the board. Generally I think this is undesirable, but it’s an intended future feature. If you find that Stripes keeps crashing, you can enable console debug by running stripes with:
java -jar Stripes.jar --debug
You can make stripes wires thicker by running stripes with:
java -jar Stripes.jar --wire-width=4.0
The major Philosophy for Stripes is that it should be simple and fast. I want it to run well on lowly hardware; stuff slower than a 600MHz iBook. Mostly, this is because I’m really tired of the way software continually slows down and more to the point, I don’t want updates to Stripes to force me to buy extra, faster hardware. Since I’ve written it, I reserve the right to officially run it on my own computers, I don’t think that’s too much to ask. Anyway, it shouldn’t be a problem for the moment at the current level of simplicity.
Secondly, I don't want to clutter the main window with menu options masquerading as icons; I'd sooner use menu options since it's harder to convey verbs with icons, but natural with menus.
Unlike Forrest, I think the GPL is good. So, Stripes is released under the GPL; if you unzip Stripes.jar you'll find the source code and licence notice in Stripes/Stripes.Java. I've also included the full licence text in Stripes/COPYING.txt
Version History ( Version.Features.BugFixRelease )
0.1.2: Initially released version, 26/09/09 (with a contact net bug fixed).
0.1.3: Connector class added, board coordinate bug fixed, debug option on command line (with usage), About box says version#. Example connector class (TerminalHousing3) added. Tutorial added to ReadMe.
0.2.0: UsbBConnector added as default. Wire width is now adjustable via a command-line launch. Stripboard strips are easier to identify. Labelling has been added.
0.2.1: Din5Socket added.
0.2.2: Text label reading error fixed. Stripes now uses generic Headers.
0.2.3: Button component added.