Changes for page Lego On-Line Testing System (KLOTS)
Last modified by Richard Kreissig on 2023/09/14 10:54
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Objects (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -1,7 +5,3 @@ 1 -{{warning}} 2 -This page is not migrated yet. Try the [[old wiki>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler||shape="rect"]] until someone fills me with content. 3 -{{/warning}} 4 - 5 5 {{panel title="Project Overview" borderStyle="dashed"}} 6 6 Responsible: 7 7 ... ... @@ -10,21 +10,14 @@ 10 10 11 11 = KLOTS - KIELER Lego On-line Testing System[[url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/wiki/Projects/KLOTS#KLOTS-KIELERLegoOn-lineTestingSystem||title="Link to this section" shape="rect" class="anchor"]] = 12 12 13 -[[ ~[~[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/klots_logo.png~]~]>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/attachment/wiki/Projects/KLOTS/klots_logo.png||shape="rect"]]9 +[[image:attach:klots_logo.png]] 14 14 15 - 16 - 17 17 ==== Topics ==== 18 18 19 -1. [[Overview>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/wiki/Projects/KLOTS#Overview||shape="rect"]] 20 -1. [[Getting Started>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/wiki/Projects/KLOTS#GettingStarted||shape="rect"]] 21 -1. [[USB and Bluetooth Connection Set-Up>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/wiki/Projects/KLOTS#USBandBluetoothConnectionSet-Up||shape="rect"]] 22 -1. [[Installing the leJOS NXJ Firmware on the NXT Brick>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/wiki/Projects/KLOTS#InstallingtheleJOSNXJFirmwareontheNXTBrick||shape="rect"]] 23 -1. [[Define Connection Protocol>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/wiki/Projects/KLOTS#DefineConnectionProtocol||shape="rect"]] 24 -1. [[Create a New Embedded Java Project>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/wiki/Projects/KLOTS#CreateaNewEmbeddedJavaProject||shape="rect"]] 25 -1. [[Create a New Embedded Java File>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/wiki/Projects/KLOTS#CreateaNewEmbeddedJavaFile||shape="rect"]] 26 -1. [[Introducing the KLOTS Editor>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/wiki/Projects/KLOTS#IntroducingtheKLOTSEditor||shape="rect"]] 27 27 14 + 15 +{{toc maxLevel="2" minLevel="2" outline="true"/}} 16 + 28 28 ---- 29 29 30 30 == Overview == ... ... @@ -33,7 +33,7 @@ 33 33 34 34 For more information about the leJOS NXJ project and especially the leJOS tutorial and NXT Programming API please visit the [[leJOS NXJ website>>url:http://lejos.sourceforge.net/||shape="rect" class="ext-link"]]. 35 35 36 -**Note that KLOTS currently uses leJOS NXJ v0.8.5, not the brand new v0.9.0.** You can download the v0.8.5 API from here[[url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/attachment/wiki/Projects/KLOTS/leJOS_v0.8.5_API.zip||title="Attachment 'leJOS_v0.8.5_API.zip'in Projects/KLOTS" shape="rect" class="attachment"]](% class="noprint" %)[[~[~[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/chrome/common/download.png~]~]>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/leJOS_v0.8.5_API.zip||title="Download" shape="rect"class="trac-rawlink"]](%%).25 +**Note that KLOTS currently uses leJOS NXJ v0.8.5, not the brand new v0.9.0.** You can download the v0.8.5 API from (% class="confluence-link" %) (% class="confluence-link confluence-link" %)[[here>>attach:leJOS_v0.8.5_API.zip]](% class="confluence-link" %) (% class="confluence-link noprint confluence-link" %)[[image:attach:download.png]][[attach:leJOS_v0.8.5_API.zip]](% class="noprint confluence-link" %) (%%). 37 37 38 38 ---- 39 39 ... ... @@ -72,7 +72,7 @@ 72 72 73 73 Then you should be able to start KIELER and select the //KLOTS perspective// (Window->Open Perspective->Other...->KLOTS). 74 74 75 -[[ ~[~[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/perspective.png~]~]>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/attachment/wiki/Projects/KLOTS/perspective.png||shape="rect"]]64 +[[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/perspective.png]][[attach:perspective.png]] 76 76 77 77 ---- 78 78 ... ... @@ -102,20 +102,23 @@ 102 102 103 103 If you are running KLOTS from a non-root user, you will need to ensure that you have read and write access for the NXT USB device in ///dev/bus/usb//. If you can identify the device in ///dev/bus/usb//, you can do this by: 104 104 105 -{{{sudo chmod a+w /dev/bus/usb/xxx/yyy 106 -}}} 94 +{{code language="bash"}} 95 +sudo chmod a+w /dev/bus/usb/xxx/yyy 96 +{{/code}} 107 107 108 108 However, the //yyy// number will count up each time the NXT is disconnected and reconnected. A better solution is to use **udev rules**. How to do this may vary with different Linux systems. To use //udev rules//, set up a file such as ///etc/udev/rules.d/70-lego.rules// and populate it with the following lines: 109 109 110 -{{{# Lego NXT 111 -BUS=="usb", SYSFS{idVendor}=="03eb", GROUP="a Linux user group", MODE="0660" 112 -BUS=="usb", SYSFS{idVendor}=="0694", GROUP="a Linux user group", MODE="0660" 113 -}}} 100 +{{code language="bash"}} 101 +# Lego NXT 102 +BUS=="usb", SYSFS{idVendor}=="03eb", GROUP="a Linux user group", MODE="0660" 103 +BUS=="usb", SYSFS{idVendor}=="0694", GROUP="a Linux user group", MODE="0660" 104 +{{/code}} 114 114 115 115 You should replace the //a Linux user group// entry with the user group to witch your Linux user account belongs. The two vendors are LEGO and Atmel (for the Sam-Ba driver used in firmware update mode). You may need to reload the rules or restart //udev//. On some Linux systems, the command to reload the rules is: 116 116 117 -{{{sudo udevadm control --reload-rules. 118 -}}} 108 +{{code language="bash"}} 109 +sudo udevadm control --reload-rules 110 +{{/code}} 119 119 120 120 === (optional) Bluetooth set-up on Linux systems === 121 121 ... ... @@ -128,8 +128,8 @@ 128 128 129 129 In order to be able to download and execute Embedded Java programs, the leJOS NXJ firmware should be installed on your NXT brick. KLOTS provides an easy firmware flash feature. To install the leJOS NXJ firmware connect the NXT with the computer via USB and turn it on. Then select //Window->Preferences->KIELER->Lego execution->Firmware flash// and follow the instructions. You do not need to set the NXT brick in firmware-update mode, although doing so may help in case you are getting errors during the flash procedure. The whole process should not take more than a minute and after that the new firmware is permanently saved on the NXT's flash memory, so that the original Lego firmware is fully removed. If you want to remove the leJOS NXJ firmware and switch back to the original Lego firmware, you have to flash it on the NXT brick. More information on how to do so can be found on the [[Lego Mindstorms website>>url:http://mindstorms.lego.com/en-us/support/default.aspx||shape="rect" class="ext-link"]]. 130 130 131 -[[ ~[~[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/preferences_firmware_flash1.png~]~]>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/attachment/wiki/Projects/KLOTS/preferences_firmware_flash1.png||shape="rect"]]132 -[[ ~[~[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/preferences_firmware_flash2.png~]~]>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/attachment/wiki/Projects/KLOTS/preferences_firmware_flash2.png||shape="rect"]][[~[~[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/preferences_firmware_flash3.png~]~]>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/attachment/wiki/Projects/KLOTS/preferences_firmware_flash3.png||shape="rect"]]123 +[[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/preferences_firmware_flash1.png]][[attach:preferences_firmware_flash1.png]] 124 +[[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/preferences_firmware_flash2.png]][[attach:preferences_firmware_flash2.png]][[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/preferences_firmware_flash3.png]][[attach:preferences_firmware_flash3.png]] 133 133 134 134 ---- 135 135 ... ... @@ -137,7 +137,7 @@ 137 137 138 138 Next you must specify how KLOTS shall communicate with the NXT brick. There are two possible options: communication via USB or communication via Bluetooth. Select //Window->Preferences->KIELER->Lego execution// and choose your favored connection type. In addition you can specify the brick's hardware address or friendly name. To save you all the manual selections, you can simply click on the //Search for NXTs// button and then choose your NXT from the list of found bricks. Note that for establishing Bluetooth connection, your NXT and computer should be already paired. The pairing procedure may vary with different operating systems and Bluetooth stacks. However you should always initiate it from the computer, not from the NXT brick. The default NXT PIN for the Bluetooth connection is set to **1234**. 139 139 140 -[[ ~[~[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/preferences_connection1.png~]~]>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/attachment/wiki/Projects/KLOTS/preferences_connection1.png||shape="rect"]][[~[~[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/preferences_connection2.png~]~]>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/attachment/wiki/Projects/KLOTS/preferences_connection2.png||shape="rect"]]132 +[[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/preferences_connection1.png]][[attach:preferences_connection1.png]][[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/preferences_connection2.png]][[attach:preferences_connection2.png]] 141 141 142 142 ---- 143 143 ... ... @@ -145,7 +145,7 @@ 145 145 146 146 In order to be able to write your first program, you should create a new Embedded Java project. To do so, select //File->New->Project...->KIELER->Embedded Java Project//. Then specify the new project's name and click on //Finish//. The project will be then automatically created and appears in the //Project Explorer View// on the right site. 147 147 148 -[[ ~[~[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/new_embedded_java_project.png~]~]>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/attachment/wiki/Projects/KLOTS/new_embedded_java_project.png||shape="rect"]]140 +[[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/new_embedded_java_project.png]][[attach:new_embedded_java_project.png]] 149 149 150 150 ---- 151 151 ... ... @@ -153,17 +153,34 @@ 153 153 154 154 You are now ready to create a new Embedded Java file. Click on the project and package in witch you wish to create the new file and select //New->Other...->KIELER->Embedded Java File//. Type in a name for the new file and click on //Finish//. Note that the file name should not exceed 20 characters including the file extension. 155 155 156 -[[ ~[~[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/new_embedded_java_file.png~]~]>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/attachment/wiki/Projects/KLOTS/new_embedded_java_file.png||shape="rect"]]148 +[[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/new_embedded_java_file.png]][[attach:new_embedded_java_file.png]] 157 157 158 158 ---- 159 159 160 160 == Introducing the KLOTS Editor == 161 161 162 -[[~[~[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/buttons_all.png~]~]>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/attachment/wiki/Projects/KLOTS/buttons_all.png||shape="rect"]]When the KLOTS perspective is activated, Embedded Java files //(.java)// will be automatically associated with the //KLOTS Editor//. To open an Embedded Java file simply double-click on it. The KLOTS Editor offers the full functionality of the //standard Eclipse Java Editor// as well as means to build, download and execute Embedded Java programs on the NXT brick. The easiest way to check if a file is displayed in the KLOTS Editor is to look at the editor's toolbar. There should be four new buttons. 154 +{{section}} 155 +{{column width="90%"}} 156 +When the KLOTS perspective is activated, Embedded Java files //(.java)// will be automatically associated with the //KLOTS Editor//. To open an Embedded Java file simply double-click on it. The KLOTS Editor offers the full functionality of the //standard Eclipse Java Editor// as well as means to build, download and execute Embedded Java programs on the NXT brick. The easiest way to check if a file is displayed in the KLOTS Editor is to look at the editor's toolbar. There should be four new buttons. 157 +{{/column}} 163 163 164 -[[~[~[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/buttons_build.png~]~]>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/attachment/wiki/Projects/KLOTS/buttons_build.png||shape="rect"]]You can now write your code in the corresponding section and click on the **Build Embedded Java Program** button. Your program will then be build and linked with the leJOS NXJ library. An executable file named //<your_program's_name>.nxj// should appear in the project's //bin// folder. 165 - Sometimes, while running your program on the NXT brick, you may get a "blue screen", i.e. the brick plays an error tune and a message like 159 +{{column width="10%"}} 160 +[[image:attach:buttons_all.png]] 161 +{{/column}} 162 +{{/section}} 166 166 164 +{{section}} 165 +{{column width="90%"}} 166 +You can now write your code in the corresponding section and click on the **Build Embedded Java Program** button. Your program will then be build and linked with the leJOS NXJ library. An executable file named //<your_program's_name>.nxj// should appear in the project's //bin// folder. 167 +{{/column}} 168 + 169 +{{column width="10%"}} 170 +[[image:attach:buttons_build.png]] 171 +{{/column}} 172 +{{/section}} 173 + 174 +Sometimes, while running your program on the NXT brick, you may get a "blue screen", i.e. the brick plays an error tune and a message like 175 + 167 167 |((( 168 168 Java Exception: 169 169 ))) ... ... @@ -179,22 +179,45 @@ 179 179 180 180 appears on the display. This indicates that an uncaught Java //Runtime Exception//, e.g. (% style="color: rgb(0, 0, 0); color: rgb(0, 0, 0)" %)//NullPointerException//(% style="color: rgb(0,0,0);" %),(%%) occurred somewhere in your program. The error message indicates the kind of the exception and the method where it was thrown. This information is produced by the program build procedure and you can see it by clicking on the //Details// button. It can be very helpful for debugging your programs. 181 181 182 -[[~[~[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/build_program_output.png~]~]>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/attachment/wiki/Projects/KLOTS/build_program_output.png||shape="rect"]] 183 -\\ 191 +[[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/build_program_output.png]][[attach:build_program_output.png]] 184 184 185 -[[~[~[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/buttons_download.png~]~]>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/attachment/wiki/Projects/KLOTS/buttons_download.png||shape="rect"]]By clicking on the **Download Embedded Java Program to NXT** button the executable file will be downloaded to your NXT brick. The file will then appear in the //Files// submenu on the brick. Note that for the downloading process the NXT should be turned on and connected to the computer via USB. (You can also download programs via Bluetooth.) 193 +{{section}} 194 +{{column width="90%"}} 195 +By clicking on the **Download Embedded Java Program to NXT** button the executable file will be downloaded to your NXT brick. The file will then appear in the //Files// submenu on the brick. Note that for the downloading process the NXT should be turned on and connected to the computer via USB. (You can also download programs via Bluetooth.) 196 +{{/column}} 186 186 187 -[[~[~[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/buttons_run.png~]~]>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/attachment/wiki/Projects/KLOTS/buttons_run.png||shape="rect"]]To run the program on your NXT brick, in case the program uses the //remote print// option and you want to enable remote printing, you should click on the **Run Embedded Java Program on NXT** button. The program will then be started on the NXT and you should specify **on the brick** whether or not you want to enable remote printing and the protocol for the connection with the computer (USB or Bluetooth). Then you should make the corresponding selection in KLOTS. 198 +{{column width="10%"}} 199 +[[image:attach:buttons_download.png]] 200 +{{/column}} 201 +{{/section}} 202 + 203 +{{section}} 204 +{{column width="90%"}} 205 +To run the program on your NXT brick, in case the program uses the //remote print// option and you want to enable remote printing, you should click on the **Run Embedded Java Program on NXT** button. The program will then be started on the NXT and you should specify **on the brick** whether or not you want to enable remote printing and the protocol for the connection with the computer (USB or Bluetooth). Then you should make the corresponding selection in KLOTS. 188 188 **Remember to do the connection selection always on the NXT site first, since doing otherwise can trigger connection abort!** 207 +{{/column}} 189 189 190 -[[~[~[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/buttons_console.png~]~]>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/attachment/wiki/Projects/KLOTS/buttons_console.png||shape="rect"]]The remote prints will be then displayed on the //KLOTS Console// on the right site of the KLOTS Perspective. You can temporary disable the remote printing by clicking on the **Disable Console** button. You can then enable remote printing at any time by simply clicking on that button again. 209 +{{column width="10%"}} 210 +[[image:attach:buttons_run.png]] 211 +{{/column}} 212 +{{/section}} 191 191 192 -[[~[~[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/new_embedded_java_file_example_console1.png~]~]>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/attachment/wiki/Projects/KLOTS/new_embedded_java_file_example_console1.png||shape="rect"]][[~[~[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/new_embedded_java_file_example_console2.png~]~]>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/attachment/wiki/Projects/KLOTS/new_embedded_java_file_example_console2.png||shape="rect"]] 214 +{{section}} 215 +{{column width="90%"}} 216 +The remote prints will be then displayed on the //KLOTS Console// on the right site of the KLOTS Perspective. You can temporary disable the remote printing by clicking on the **Disable Console** button. You can then enable remote printing at any time by simply clicking on that button again. 217 +{{/column}} 193 193 219 +{{column width="10%"}} 220 +[[image:attach:buttons_console.png]] 221 +{{/column}} 222 +{{/section}} 223 + 224 +[[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/new_embedded_java_file_example_console1.png]][[attach:new_embedded_java_file_example_console1.png]][[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/new_embedded_java_file_example_console2.png]][[attach:new_embedded_java_file_example_console2.png]] 225 + 194 194 If you are not using remote printing, or do not want to enable communication with a computer, you can also start a program by choosing it from the //Files// submenu on the NXT brick. 195 195 196 196 === An Embedded Java sample program === 197 197 198 -[[ ~[~[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/new_embedded_java_file_example_editor1.png~]~]>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/attachment/wiki/Projects/KLOTS/new_embedded_java_file_example_editor1.png||shape="rect"]][[~[~[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/new_embedded_java_file_example_editor2.png~]~]>>url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/attachment/wiki/Projects/KLOTS/new_embedded_java_file_example_editor2.png||shape="rect"]]230 +[[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/new_embedded_java_file_example_editor1.png]][[attach:new_embedded_java_file_example_editor1.png]][[image:url:http://trac.rtsys.informatik.uni-kiel.de/trac/kieler/raw-attachment/wiki/Projects/KLOTS/new_embedded_java_file_example_editor2.png]][[attach:new_embedded_java_file_example_editor2.png]] 199 199 200 200 ----
- Confluence.Code.ConfluencePageClass[0]
-
- Id
-
... ... @@ -1,1 +1,1 @@ 1 -8851 301 +885160 - URL
-
... ... @@ -1,1 +1,1 @@ 1 -https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/KIELER/pages/8851 30/Lego On-Line Testing System (KLOTS)1 +https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/KIELER/pages/885160/Lego On-Line Testing System (KLOTS)