├── LICENSE ├── README.md └── packages ├── 00packages ├── 3dprt.zip ├── 3dprt ├── 3dprt.py ├── dir_down.png ├── dir_down.svg ├── dir_left.png ├── dir_left.svg ├── dir_right.png ├── dir_right.svg ├── dir_up.png ├── dir_up.svg ├── gcodes │ ├── 3d-logo.gcode │ ├── 3d-logo.png │ ├── angular_block-45-degrees.gcode │ ├── angular_block-45-degrees.png │ ├── box-45x45x45-with-groove.gcode │ ├── box-45x45x45-with-groove.png │ ├── box-45x45x45.gcode │ ├── box-45x45x45.png │ ├── building-block-15-with-groove.gcode │ ├── building-block-15-with-groove.png │ ├── building-block-30-with-groove.gcode │ ├── building-block-30-with-groove.png │ ├── can-45x45.gcode │ ├── can-45x45.png │ ├── chip-ft.gcode │ ├── chip-ft.png │ ├── hammer-ft-figure.gcode │ ├── hammer-ft-figure.png │ ├── hat-ft-figure.gcode │ ├── hat-ft-figure.png │ ├── keychain-building-block-30.gcode │ ├── keychain-building-block-30.png │ ├── pickaxe-ft-figure.gcode │ ├── pickaxe-ft-figure.png │ ├── spade-ft-figure.gcode │ ├── spade-ft-figure.png │ ├── splitting-axe-ft-figure.gcode │ ├── splitting-axe-ft-figure.png │ ├── stepper-motor-bracket.gcode │ ├── stepper-motor-bracket.png │ ├── vase.gcode │ └── vase.png ├── home.png ├── home.svg ├── home_x.png ├── home_x.svg ├── home_y.png ├── home_y.svg ├── home_z.png ├── home_z.svg ├── hotend_off.png ├── hotend_off.svg ├── hotend_on.png ├── hotend_on.svg ├── icon.png ├── manifest └── serial │ ├── __init__.py │ ├── serialposix.py │ └── serialutil.py ├── BenoiTXT.zip ├── BenoiTXT ├── Makefile ├── benoitxt.py ├── benoitxt_de.qm ├── benoitxt_de.ts ├── blank.png ├── colormap.py ├── colormaps │ ├── MorningSky │ ├── Rainbow24 │ ├── Rainbow32 │ ├── Sunset │ ├── Tropical │ └── WhiteBluPink ├── helper.py ├── icon.png ├── icons │ ├── copy.png │ ├── magic.png │ ├── palette.png │ └── swap.png └── manifest ├── BrickMCP.zip ├── BrickMCP ├── ba.py ├── brickmcp.py ├── brickmcp_de.qm ├── brickmcp_de.ts ├── download.png ├── icon.png ├── icons │ ├── document-decrypt.png │ ├── document-encrypt.png │ ├── immovable-disabled.png │ ├── immovable.png │ ├── lock-disabled.png │ ├── lock.png │ ├── remove.png │ └── view-refresh.png ├── index.py └── manifest ├── I2C.zip ├── I2C ├── I2C.py ├── icon.png ├── icon.svg └── manifest ├── TXTShow.zip ├── TXTShow ├── .txtshowconf ├── download.png ├── icon.png ├── icons │ ├── arrow-left-disabled.png │ ├── arrow-left.png │ ├── arrow-right-disabled.png │ ├── arrow-right.png │ ├── camera-web-disabled.png │ ├── camera-web.png │ ├── chronometer.png │ ├── dialog-error.png │ ├── dialog-info.png │ ├── dialog-warning.png │ ├── edit-bomb.png │ ├── edit-copy.png │ ├── edit-cut.png │ ├── edit-rename.png │ ├── edit-undo.png │ ├── folder-add.png │ ├── folder-del.png │ ├── folder-image-people.png │ ├── go-next-disabled.png │ ├── go-next.png │ ├── go-previous-disabled.png │ ├── go-previous.png │ ├── key-enter.png │ ├── remove.png │ ├── tools-wizard.png │ └── trash-empty.png ├── index.py ├── manifest ├── overlay │ ├── ovl_black.png │ ├── ovl_pause.png │ ├── ovl_pause_zoom.png │ ├── ovl_play.png │ └── ovl_play_zoom.png ├── pics │ ├── discovery │ │ ├── 524328-01.jpg │ │ ├── 524328-02.jpg │ │ ├── 524328-03.jpg │ │ ├── 524328-04.jpg │ │ ├── 524328-05.jpg │ │ ├── 524328-06.jpg │ │ ├── 524328-07.jpg │ │ ├── 524328-08.jpg │ │ ├── 524328-10.jpg │ │ ├── 524328-11.jpg │ │ ├── 524328-12.jpg │ │ ├── 524328-13.jpg │ │ └── 524328-14.jpg │ ├── fail.png │ └── ftClassics │ │ ├── DSC01091.JPG │ │ ├── DSC01092.JPG │ │ ├── DSC01093.JPG │ │ ├── DSC01094.JPG │ │ ├── DSC01098.JPG │ │ ├── DSC01099.JPG │ │ ├── DSC01100.JPG │ │ ├── DSC01101.JPG │ │ ├── DSC01102.JPG │ │ ├── DSC01104.JPG │ │ ├── DSC01106.JPG │ │ ├── DSC01111.JPG │ │ ├── DSC01114.JPG │ │ └── DSC01115.JPG ├── script │ └── download.py ├── txtshow.py ├── txtshow_de.qm └── txtshow_de.ts ├── USBList.zip ├── USBList ├── icon.png ├── manifest └── usblist.py ├── brickly.zip ├── brickly ├── Makefile ├── audio.js ├── blockly │ ├── blockly_compressed.js │ ├── blocks_compressed.js │ ├── de.js │ ├── en.js │ ├── media │ │ ├── 1x1.gif │ │ ├── click.mp3 │ │ ├── click.ogg │ │ ├── click.wav │ │ ├── delete.mp3 │ │ ├── delete.ogg │ │ ├── delete.wav │ │ ├── disconnect.mp3 │ │ ├── disconnect.ogg │ │ ├── disconnect.wav │ │ ├── handclosed.cur │ │ ├── handdelete.cur │ │ ├── handopen.cur │ │ ├── quote0.png │ │ ├── quote1.png │ │ ├── sprites.png │ │ └── sprites.svg │ └── python_compressed.js ├── brickly_app.py ├── brickly_de.qm ├── brickly_de.ts ├── brickly_launch.py ├── code.js ├── custom_blocks.js ├── de.gif ├── de.js ├── en.gif ├── en.js ├── icon.png ├── icon.svg ├── icon_audio.svg ├── icon_menu.svg ├── icon_plugins.svg ├── icon_print.svg ├── icon_rabbit.svg ├── icon_start.svg ├── icon_turtle.svg ├── icon_unsaved.svg ├── index.html ├── manifest ├── plugins │ └── plugins.list ├── qjoystick.py ├── readme.md ├── spin.js ├── style.css ├── toolbox-1.xml ├── toolbox-2.xml ├── toolbox-3.xml ├── toolbox-4.xml ├── toolbox.xml └── user │ └── .nodelete ├── cpu_load.zip ├── cpu_load ├── icon.png ├── main.py └── manifest ├── ftDuinIO.zip ├── ftDuinIO ├── avrdude.conf ├── avrdude_widget.py ├── binaries │ ├── Blink.ino.hex │ └── ftduino_direct_1.3.2.ino.hex ├── bootloader │ └── Caterina.hex ├── ftduinio.py ├── htmlhelper.py ├── icon.png ├── icon.svg ├── index.py └── manifest ├── ftdb.zip ├── ftdb ├── ftdb.py ├── icon.png ├── icon.svg └── manifest ├── iolyser.zip ├── iolyser ├── Makefile ├── camera.py ├── gui.py ├── icon.png ├── icon.svg ├── manifest └── script.py ├── mkindex.py ├── radio.zip ├── radio ├── Makefile ├── icon.png ├── icon.svg ├── manifest ├── radio.py ├── stations.json ├── txt_snd_cat ├── txt_snd_cat.c └── web.py ├── ropropreter.zip ├── ropropreter ├── icon.png ├── manifest ├── parserTest.py ├── roIOWrap.py ├── roObject.py ├── roProgram.py ├── roSubroutine.py ├── roWire.py ├── script.py └── web.py ├── startIDE.zip └── startIDE ├── .00_news ├── .01_firstrun ├── .locale ├── HAT.py ├── TextToJson.py ├── arrays ├── NTC2k_R.arr └── NTC2k_T.arr ├── htmlhelper.py ├── icon.png ├── index.py ├── jsonToText.py ├── manifest ├── pixmaps ├── BME280.png ├── canvas.png ├── pinball.png ├── servoTest.png └── template.png ├── projects ├── Ampelsim ├── Clock ├── Grafik01 ├── GraphicsDemo_1.4 ├── I2C_Trainingsrobbi ├── I2C_motorshield ├── I2C_stepper ├── SimonSagt ├── TempRegler ├── Touch ├── Touch3 ├── blink ├── c_Ampel ├── c_Blink ├── c_Haendetrockner ├── c_Hanoi3 ├── c_Lauflicht ├── c_NTC2k ├── c_Signalfeuer ├── c_Sort ├── c_Touch ├── i2c_BME280 ├── i2c_BME_Wetterstation ├── i2c_RPI_BME_Wetterstation ├── interpol ├── microPaint ├── robo ├── servoTest └── stepper ├── startide.py ├── startide_de.qm ├── startide_de.ts └── translator.py /README.md: -------------------------------------------------------------------------------- 1 | # Apps for the community firmware 2 | 3 | This repository contains apps for the [TXT community firmware](https://github.com/ftCommunity/ftcommunity-TXT). 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/3dprt.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt.zip -------------------------------------------------------------------------------- /packages/3dprt/dir_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/dir_down.png -------------------------------------------------------------------------------- /packages/3dprt/dir_down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 21 | 23 | 27 | 31 | 35 | 39 | 43 | 44 | 62 | 69 | 70 | 72 | 73 | 75 | image/svg+xml 76 | 78 | 79 | 80 | 81 | 82 | 87 | 90 | 98 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /packages/3dprt/dir_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/dir_left.png -------------------------------------------------------------------------------- /packages/3dprt/dir_left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 21 | 23 | 27 | 31 | 35 | 39 | 43 | 44 | 62 | 69 | 70 | 72 | 73 | 75 | image/svg+xml 76 | 78 | 79 | 80 | 81 | 82 | 87 | 90 | 98 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /packages/3dprt/dir_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/dir_right.png -------------------------------------------------------------------------------- /packages/3dprt/dir_right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 21 | 23 | 27 | 31 | 35 | 39 | 43 | 44 | 62 | 69 | 70 | 72 | 73 | 75 | image/svg+xml 76 | 78 | 79 | 80 | 81 | 82 | 87 | 90 | 98 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /packages/3dprt/dir_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/dir_up.png -------------------------------------------------------------------------------- /packages/3dprt/dir_up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 21 | 23 | 27 | 31 | 35 | 39 | 43 | 44 | 62 | 69 | 70 | 72 | 73 | 75 | image/svg+xml 76 | 78 | 79 | 80 | 81 | 82 | 87 | 90 | 98 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /packages/3dprt/gcodes/3d-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/gcodes/3d-logo.png -------------------------------------------------------------------------------- /packages/3dprt/gcodes/angular_block-45-degrees.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/gcodes/angular_block-45-degrees.png -------------------------------------------------------------------------------- /packages/3dprt/gcodes/box-45x45x45-with-groove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/gcodes/box-45x45x45-with-groove.png -------------------------------------------------------------------------------- /packages/3dprt/gcodes/box-45x45x45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/gcodes/box-45x45x45.png -------------------------------------------------------------------------------- /packages/3dprt/gcodes/building-block-15-with-groove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/gcodes/building-block-15-with-groove.png -------------------------------------------------------------------------------- /packages/3dprt/gcodes/building-block-30-with-groove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/gcodes/building-block-30-with-groove.png -------------------------------------------------------------------------------- /packages/3dprt/gcodes/can-45x45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/gcodes/can-45x45.png -------------------------------------------------------------------------------- /packages/3dprt/gcodes/chip-ft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/gcodes/chip-ft.png -------------------------------------------------------------------------------- /packages/3dprt/gcodes/hammer-ft-figure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/gcodes/hammer-ft-figure.png -------------------------------------------------------------------------------- /packages/3dprt/gcodes/hat-ft-figure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/gcodes/hat-ft-figure.png -------------------------------------------------------------------------------- /packages/3dprt/gcodes/keychain-building-block-30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/gcodes/keychain-building-block-30.png -------------------------------------------------------------------------------- /packages/3dprt/gcodes/pickaxe-ft-figure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/gcodes/pickaxe-ft-figure.png -------------------------------------------------------------------------------- /packages/3dprt/gcodes/spade-ft-figure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/gcodes/spade-ft-figure.png -------------------------------------------------------------------------------- /packages/3dprt/gcodes/splitting-axe-ft-figure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/gcodes/splitting-axe-ft-figure.png -------------------------------------------------------------------------------- /packages/3dprt/gcodes/stepper-motor-bracket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/gcodes/stepper-motor-bracket.png -------------------------------------------------------------------------------- /packages/3dprt/gcodes/vase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/gcodes/vase.png -------------------------------------------------------------------------------- /packages/3dprt/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/home.png -------------------------------------------------------------------------------- /packages/3dprt/home.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 21 | 23 | 27 | 31 | 35 | 39 | 40 | 58 | 65 | 66 | 68 | 69 | 71 | image/svg+xml 72 | 74 | 75 | 76 | 77 | 78 | 83 | 86 | 92 | 101 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /packages/3dprt/home_x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/home_x.png -------------------------------------------------------------------------------- /packages/3dprt/home_x.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 21 | 23 | 27 | 31 | 35 | 39 | 40 | 58 | 65 | 66 | 68 | 69 | 71 | image/svg+xml 72 | 74 | 75 | 76 | 77 | 78 | 83 | 86 | 91 | 100 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /packages/3dprt/home_y.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/home_y.png -------------------------------------------------------------------------------- /packages/3dprt/home_z.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/home_z.png -------------------------------------------------------------------------------- /packages/3dprt/hotend_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/hotend_off.png -------------------------------------------------------------------------------- /packages/3dprt/hotend_off.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 21 | 23 | 27 | 31 | 35 | 39 | 43 | 47 | 48 | 66 | 73 | 74 | 76 | 77 | 79 | image/svg+xml 80 | 82 | 83 | 84 | 85 | 86 | 91 | 94 | 103 | 112 | 113 | 114 | 115 | -------------------------------------------------------------------------------- /packages/3dprt/hotend_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/hotend_on.png -------------------------------------------------------------------------------- /packages/3dprt/hotend_on.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 21 | 23 | 27 | 31 | 35 | 39 | 43 | 47 | 48 | 66 | 73 | 74 | 76 | 77 | 79 | image/svg+xml 80 | 82 | 83 | 84 | 85 | 86 | 91 | 94 | 103 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /packages/3dprt/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/3dprt/icon.png -------------------------------------------------------------------------------- /packages/3dprt/manifest: -------------------------------------------------------------------------------- 1 | [app] 2 | name: 3Dprint 3 | category: Tools 4 | author: Till Harbaum <till@harbaum.org> 5 | icon: icon.png 6 | desc: 3D printer driver app 7 | exec: 3dprt.py 8 | managed: yes 9 | set: 536624 3D-Printer 10 | model: 3D-Printer 11 | uuid: dd8a2020-10f7-4d9f-ad2f-2177ce6c60ff 12 | version: 1.1 13 | firmware: 0.9 14 | -------------------------------------------------------------------------------- /packages/3dprt/serial/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # This is a wrapper module for different platform implementations 4 | # 5 | # This file is part of pySerial. https://github.com/pyserial/pyserial 6 | # (C) 2001-2016 Chris Liechti 7 | # 8 | # SPDX-License-Identifier: BSD-3-Clause 9 | 10 | import importlib 11 | import sys 12 | from pkgutil import extend_path 13 | 14 | 15 | from serial.serialutil import * 16 | #~ SerialBase, SerialException, to_bytes, iterbytes 17 | 18 | __version__ = '3.1.1' 19 | 20 | VERSION = __version__ 21 | 22 | # serial is a namespace package 23 | __path__ = extend_path(__path__, __name__) 24 | 25 | # pylint: disable=wrong-import-position 26 | if sys.platform == 'cli': 27 | from serial.serialcli import Serial 28 | else: 29 | import os 30 | # chose an implementation, depending on os 31 | if os.name == 'nt': # sys.platform == 'win32': 32 | from serial.serialwin32 import Serial 33 | elif os.name == 'posix': 34 | from serial.serialposix import Serial, PosixPollSerial, VTIMESerial # noqa 35 | elif os.name == 'java': 36 | from serial.serialjava import Serial 37 | else: 38 | raise ImportError("Sorry: no implementation for your platform ('{}') available".format(os.name)) 39 | 40 | 41 | protocol_handler_packages = [ 42 | 'serial.urlhandler', 43 | ] 44 | 45 | 46 | def serial_for_url(url, *args, **kwargs): 47 | """\ 48 | Get an instance of the Serial class, depending on port/url. The port is not 49 | opened when the keyword parameter 'do_not_open' is true, by default it 50 | is. All other parameters are directly passed to the __init__ method when 51 | the port is instantiated. 52 | 53 | The list of package names that is searched for protocol handlers is kept in 54 | ``protocol_handler_packages``. 55 | 56 | e.g. we want to support a URL ``foobar://``. A module 57 | ``my_handlers.protocol_foobar`` is provided by the user. Then 58 | ``protocol_handler_packages.append("my_handlers")`` would extend the search 59 | path so that ``serial_for_url("foobar://"))`` would work. 60 | """ 61 | # check and remove extra parameter to not confuse the Serial class 62 | do_open = not kwargs.pop('do_not_open', False) 63 | # the default is to use the native implementation 64 | klass = Serial 65 | try: 66 | url_lowercase = url.lower() 67 | except AttributeError: 68 | # it's not a string, use default 69 | pass 70 | else: 71 | # if it is an URL, try to import the handler module from the list of possible packages 72 | if '://' in url_lowercase: 73 | protocol = url_lowercase.split('://', 1)[0] 74 | module_name = '.protocol_{}'.format(protocol) 75 | for package_name in protocol_handler_packages: 76 | try: 77 | importlib.import_module(package_name) 78 | handler_module = importlib.import_module(module_name, package_name) 79 | except ImportError: 80 | continue 81 | else: 82 | if hasattr(handler_module, 'serial_class_for_url'): 83 | url, klass = handler_module.serial_class_for_url(url) 84 | else: 85 | klass = handler_module.Serial 86 | break 87 | else: 88 | raise ValueError('invalid URL, protocol {!r} not known'.format(protocol)) 89 | # instantiate and open when desired 90 | instance = klass(None, *args, **kwargs) 91 | instance.port = url 92 | if do_open: 93 | instance.open() 94 | return instance 95 | -------------------------------------------------------------------------------- /packages/BenoiTXT.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/BenoiTXT.zip -------------------------------------------------------------------------------- /packages/BenoiTXT/Makefile: -------------------------------------------------------------------------------- 1 | ../BenoiTXT.zip: $(wildcard *) 2 | zip -u -r $@ $^ 3 | -------------------------------------------------------------------------------- /packages/BenoiTXT/benoitxt_de.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/BenoiTXT/benoitxt_de.qm -------------------------------------------------------------------------------- /packages/BenoiTXT/blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/BenoiTXT/blank.png -------------------------------------------------------------------------------- /packages/BenoiTXT/colormaps/MorningSky: -------------------------------------------------------------------------------- 1 | 0;0;137;9;11;144;18;22;152;27;33;160;37;44;168;46;55;176;55;66;184;64;77;192;74;89;199;83;100;207;92;111;215;101;122;223;111;133;231;120;144;239;129;155;247;139;167;255;153;165;242;168;163;230;182;161;218;197;160;206;211;158;194;226;156;182;240;154;170;255;153;158;224;135;156;193;117;154;162;99;152;132;82;151;101;64;149;70;46;147;39;28;145;9;11;144; -------------------------------------------------------------------------------- /packages/BenoiTXT/colormaps/Rainbow24: -------------------------------------------------------------------------------- 1 | 109;0;145;145;0;108;182;0;72;218;0;36;255;0;0;255;63;0;255;127;0;255;191;0;255;255;0;191;238;0;127;222;0;63;206;0;0;190;0;0;206;63;0;222;127;0;238;191;0;255;255;0;204;242;0;153;229;0;102;216;0;51;203;0;0;190;72;0;149;145;0;108; -------------------------------------------------------------------------------- /packages/BenoiTXT/colormaps/Rainbow32: -------------------------------------------------------------------------------- 1 | 109;0;145;145;0;108;182;0;72;218;0;36;255;0;0;255;42;0;255;85;0;255;127;0;255;170;0;255;212;0;255;255;0;191;238;0;127;222;0;63;206;0;0;190;0;0;206;63;0;222;127;0;238;191;0;255;255;0;226;247;0;198;240;0;170;233;0;141;226;0;113;218;0;85;211;0;56;204;0;28;197;0;0;190;36;0;169;72;0;149;108;0;128;145;0;108; -------------------------------------------------------------------------------- /packages/BenoiTXT/colormaps/Sunset: -------------------------------------------------------------------------------- 1 | 255;98;27;223;85;39;191;73;52;159;61;64;127;49;77;95;36;89;63;24;102;31;12;114;0;0;127;0;0;143;0;0;159;0;0;175;0;0;191;0;0;207;0;0;223;28;5;199;56;10;176;85;16;152;113;21;129;141;27;105;170;32;82;198;38;58;226;43;35;255;49;12;255;73;19;255;98;27;255;122;35;255;147;43;255;172;51;255;147;43;255;122;35;255;98;27; -------------------------------------------------------------------------------- /packages/BenoiTXT/colormaps/Tropical: -------------------------------------------------------------------------------- 1 | 0;0;0;36;36;11;72;72;22;109;109;33;145;145;44;182;182;55;218;218;66;255;255;77;204;204;61;153;153;46;102;102;30;51;51;15;0;0;0;39;85;31;78;170;62;117;255;94;87;191;70;58;127;47;29;63;23;0;0;0;7;18;63;15;37;127;22;56;191;30;75;255;26;65;223;22;56;191;18;46;159;15;37;127;11;28;95;7;18;63;3;9;31;0;0;0; -------------------------------------------------------------------------------- /packages/BenoiTXT/colormaps/WhiteBluPink: -------------------------------------------------------------------------------- 1 | 255;255;255;255;240;239;255;226;224;255;212;209;255;198;194;255;184;179;255;170;164;255;156;149;255;142;134;243;145;144;231;148;154;219;152;164;207;155;175;195;159;185;183;162;195;171;166;205;159;169;216;147;173;226;135;176;236;124;180;247;134;186;247;145;192;248;156;198;249;167;205;249;178;211;250;189;217;251;200;223;251;211;230;252;222;236;253;233;242;253;244;248;254;255;255;255; -------------------------------------------------------------------------------- /packages/BenoiTXT/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/BenoiTXT/icon.png -------------------------------------------------------------------------------- /packages/BenoiTXT/icons/copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/BenoiTXT/icons/copy.png -------------------------------------------------------------------------------- /packages/BenoiTXT/icons/magic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/BenoiTXT/icons/magic.png -------------------------------------------------------------------------------- /packages/BenoiTXT/icons/palette.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/BenoiTXT/icons/palette.png -------------------------------------------------------------------------------- /packages/BenoiTXT/icons/swap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/BenoiTXT/icons/swap.png -------------------------------------------------------------------------------- /packages/BenoiTXT/manifest: -------------------------------------------------------------------------------- 1 | [app] 2 | name: BenoiTxt 3 | category: Tools 4 | author: Peter Habermehl 5 | icon: icon.png 6 | desc: Mandelbrot picture generator 7 | exec: benoitxt.py 8 | #html: index.py 9 | managed: yes 10 | uuid: cb8adf72-f23b-11e6-bc64-92361f002671 11 | version: 2.1.2 12 | firmware: >=1.0.0 13 | [de] 14 | desc: Mandelbrot-Bilder-Generator 15 | #html: index.py?lang=de 16 | -------------------------------------------------------------------------------- /packages/BrickMCP.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/BrickMCP.zip -------------------------------------------------------------------------------- /packages/BrickMCP/brickmcp_de.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/BrickMCP/brickmcp_de.qm -------------------------------------------------------------------------------- /packages/BrickMCP/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/BrickMCP/download.png -------------------------------------------------------------------------------- /packages/BrickMCP/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/BrickMCP/icon.png -------------------------------------------------------------------------------- /packages/BrickMCP/icons/document-decrypt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/BrickMCP/icons/document-decrypt.png -------------------------------------------------------------------------------- /packages/BrickMCP/icons/document-encrypt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/BrickMCP/icons/document-encrypt.png -------------------------------------------------------------------------------- /packages/BrickMCP/icons/immovable-disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/BrickMCP/icons/immovable-disabled.png -------------------------------------------------------------------------------- /packages/BrickMCP/icons/immovable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/BrickMCP/icons/immovable.png -------------------------------------------------------------------------------- /packages/BrickMCP/icons/lock-disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/BrickMCP/icons/lock-disabled.png -------------------------------------------------------------------------------- /packages/BrickMCP/icons/lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/BrickMCP/icons/lock.png -------------------------------------------------------------------------------- /packages/BrickMCP/icons/remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/BrickMCP/icons/remove.png -------------------------------------------------------------------------------- /packages/BrickMCP/icons/view-refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/BrickMCP/icons/view-refresh.png -------------------------------------------------------------------------------- /packages/BrickMCP/manifest: -------------------------------------------------------------------------------- 1 | [app] 2 | name: BrickMCP 3 | category: Tools 4 | author: Peter Habermehl 5 | icon: icon.png 6 | desc: Brickly Master Control Program to organize Brickly projects 7 | exec: brickmcp.py 8 | html: index.py?lang=en 9 | managed: yes 10 | uuid: 691061e0-eb93-11e6-9598-0800200c9a66 11 | version: 0.7.2 12 | firmware: >=0.9.3 13 | [de] 14 | desc: Das Brickly Master Control Program zum Verwalten von Brickly-Projekten 15 | html: index.py?lang=de 16 | [fr] 17 | desc: Brickly Master Control Program pour organiser vos projets Brickly 18 | html: index.py?lang=fr 19 | -------------------------------------------------------------------------------- /packages/I2C.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/I2C.zip -------------------------------------------------------------------------------- /packages/I2C/I2C.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | import sys, os 5 | from TouchStyle import * 6 | 7 | import smbus 8 | #import struct, array, math 9 | 10 | bus = smbus.SMBus(1) #1 indicates /dev/i2c-1 11 | 12 | 13 | 14 | class TouchGuiApplication(TouchApplication): 15 | def __init__(self, args): 16 | TouchApplication.__init__(self, args) 17 | 18 | translator = QTranslator() 19 | path = os.path.dirname(os.path.realpath(__file__)) 20 | translator.load(QLocale.system(), os.path.join(path, "I2C_")) 21 | self.installTranslator(translator) 22 | 23 | 24 | Adresse = 1 25 | I2C=[] 26 | 27 | for Adresse in range(128): 28 | 29 | try: 30 | bus.read_byte(Adresse) 31 | I2C.append(Adresse) #list concatenation 32 | except: # exception if read_byte fails 33 | pass 34 | 35 | 36 | i2c = [hex(n) for n in I2C] 37 | #print(i2c) 38 | i2c = str(i2c) 39 | 40 | 41 | 42 | # create the empty main window 43 | self.win = TouchWindow("I2C Scanner") 44 | 45 | self.vbox = QVBoxLayout() 46 | self.vbox.addStretch() 47 | 48 | 49 | L1 = QLabel("I2C bus scanner. Following I2C addresses found:"+" "+ i2c) 50 | L1.setObjectName("smalllabel") 51 | L1.setWordWrap(True) 52 | L1.setAlignment(Qt.AlignCenter) 53 | 54 | #L2 = QListWidget() 55 | #L2.addItem(i2c) 56 | #L2.setWordWrap(True) 57 | 58 | 59 | self.vbox.addWidget(L1) 60 | #self.vbox.addWidget(L2) 61 | self.vbox.addStretch() 62 | 63 | self.win.centralWidget.setLayout(self.vbox) 64 | self.win.show() 65 | 66 | 67 | self.exec_() 68 | 69 | 70 | if __name__ == "__main__": 71 | TouchGuiApplication(sys.argv) 72 | -------------------------------------------------------------------------------- /packages/I2C/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/I2C/icon.png -------------------------------------------------------------------------------- /packages/I2C/manifest: -------------------------------------------------------------------------------- 1 | [app] 2 | name: I2C 3 | category: Tools 4 | author: Christian Hehr <christian@fa-hehr.de> 5 | icon: icon.png 6 | desc: I2C Address Bus Scanner 7 | exec: I2C.py 8 | managed: yes 9 | uuid: c0cce9f0-2c50-11e7-9598-0800200c9a66 10 | version: 1.0 11 | firmware: >=0.9.0 12 | -------------------------------------------------------------------------------- /packages/TXTShow.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow.zip -------------------------------------------------------------------------------- /packages/TXTShow/.txtshowconf: -------------------------------------------------------------------------------- 1 | album=ftClassics 2 | delay=3000 3 | -------------------------------------------------------------------------------- /packages/TXTShow/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/download.png -------------------------------------------------------------------------------- /packages/TXTShow/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icon.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/arrow-left-disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/arrow-left-disabled.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/arrow-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/arrow-left.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/arrow-right-disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/arrow-right-disabled.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/arrow-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/arrow-right.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/camera-web-disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/camera-web-disabled.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/camera-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/camera-web.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/chronometer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/chronometer.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/dialog-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/dialog-error.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/dialog-info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/dialog-info.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/dialog-warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/dialog-warning.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/edit-bomb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/edit-bomb.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/edit-copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/edit-copy.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/edit-cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/edit-cut.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/edit-rename.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/edit-rename.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/edit-undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/edit-undo.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/folder-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/folder-add.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/folder-del.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/folder-del.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/folder-image-people.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/folder-image-people.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/go-next-disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/go-next-disabled.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/go-next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/go-next.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/go-previous-disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/go-previous-disabled.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/go-previous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/go-previous.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/key-enter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/key-enter.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/remove.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/tools-wizard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/tools-wizard.png -------------------------------------------------------------------------------- /packages/TXTShow/icons/trash-empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/icons/trash-empty.png -------------------------------------------------------------------------------- /packages/TXTShow/manifest: -------------------------------------------------------------------------------- 1 | [app] 2 | name: TXTShow 3 | category: Tools 4 | author: Peter Habermehl 5 | icon: icon.png 6 | desc: Take photos and manage albums on TXT 7 | exec: txtshow.py 8 | html: index.py?lang=en 9 | managed: yes 10 | uuid: 37681ea0-dc00-11e6-9598-0800200c9a66 11 | version: 2.1 12 | firmware: >=0.9.4 13 | [de] 14 | desc: Fotografiere und verwalte Bilder mit dem TXT 15 | html: index.py?lang=de 16 | -------------------------------------------------------------------------------- /packages/TXTShow/overlay/ovl_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/overlay/ovl_black.png -------------------------------------------------------------------------------- /packages/TXTShow/overlay/ovl_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/overlay/ovl_pause.png -------------------------------------------------------------------------------- /packages/TXTShow/overlay/ovl_pause_zoom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/overlay/ovl_pause_zoom.png -------------------------------------------------------------------------------- /packages/TXTShow/overlay/ovl_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/overlay/ovl_play.png -------------------------------------------------------------------------------- /packages/TXTShow/overlay/ovl_play_zoom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/overlay/ovl_play_zoom.png -------------------------------------------------------------------------------- /packages/TXTShow/pics/discovery/524328-01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/discovery/524328-01.jpg -------------------------------------------------------------------------------- /packages/TXTShow/pics/discovery/524328-02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/discovery/524328-02.jpg -------------------------------------------------------------------------------- /packages/TXTShow/pics/discovery/524328-03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/discovery/524328-03.jpg -------------------------------------------------------------------------------- /packages/TXTShow/pics/discovery/524328-04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/discovery/524328-04.jpg -------------------------------------------------------------------------------- /packages/TXTShow/pics/discovery/524328-05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/discovery/524328-05.jpg -------------------------------------------------------------------------------- /packages/TXTShow/pics/discovery/524328-06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/discovery/524328-06.jpg -------------------------------------------------------------------------------- /packages/TXTShow/pics/discovery/524328-07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/discovery/524328-07.jpg -------------------------------------------------------------------------------- /packages/TXTShow/pics/discovery/524328-08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/discovery/524328-08.jpg -------------------------------------------------------------------------------- /packages/TXTShow/pics/discovery/524328-10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/discovery/524328-10.jpg -------------------------------------------------------------------------------- /packages/TXTShow/pics/discovery/524328-11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/discovery/524328-11.jpg -------------------------------------------------------------------------------- /packages/TXTShow/pics/discovery/524328-12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/discovery/524328-12.jpg -------------------------------------------------------------------------------- /packages/TXTShow/pics/discovery/524328-13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/discovery/524328-13.jpg -------------------------------------------------------------------------------- /packages/TXTShow/pics/discovery/524328-14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/discovery/524328-14.jpg -------------------------------------------------------------------------------- /packages/TXTShow/pics/fail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/fail.png -------------------------------------------------------------------------------- /packages/TXTShow/pics/ftClassics/DSC01091.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/ftClassics/DSC01091.JPG -------------------------------------------------------------------------------- /packages/TXTShow/pics/ftClassics/DSC01092.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/ftClassics/DSC01092.JPG -------------------------------------------------------------------------------- /packages/TXTShow/pics/ftClassics/DSC01093.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/ftClassics/DSC01093.JPG -------------------------------------------------------------------------------- /packages/TXTShow/pics/ftClassics/DSC01094.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/ftClassics/DSC01094.JPG -------------------------------------------------------------------------------- /packages/TXTShow/pics/ftClassics/DSC01098.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/ftClassics/DSC01098.JPG -------------------------------------------------------------------------------- /packages/TXTShow/pics/ftClassics/DSC01099.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/ftClassics/DSC01099.JPG -------------------------------------------------------------------------------- /packages/TXTShow/pics/ftClassics/DSC01100.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/ftClassics/DSC01100.JPG -------------------------------------------------------------------------------- /packages/TXTShow/pics/ftClassics/DSC01101.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/ftClassics/DSC01101.JPG -------------------------------------------------------------------------------- /packages/TXTShow/pics/ftClassics/DSC01102.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/ftClassics/DSC01102.JPG -------------------------------------------------------------------------------- /packages/TXTShow/pics/ftClassics/DSC01104.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/ftClassics/DSC01104.JPG -------------------------------------------------------------------------------- /packages/TXTShow/pics/ftClassics/DSC01106.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/ftClassics/DSC01106.JPG -------------------------------------------------------------------------------- /packages/TXTShow/pics/ftClassics/DSC01111.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/ftClassics/DSC01111.JPG -------------------------------------------------------------------------------- /packages/TXTShow/pics/ftClassics/DSC01114.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/ftClassics/DSC01114.JPG -------------------------------------------------------------------------------- /packages/TXTShow/pics/ftClassics/DSC01115.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/pics/ftClassics/DSC01115.JPG -------------------------------------------------------------------------------- /packages/TXTShow/script/download.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | 5 | import cgi, shutil 6 | import sys, os, shlex, time, json 7 | from subprocess import Popen, call, PIPE 8 | 9 | hostdir = os.path.dirname(os.path.realpath(__file__)) + "/" 10 | local = "" 11 | 12 | def run_program(rcmd): 13 | """ 14 | Runs a program, and it's paramters (e.g. rcmd="ls -lh /var/www") 15 | Returns output if successful, or None and logs error if not. 16 | """ 17 | 18 | cmd = shlex.split(rcmd) 19 | executable = cmd[0] 20 | executable_options=cmd[1:] 21 | 22 | try: 23 | proc = Popen(([executable] + executable_options), stdout=PIPE, stderr=PIPE) 24 | response = proc.communicate() 25 | response_stdout, response_stderr = response[0].decode('UTF-8'), response[1].decode('UTF-8') 26 | except OSError as e: 27 | if e.errno == errno.ENOENT: 28 | print( "Unable to locate '%s' program. Is it in your path?" % executable ) 29 | else: 30 | print( "O/S error occured when trying to run '%s': \"%s\"" % (executable, str(e)) ) 31 | except ValueError as e: 32 | print( "Value error occured. Check your parameters." ) 33 | else: 34 | if proc.wait() != 0: 35 | print( "Executable '%s' returned with the error: \"%s\"" %(executable,response_stderr) ) 36 | return response 37 | else: 38 | #print( "Executable '%s' returned successfully." %(executable) ) 39 | #print( " First line of response was \"%s\"" %(response_stdout.split('\n')[0] )) 40 | return response_stdout 41 | 42 | def send_file(path:str, filename:str): 43 | 44 | if os.path.exists(path+filename): 45 | g = open(path+filename,'rb') 46 | if g: 47 | print("Content-type: application/octet-stream") 48 | print("Content-Disposition: attachment; filename=%s" %(filename)) 49 | print('') 50 | sys.stdout.flush() 51 | shutil.copyfileobj(g, sys.stdout.buffer) 52 | sys.stdout.flush() 53 | g.close() 54 | else: 55 | print('Content-Type: text/html') 56 | print('') 57 | print('') 58 | print('') 59 | print('failed') 60 | #else: print("jibbet nit") 61 | 62 | # ************************* 63 | # * ab hier geht's los... * 64 | # ************************* 65 | 66 | form = cgi.FieldStorage() 67 | 68 | """loc="" 69 | if "lang" in form: 70 | if form["lang"].value=="de": 71 | f = open(".locale","w") 72 | f.write("de") 73 | f.close 74 | else: 75 | f = open(".locale","w") 76 | f.write("en") 77 | f.close 78 | 79 | if os.path.isfile(".locale"): 80 | f = open(".locale","r") 81 | loc = f.read() 82 | f.close() 83 | 84 | if loc=="": loc="en" 85 | """ 86 | 87 | 88 | if ("file" in form) and ("path" in form): 89 | send_file(form["path"].value, form["file"].value) 90 | else: 91 | print('Content-Type: text/html') 92 | print('') 93 | print('') 94 | print('') 95 | print('Doof') 96 | -------------------------------------------------------------------------------- /packages/TXTShow/txtshow_de.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/TXTShow/txtshow_de.qm -------------------------------------------------------------------------------- /packages/USBList.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/USBList.zip -------------------------------------------------------------------------------- /packages/USBList/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/USBList/icon.png -------------------------------------------------------------------------------- /packages/USBList/manifest: -------------------------------------------------------------------------------- 1 | [app] 2 | name: USBList 3 | category: Tools 4 | author: Peter Habermehl 5 | icon: icon.png 6 | desc: List all acttached USB devices 7 | exec: usblist.py 8 | managed: yes 9 | uuid: 4b2d9ae0-fe32-11e8-b568-0800200c9a66 10 | version: 1.0 11 | firmware: >=0.9.4 12 | -------------------------------------------------------------------------------- /packages/USBList/usblist.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | 4 | import sys 5 | import subprocess 6 | 7 | from TouchStyle import * 8 | 9 | class FtcGuiApplication(TouchApplication): 10 | def __init__(self, args): 11 | TouchApplication.__init__(self, args) 12 | 13 | # main window 14 | win = TouchWindow("USBList") 15 | 16 | widg = QWidget() 17 | 18 | box=QVBoxLayout() 19 | 20 | output=QTextEdit() 21 | output.setStyleSheet("QTextEdit { font-size: 16px; color: white; background-color: black; font-family: monospace; }") 22 | output.setReadOnly(True) 23 | output.setLineWrapMode(2) 24 | output.setLineWrapColumnOrWidth(1024) 25 | 26 | self.target=output 27 | 28 | self.usbscan() 29 | 30 | box.addWidget(output) 31 | 32 | box.addStretch() 33 | 34 | button = QPushButton("Rescan") 35 | button.clicked.connect(self.usbscan) 36 | 37 | box.addWidget(button) 38 | 39 | widg.setLayout(box) 40 | 41 | win.setCentralWidget(widg) 42 | 43 | win.show() 44 | self.exec_() 45 | 46 | def usbscan(self): 47 | textfield=[] 48 | p = subprocess.Popen('lsusb', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 49 | 50 | for line in p.stdout.readlines(): 51 | textfield.append(line.decode("utf-8")) 52 | retval = p.wait() 53 | 54 | text="" 55 | for line in textfield: 56 | text=text+line 57 | 58 | if retval==0: 59 | self.target.setText(text) 60 | else: 61 | self.target.setText("USB scan failed") 62 | 63 | return 64 | 65 | if __name__ == "__main__": 66 | FtcGuiApplication(sys.argv) 67 | 68 | -------------------------------------------------------------------------------- /packages/brickly.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/brickly.zip -------------------------------------------------------------------------------- /packages/brickly/Makefile: -------------------------------------------------------------------------------- 1 | ../brickly.zip: $(filter-out __pycache__,$(wildcard *)) 2 | zip -u -r $@ $^ 3 | -------------------------------------------------------------------------------- /packages/brickly/blockly/media/1x1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/brickly/blockly/media/1x1.gif -------------------------------------------------------------------------------- /packages/brickly/blockly/media/click.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/brickly/blockly/media/click.mp3 -------------------------------------------------------------------------------- /packages/brickly/blockly/media/click.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/brickly/blockly/media/click.ogg -------------------------------------------------------------------------------- /packages/brickly/blockly/media/click.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/brickly/blockly/media/click.wav -------------------------------------------------------------------------------- /packages/brickly/blockly/media/delete.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/brickly/blockly/media/delete.mp3 -------------------------------------------------------------------------------- /packages/brickly/blockly/media/delete.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/brickly/blockly/media/delete.ogg -------------------------------------------------------------------------------- /packages/brickly/blockly/media/delete.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/brickly/blockly/media/delete.wav -------------------------------------------------------------------------------- /packages/brickly/blockly/media/disconnect.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/brickly/blockly/media/disconnect.mp3 -------------------------------------------------------------------------------- /packages/brickly/blockly/media/disconnect.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/brickly/blockly/media/disconnect.ogg -------------------------------------------------------------------------------- /packages/brickly/blockly/media/disconnect.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/brickly/blockly/media/disconnect.wav -------------------------------------------------------------------------------- /packages/brickly/blockly/media/handclosed.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/brickly/blockly/media/handclosed.cur -------------------------------------------------------------------------------- /packages/brickly/blockly/media/handdelete.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/brickly/blockly/media/handdelete.cur -------------------------------------------------------------------------------- /packages/brickly/blockly/media/handopen.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/brickly/blockly/media/handopen.cur -------------------------------------------------------------------------------- /packages/brickly/blockly/media/quote0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/brickly/blockly/media/quote0.png -------------------------------------------------------------------------------- /packages/brickly/blockly/media/quote1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/brickly/blockly/media/quote1.png -------------------------------------------------------------------------------- /packages/brickly/blockly/media/sprites.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/brickly/blockly/media/sprites.png -------------------------------------------------------------------------------- /packages/brickly/brickly_de.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/brickly/brickly_de.qm -------------------------------------------------------------------------------- /packages/brickly/brickly_de.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Logic 6 | 7 | 8 | true 9 | wahr 10 | 11 | 12 | 13 | false 14 | unwahr 15 | 16 | 17 | 18 | Menu 19 | 20 | 21 | Run... 22 | Los... 23 | 24 | 25 | 26 | Stop! 27 | Stopp! 28 | 29 | 30 | 31 | Run 32 | Los 33 | 34 | 35 | 36 | Select... 37 | Auswahl... 38 | 39 | 40 | 41 | Selection 42 | 43 | 44 | Program 45 | Programm 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /packages/brickly/brickly_launch.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | 5 | import sys 6 | import os 7 | import socket 8 | import time 9 | 10 | # send a command to the launcher and if a reply is expected return 11 | # the reply or None if the connection failed 12 | def launcher_cmd(str, expect_reply=False): 13 | reply = None 14 | sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 15 | try: 16 | # Connect to server and send data 17 | sock.connect(("localhost", 9000)) 18 | sock.sendall(bytes(str+"\n", "UTF-8")) 19 | if expect_reply: 20 | reply = sock.makefile().readline().strip() 21 | else: 22 | reply = True 23 | except socket.error as msg: 24 | pass 25 | finally: 26 | sock.close() 27 | 28 | # if no reply is expected then only return "True" or "False" 29 | if not expect_reply and reply == None: 30 | reply = False 31 | 32 | return reply 33 | 34 | # request executable name of currently running app from 35 | # launcher. If current_executable is None, then no launcher 36 | # is running at all. If it's "" then the launcher is running 37 | # but no app is running. Otherwise a path like 38 | # system/about/about.py is returned 39 | current_executable = launcher_cmd("get-app", True) 40 | 41 | # some app is running -> stop it 42 | if current_executable != None and current_executable != "": 43 | launcher_cmd("stop-app") 44 | 45 | # wait for app to be stopped ... 46 | while launcher_cmd("get-app", True) != "": 47 | time.sleep(0.1) 48 | 49 | # write a valid http reply header 50 | print("Content-Type: text/html") 51 | print("") 52 | 53 | # send launch request for brickly app to launcher 54 | path = os.path.join("user", os.path.basename(os.path.dirname(os.path.realpath(__file__)))) 55 | launcher_cmd("launch " + os.path.join(path, "brickly_app.py")) 56 | -------------------------------------------------------------------------------- /packages/brickly/de.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/brickly/de.gif -------------------------------------------------------------------------------- /packages/brickly/en.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/brickly/en.gif -------------------------------------------------------------------------------- /packages/brickly/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/brickly/icon.png -------------------------------------------------------------------------------- /packages/brickly/icon_audio.svg: -------------------------------------------------------------------------------- 1 | 2 | image/svg+xml -------------------------------------------------------------------------------- /packages/brickly/icon_menu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 22 | 24 | 28 | 29 | 49 | 56 | 57 | 59 | 60 | 62 | image/svg+xml 63 | 65 | 66 | 67 | 68 | 69 | 74 | 80 | 86 | 92 | 98 | 104 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /packages/brickly/icon_plugins.svg: -------------------------------------------------------------------------------- 1 | 2 | image/svg+xml -------------------------------------------------------------------------------- /packages/brickly/icon_print.svg: -------------------------------------------------------------------------------- 1 | 2 | 17 | 19 | 20 | 22 | image/svg+xml 23 | 25 | 26 | 27 | 28 | 30 | 50 | 54 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /packages/brickly/icon_rabbit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 22 | 24 | 28 | 29 | 49 | 51 | 52 | 54 | image/svg+xml 55 | 57 | 58 | 59 | 60 | 61 | 66 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /packages/brickly/icon_start.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 22 | 24 | 28 | 32 | 33 | 53 | 60 | 61 | 63 | 64 | 66 | image/svg+xml 67 | 69 | 70 | 71 | 72 | 73 | 78 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /packages/brickly/icon_turtle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 22 | 24 | 28 | 29 | 49 | 51 | 52 | 54 | image/svg+xml 55 | 57 | 58 | 59 | 60 | 61 | 66 | 72 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /packages/brickly/icon_unsaved.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 22 | 24 | 28 | 32 | 36 | 40 | 41 | 61 | 68 | 69 | 71 | 72 | 74 | image/svg+xml 75 | 77 | 78 | 79 | 80 | 81 | 86 | 94 | 102 | ! 113 | 114 | 115 | -------------------------------------------------------------------------------- /packages/brickly/manifest: -------------------------------------------------------------------------------- 1 | [app] 2 | name: Brickly 3 | category: Tools 4 | author: Till Harbaum 5 | icon: icon.png 6 | desc: Blockly based visual programming environment 7 | url: https://developers.google.com/blockly/ 8 | html: index.html 9 | exec: brickly_app.py 10 | managed: yes 11 | uuid: 1f2d90a3-11e9-4a92-955a-73ffaec0fe71 12 | version: 1.43 13 | firmware: >=1.0.0 14 | 15 | [de] 16 | name: Brickly 17 | desc: Blockly-basierte grafische Programmierumgebung 18 | html: index.html?lang=de 19 | -------------------------------------------------------------------------------- /packages/brickly/plugins/plugins.list: -------------------------------------------------------------------------------- 1 | ; list of installed plugins 2 | -------------------------------------------------------------------------------- /packages/brickly/readme.md: -------------------------------------------------------------------------------- 1 | # Brickly 2 | 3 | Brickly is a port of [Blockly](https://developers.google.com/blockly/) 4 | to the [fischertechnik TXT Controller](https://www.fischertechnik.de/en/products/playing/robotics/522429-txt-controller). Brickly allows to program the TXT from any web browser 5 | using a simple graphical user interface. If you don't have a TXT then 6 | the [Blockly Games](https://blockly.games/) can give you 7 | a first impression how Blockly looks and works. 8 | 9 | -------------------------------------------------------------------------------- /packages/brickly/toolbox-1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Text 7 | 8 | 9 | 10 | 11 | 12 | 13 | 0 14 | 15 | 16 | 17 | 18 | 19 | 20 | 1 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 25 30 | 31 | 32 | 33 | 34 | 35 | 36 | 90 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /packages/brickly/toolbox-2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 1 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 90 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 10 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 1 61 | 62 | 63 | 64 | 65 | 1 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /packages/brickly/toolbox-3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 1 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 25 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 10 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 1 59 | 60 | 61 | 62 | 63 | 10 64 | 65 | 66 | 67 | 68 | 1 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 1 79 | 80 | 81 | 82 | 83 | 1 84 | 85 | 86 | 87 | 88 | 89 | 90 | 1 91 | 92 | 93 | 94 | 95 | 100 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /packages/brickly/user/.nodelete: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/brickly/user/.nodelete -------------------------------------------------------------------------------- /packages/cpu_load.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/cpu_load.zip -------------------------------------------------------------------------------- /packages/cpu_load/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/cpu_load/icon.png -------------------------------------------------------------------------------- /packages/cpu_load/main.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | import sys 5 | import os 6 | import time 7 | from TxtStyle import * 8 | 9 | 10 | 11 | class FtcGuiApplication(TxtApplication): 12 | def __init__(self, args): 13 | TxtApplication.__init__(self, args) 14 | 15 | ###################### Input 16 | #Get CPU-Load 17 | temp = os.popen("cat /proc/loadavg").read().split(" ") 18 | ram = os.popen("cat /proc/meminfo").read().split("\n") 19 | top = os.popen(" top -b -n1 | head -n 11 | tail -n 4").read() 20 | 21 | #Reform the Values and write them to Variables 22 | temp_1 = int(float(temp[0]) * 100) 23 | 24 | ram_total = ram[0].split(" ") 25 | ram_total = int(ram_total[len(ram_total)-2]) 26 | 27 | ram_free = ram[1].split(" ") 28 | ram_free = int(ram_free[len(ram_free)-2]) 29 | 30 | top_process = top.split("\n") 31 | top_process = top_process[2] 32 | top_process = " ".join(top_process.split()).split(" ") 33 | top_name = top_process[7] 34 | top_percent = top_process[5] 35 | 36 | ###################### Output 37 | 38 | # create the empty main window 39 | w = TxtWindow("System Load") 40 | 41 | self.vbox = QVBoxLayout() 42 | 43 | #Create Label and ProgressBar for the one-minute-Graph 44 | self.msg_1 = QLabel("CPU-Load (1 min)") 45 | self.msg_1.setWordWrap(True) 46 | self.msg_1.setAlignment(Qt.AlignCenter) 47 | self.vbox.addWidget(self.msg_1) 48 | 49 | self.msg_1_B = QProgressBar() 50 | self.msg_1_B.setRange(0,100) 51 | self.msg_1_B.setValue(temp_1) 52 | self.vbox.addWidget(self.msg_1_B) 53 | 54 | self.msg_RAM_total = QLabel("Available RAM") 55 | self.msg_RAM_total.setWordWrap(True) 56 | self.msg_RAM_total.setAlignment(Qt.AlignCenter) 57 | self.vbox.addWidget(self.msg_RAM_total) 58 | 59 | self.msg_RAM_bar = QProgressBar() 60 | self.msg_RAM_bar.setRange(0,ram_total) 61 | self.msg_RAM_bar.setValue(ram_total - ram_free) 62 | self.vbox.addWidget(self.msg_RAM_bar) 63 | 64 | self.msg_TOP = QLabel("Loady Process") 65 | self.msg_TOP.setWordWrap(True) 66 | self.msg_TOP.setAlignment(Qt.AlignCenter) 67 | self.vbox.addWidget(self.msg_TOP) 68 | 69 | self.msg_TOP_C = QTextEdit(top_name[-12:] + " " + top_percent) 70 | self.vbox.addWidget(self.msg_TOP_C) 71 | 72 | w.centralWidget.setLayout(self.vbox) 73 | 74 | w.show() 75 | 76 | self.timer = QTimer(self) 77 | self.timer.timeout.connect(self.refresh) 78 | self.timer.start(1000) 79 | self.exec_() 80 | 81 | def refresh(self): 82 | # Refresh all values every second 83 | #Get all values 84 | temp = os.popen("cat /proc/loadavg").read().split(" ") 85 | ram = os.popen("cat /proc/meminfo").read().split("\n") 86 | top = os.popen(" top -b -n1 | head -n 11 | tail -n 4").read() 87 | 88 | temp_1 = int(float(temp[0]) * 100) 89 | 90 | ram_total = ram[0].split(" ") 91 | ram_total = int(ram_total[len(ram_total)-2]) 92 | 93 | ram_free = ram[1].split(" ") 94 | ram_free = int(ram_free[len(ram_free)-2]) 95 | 96 | top_process = top.split("\n") 97 | top_process = top_process[0] 98 | top_process = " ".join(top_process.split()).split(" ") 99 | top_name = top_process[7] 100 | top_percent = top_process[5] 101 | 102 | self.msg_1_B.setValue(temp_1); 103 | self.msg_RAM_bar.setValue(ram_total - ram_free) 104 | self.msg_TOP_C.setText(top_name[-12:] + " " + top_percent) 105 | 106 | if __name__ == "__main__": 107 | FtcGuiApplication(sys.argv) 108 | -------------------------------------------------------------------------------- /packages/cpu_load/manifest: -------------------------------------------------------------------------------- 1 | [app] 2 | name: CPU-Load 3 | category: System 4 | author: Leon Schnieber (olagino) 5 | icon: icon.png 6 | desc: A small App for the TXT to check the average processor load and the available RAM. 7 | url: http://leon.home-webserver.de/wiki/doku.php?id=fischertechnik:start 8 | exec: main.py 9 | managed: yes 10 | uuid: 443dd03b-d671-4103-b035-924c175e4e1c 11 | version: 1 12 | firmware: >=0.9.0 13 | -------------------------------------------------------------------------------- /packages/ftDuinIO.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/ftDuinIO.zip -------------------------------------------------------------------------------- /packages/ftDuinIO/htmlhelper.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | # helper module for webinterface 5 | # -*- coding: utf-8 -*- 6 | # 7 | 8 | 9 | import sys 10 | 11 | def htmlDecode(str): 12 | return str.replace(""", '"').replace("'", "'").replace("<", '<').replace(">", '>').replace("&", '&'); 13 | 14 | def htmlEncode(str): 15 | return str.replace('&', "&").replace('"', """).replace("'", "'").replace('<', "<").replace('>', ">"); 16 | 17 | def htmlhead(progname:str, headtext:str): 18 | print('Content-Type: text/html') 19 | print('') 20 | print('') 21 | print('') 22 | print('') 23 | print('') 24 | print('') 25 | print('') 26 | print('') 27 | print('') 28 | print('') 29 | print('') 30 | print(progname) 31 | print('') 32 | print('') 33 | print('') 34 | print('') 35 | print('') 36 | print('
') 37 | print('

fischertechnik TXT

') 38 | print('

') 39 | print(progname) 40 | print('

') 41 | print(headtext) 42 | print('
') 43 | 44 | def htmlfoot(message:str, footlink:str, footlinktext:str): 45 | print('

' + message) 46 | print('

' + footlinktext + "") 47 | print("") 48 | 49 | def separator(): 50 | print("


") 51 | 52 | def lf(num:int=1): 53 | for a in range(0,num): 54 | print("
") 55 | 56 | def text(string:str): 57 | #print(" "+string+" ") 58 | print(string) 59 | 60 | def link(text:str, address:str, tags:str=""): 61 | print(''+text+'') 62 | 63 | -------------------------------------------------------------------------------- /packages/ftDuinIO/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/ftDuinIO/icon.png -------------------------------------------------------------------------------- /packages/ftDuinIO/index.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | 4 | import htmlhelper as hth 5 | import cgi, os, json, sys 6 | from codecs import * 7 | 8 | def mainpage(): 9 | hth.htmlhead("ftDuinIO", "ftDuino I/O test and flash tool") 10 | hth.lf(1) 11 | print('') 12 | hth.lf(1) 13 | hth.separator() 14 | hth.lf(1) 15 | print('Upload .ino.hex binary file to the local cache:

') 16 | print('
') 17 | print('') 20 | print('
') 23 | 24 | hth.lf(1) 25 | hth.separator() 26 | hth.htmlfoot("","/","TXT Home") 27 | 28 | def uploader(fileitem): 29 | 30 | filename = fileitem.filename 31 | 32 | filename = "binaries/"+filename 33 | 34 | if 1: #try: 35 | open(filename, 'wb').write(fileitem.file.read()) 36 | os.chmod(filename,0o666) 37 | hth.htmlhead("ftDuinIO", "Upload finished!") 38 | hth.htmlfoot("","index.py","Back") 39 | else: #except: 40 | hth.htmlhead("ftDuinIO", "Upload failed") 41 | hth.htmlfoot("","index.py","Back") 42 | 43 | 44 | # ***************************************************** 45 | # *************** Ab hier geht's los ****************** 46 | # ***************************************************** 47 | 48 | if __name__ == "__main__": 49 | 50 | form = cgi.FieldStorage() 51 | 52 | if "project" in form: 53 | uploader(form["project"]) 54 | 55 | else: 56 | mainpage() 57 | 58 | 59 | -------------------------------------------------------------------------------- /packages/ftDuinIO/manifest: -------------------------------------------------------------------------------- 1 | [app] 2 | name: ftDuinIO 3 | category: Tools 4 | author: Peter Habermehl / Dr. Till Harbaum 5 | icon: icon.png 6 | desc: ftDuino I/O test and flash tool 7 | exec: ftduinio.py 8 | html: index.py 9 | managed: yes 10 | uuid: 0990bda0-f222-11e7-8f1a-0800200c9a66 11 | version: 2.0.1 12 | firmware: >=0.9.4 13 | [de] 14 | desc: ftDuino I/O-Test und Flashtool 15 | html: index.py 16 | -------------------------------------------------------------------------------- /packages/ftdb.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/ftdb.zip -------------------------------------------------------------------------------- /packages/ftdb/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/ftdb/icon.png -------------------------------------------------------------------------------- /packages/ftdb/manifest: -------------------------------------------------------------------------------- 1 | [app] 2 | name: ft:db 3 | category: Tools 4 | author: Raphael Jacob & oxoovo 5 | icon: icon.png 6 | desc: ft:db search app. Icon partly by http://www.webalys.com/ 7 | exec: ftdb.py 8 | managed: yes 9 | uuid: dce63db7-1327-4cb3-a04e-c358ac04b794 10 | version: 1.5 11 | firmware: >= 1.0.0 12 | -------------------------------------------------------------------------------- /packages/iolyser.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/iolyser.zip -------------------------------------------------------------------------------- /packages/iolyser/Makefile: -------------------------------------------------------------------------------- 1 | ../iolyser.zip: $(wildcard *) 2 | zip -u -r $@ $^ 3 | -------------------------------------------------------------------------------- /packages/iolyser/camera.py: -------------------------------------------------------------------------------- 1 | import numpy 2 | import cv2 3 | import sys 4 | import os 5 | 6 | from TouchStyle import * 7 | 8 | 9 | #camera section 10 | WIDTH=320 11 | HEIGHT=(WIDTH*3//4) 12 | FPS=10 13 | 14 | # check if there's a camera device index supplied via 15 | # the environment 16 | CAM_DEV = os.environ.get('FTC_CAM') 17 | if CAM_DEV == None: CAM_DEV = 0 18 | else: CAM_DEV = int(CAM_DEV) 19 | 20 | class CamWidget(QWidget): 21 | def __init__(self, parent=None): 22 | 23 | super(CamWidget, self).__init__(parent) 24 | 25 | # initialize camera 26 | self.cap = cv2.VideoCapture(CAM_DEV) 27 | if self.cap.isOpened(): 28 | self.cap.set(3,WIDTH) 29 | self.cap.set(4,HEIGHT) 30 | self.cap.set(5,FPS) 31 | 32 | timer = QTimer(self) 33 | timer.timeout.connect(self.update) 34 | timer.start(1000//FPS) 35 | 36 | qsp = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) 37 | qsp.setHeightForWidth(True) 38 | self.setSizePolicy(qsp) 39 | 40 | def sizeHint(self): 41 | return QSize(WIDTH,HEIGHT) 42 | 43 | def heightForWidth(self,w): 44 | return w*3//4 45 | 46 | def grab(self): 47 | self.frame = self.cap.read()[1] 48 | 49 | # expand/shrink to widget size 50 | wsize = (self.size().width(), self.size().height()) 51 | self.cvImage = cv2.resize(self.frame, wsize) 52 | 53 | height, width, byteValue = self.cvImage.shape 54 | bytes_per_line = byteValue * width 55 | 56 | cv2.cvtColor(self.cvImage, cv2.COLOR_BGR2RGB, self.cvImage) 57 | self.mQImage = QImage(self.cvImage, width, height, 58 | bytes_per_line, QImage.Format_RGB888) 59 | 60 | def paintEvent(self, QPaintEvent): 61 | painter = QPainter() 62 | painter.begin(self) 63 | 64 | if not self.cap.isOpened(): 65 | painter.drawText(QRect(QPoint(0,0), self.size()), 66 | Qt.AlignCenter, "No camera"); 67 | else: 68 | self.grab() 69 | painter.drawImage(0,0,self.mQImage) 70 | 71 | painter.end() 72 | -------------------------------------------------------------------------------- /packages/iolyser/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/iolyser/icon.png -------------------------------------------------------------------------------- /packages/iolyser/icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 22 | 24 | 44 | 46 | 47 | 49 | image/svg+xml 50 | 52 | 53 | 54 | 55 | 56 | 61 | 66 | 77 | IOlyser 91 | 92 | 93 | -------------------------------------------------------------------------------- /packages/iolyser/manifest: -------------------------------------------------------------------------------- 1 | [app] 2 | name: IOlyser 3 | category: System 4 | author: Leon Schnieber (olagino) 5 | icon: icon.png 6 | desc: This tool is used for testing the IOs of the TXT without a computer nearby. 7 | exec: script.py 8 | managed: yes 9 | uuid: 3434343-5199-11e6-beb8-9e71128cae7 10 | version: 0.9.7 11 | firmware: >=1.0.0 12 | -------------------------------------------------------------------------------- /packages/iolyser/script.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | import sys 5 | import time 6 | import ftrobopy 7 | from gui import SensorInputObject, ActorOutputObject 8 | from camera import * 9 | from TouchStyle import * 10 | 11 | __author__ = "Leon Schnieber" 12 | __email__ = "olaginos-buero@outlook.de" 13 | __status__ = "Production" 14 | 15 | class FtcGuiApplication(TouchApplication): 16 | TAB_STYLE = """ 17 | QTabBar { 18 | color: white; 19 | font: 20px 20 | } 21 | 22 | QTabBar::tab { 23 | border: none; 24 | border-radius: none 25 | } 26 | 27 | QTabBar::tab:!selected { 28 | color: lightgrey; 29 | } 30 | """ 31 | 32 | def __init__(self, args): 33 | TouchApplication.__init__(self, args) 34 | 35 | self.__ioStart() 36 | 37 | window = TouchWindow("IOlyser") 38 | 39 | page_1 = QWidget() 40 | vbox = QVBoxLayout() 41 | 42 | self.obj_list_input = [] 43 | for i in range(8): 44 | n = i + 1 45 | obj = SensorInputObject(self.io, n) 46 | vbox.addLayout(obj.q_box) 47 | 48 | self.obj_list_input.append(obj) 49 | 50 | # Add the first Tab 51 | page_1.setLayout(vbox) 52 | 53 | ######################################################################## 54 | # Start filling the second tab 55 | page_2 = QWidget() 56 | vbox = QVBoxLayout() 57 | 58 | self.obj_list_output = [] 59 | for i in range(4): 60 | n = i + 1 61 | obj = ActorOutputObject(self.io, n) 62 | vbox.addLayout(obj.q_box) 63 | 64 | self.obj_list_output.append(obj) 65 | 66 | page_2.setLayout(vbox) 67 | 68 | ######################################################################## 69 | page_3 = QWidget() 70 | vbox = QVBoxLayout() 71 | # Add camera element to the camera-page 72 | cam = CamWidget() 73 | vbox.addWidget(cam) 74 | 75 | 76 | page_3.setLayout(vbox) 77 | ######################################################################## 78 | 79 | # Create the Tab-Element and add the pages to that 80 | self.tabBar = QTabWidget() 81 | self.tabBar.addTab(page_1,"Input") 82 | self.tabBar.addTab(page_2,"Output") 83 | self.tabBar.addTab(page_3,"Camera") 84 | self.tabBar.setStyleSheet(self.TAB_STYLE) 85 | # Add the Tab-widget to the Window 86 | window.setCentralWidget(self.tabBar) 87 | 88 | # Move the Block to the Display. 89 | window.show() 90 | # Call some background functions 91 | self.__readerThread() 92 | print("Threadingcheck") 93 | 94 | self.exec_() 95 | 96 | def __ioStart(self): 97 | self.io = ftrobopy.ftrobopy("auto") 98 | time.sleep(1) 99 | 100 | def __readerThread(self): 101 | print("Thread started.") 102 | self.timer = QTimer(self) 103 | self.timer.timeout.connect(self.__readerProcess) 104 | self.timer.start(10) 105 | 106 | 107 | def __readerProcess(self): 108 | if self.tabBar.currentIndex() == 0: 109 | for line_obj in self.obj_list_input: 110 | line_obj.readSensor() 111 | if self.tabBar.currentIndex() == 1: 112 | for line_obj in self.obj_list_output: 113 | line_obj.readSensor() 114 | 115 | 116 | if __name__ == "__main__": 117 | FtcGuiApplication(sys.argv) 118 | -------------------------------------------------------------------------------- /packages/mkindex.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | 5 | # Improvements: 6 | # - run manifest through configparser 7 | # - only transfer entries needed for the store app 8 | # - make sure no mandatory entry is missing 9 | # - check if zip file needs to be rebuild 10 | # - rebuild zip file automatically 11 | 12 | import sys 13 | import os 14 | 15 | print("Building package index ...") 16 | 17 | pkgfile = open("00packages", "w") 18 | pkgfile.write("; list of packages\n") 19 | pkgfile.write("; this file contains all manifests\n") 20 | 21 | # scan the directory for app directories 22 | for l in sorted(os.listdir(".")): 23 | if os.path.isdir(l): 24 | m = os.path.join(l, "manifest") 25 | if os.path.isfile(m): 26 | print("Adding", l, "...") 27 | pkgfile.write("\n") 28 | pkgfile.write("["+l+"]\n") 29 | lang = "" 30 | 31 | # copy manifest contents. Skip [app] entry 32 | f = open(m) 33 | for line in f: 34 | line = line.strip() 35 | # ignore empty lines 36 | if line != "": 37 | # check if there's a section header in the line 38 | if line[0] == '[': 39 | # check if it's no the app section 40 | if not "[app]" in line: 41 | lang = line[line.find("[")+1:line.find("]")] 42 | else: 43 | if lang == "": 44 | # print lines not from a language specific section 45 | # just as they are 46 | print(line, file=pkgfile) 47 | else: 48 | # otherwise append language code to identifier 49 | # split at first ':' 50 | parts = line.split(':', 1) 51 | print(parts[0].strip()+"_"+lang+": "+parts[1].strip(), file=pkgfile) 52 | f.close() 53 | 54 | pkgfile.close() 55 | -------------------------------------------------------------------------------- /packages/radio.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/radio.zip -------------------------------------------------------------------------------- /packages/radio/Makefile: -------------------------------------------------------------------------------- 1 | radio.zip: manifest radio.py stations.json txt_snd_cat web.py icon.png 2 | rm -f $@ 3 | zip $@ $^ 4 | 5 | 6 | ARM_CC=$(FTC_BUILDROOT)/output/host/usr/bin/arm-linux-gnueabihf-gcc 7 | 8 | SRC = txt_snd_cat.c 9 | CFLAGS = -O2 10 | BIN = txt_snd_cat 11 | 12 | all: $(BIN) 13 | 14 | $(BIN): $(SRC) 15 | ifndef FTC_BUILDROOT 16 | $(error "FTC_BUILDROOT not set. Please point it to the ftcommunity-TXT directory") 17 | endif 18 | $(ARM_CC) $(CFLAGS) $(SRC) -o $@ 19 | 20 | clean: 21 | rm -rf *~ cache 22 | -------------------------------------------------------------------------------- /packages/radio/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/radio/icon.png -------------------------------------------------------------------------------- /packages/radio/manifest: -------------------------------------------------------------------------------- 1 | [app] 2 | name: Radio 3 | category: Tests 4 | author: Raphael Jacob 5 | icon: icon.png 6 | desc: Webradio-Player 7 | html: web.py 8 | exec: radio.py 9 | managed: yes 10 | uuid: ad5e0ea4-4606-4254-add6-60c452c3db36 11 | version: 1.2 12 | firmware: >= 1.0.0 13 | 14 | -------------------------------------------------------------------------------- /packages/radio/stations.json: -------------------------------------------------------------------------------- 1 | { 2 | "SWR3": "http://stream.srg-ssr.ch/m/drs3/mp3_128", 3 | "Deutschlandfunk": "http://st01.dlf.de/dlf/01/128/mp3/stream.mp3", 4 | "1LIVE":"http://wdr-1live-live.icecast.wdr.de/wdr/1live/live/mp3/128/stream.mp3", 5 | "SR1": "http://liveradio.sr.de/sr/sr1/mp3/64/stream.mp3" 6 | } 7 | -------------------------------------------------------------------------------- /packages/radio/txt_snd_cat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/radio/txt_snd_cat -------------------------------------------------------------------------------- /packages/radio/web.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | import cgi 4 | import os 5 | import json 6 | arguments = cgi.FieldStorage() 7 | LOCAL_PATH = os.path.dirname(os.path.realpath(__file__)) 8 | JSON_PATH = os.path.join(LOCAL_PATH, 'stations.json') 9 | station_file = open(JSON_PATH) 10 | stations = json.load(station_file) 11 | if 'n' in arguments and 'u' in arguments: 12 | json_write = open(JSON_PATH, 'w') 13 | table = { 14 | ord('ä'): 'ae', 15 | ord('ö'): 'oe', 16 | ord('ü'): 'ue', 17 | ord('Ä'): 'Ae', 18 | ord('Ö'): 'Oe', 19 | ord('Ü'): 'Ue', 20 | ord('ß'): 'ss', 21 | } 22 | stations[arguments['n'].value.translate(table)] = arguments['u'].value 23 | json_write.write(json.dumps(stations, ensure_ascii=False)) 24 | json_write.close() 25 | if 'd' in arguments: 26 | if arguments['d'].value in stations: 27 | delete_station = arguments['d'].value 28 | stations = { k:v for k, v in stations.items() if v != stations[arguments['d'].value]} 29 | json_write = open(JSON_PATH, 'w') 30 | json_write.write(json.dumps(stations, ensure_ascii=False)) 31 | json_write.close() 32 | print(''' 33 | 34 | 35 | 36 | fischertechnik TXT community firmware 37 | 38 | 39 | 40 |

fischertechnik TXT

41 | ''') 42 | print(''' 43 |
44 |

Radio

45 |
46 |

Configuration

47 |

To add a station enter the values in these fields!

48 |
49 | Station Name:
50 | URL:
51 | 52 |
53 |

To remove a station click on the remove button!

54 | ''') 55 | print(''' 56 | 57 | 58 | 59 | 60 | 61 | ''') 62 | for station, url in stations.items(): 63 | print('') 64 | print('') 65 | print('') 66 | print('') 67 | print('') 68 | print('
StationURLRemove
' + station + '' + url + 'Remove
') 69 | -------------------------------------------------------------------------------- /packages/ropropreter.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/ropropreter.zip -------------------------------------------------------------------------------- /packages/ropropreter/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/ropropreter/icon.png -------------------------------------------------------------------------------- /packages/ropropreter/manifest: -------------------------------------------------------------------------------- 1 | [app] 2 | name: RoProPreter 3 | category: Tools 4 | author: Leon Schnieber (olagino) 5 | icon: icon.png 6 | html: web.py 7 | desc: A janky interpreter for RoboPro-Files. (Level 1-Elements and german-encoded files only) 8 | exec: script.py 9 | managed: yes 10 | uuid: 957f48b8-8999-4c02-a337-2d8c9c29215e 11 | version: 0.9.0 12 | firmware: >=0.9.5 13 | 14 | [de] 15 | desc: Interpreter für RoboPro-Dateien. (Aktuell nur für Level 1-Elemente und Dateien mit deutscher Spracheinstellung.) 16 | -------------------------------------------------------------------------------- /packages/ropropreter/parserTest.py: -------------------------------------------------------------------------------- 1 | from bs4 import BeautifulSoup 2 | 3 | # Initialize the File 4 | file =open("../test/testprogramm.xml", "r") 5 | soup = BeautifulSoup("".join(file.readlines()), 'xml') 6 | # Find all Subroutines 7 | central = soup.find_all("o", attrs={"classname": "ftProSubroutineFunction"}) 8 | hauptprogramm = central[0] 9 | # Find all objects inside the subroutine 10 | objects = [] 11 | 12 | # Find all New-Process-Elements 13 | elementList = [ 14 | "ftProProcessStart", 15 | "ftProProcessStop", 16 | "ftProFlowIf", 17 | "ftProDataIn", 18 | "ftProDataOutDual", 19 | "ftProProcessStop", 20 | "ftProDataMssg"] 21 | starts = [] 22 | for element in elementList: 23 | starts += hauptprogramm.find_all("o", attrs={"classname": element}) 24 | 25 | for startEl in starts: 26 | obj = { 27 | "type": startEl.attrs["classname"], 28 | } #, "id": startEl.attrs["id"]} 29 | pins = startEl.find_all("o", attrs={"classname": "ftProObjectPin"}) 30 | pinList = [] 31 | for x in pins: 32 | data = { 33 | "id": x.attrs["id"], 34 | "pinid": x.attrs["pinid"], 35 | "name": x.attrs["name"], 36 | "pinclass": x.attrs["pinclass"] 37 | } 38 | pinList.append(data) 39 | print("ELEMENT", obj["type"]) 40 | for pin in pinList: 41 | print(" -> PIN", "I" + pin["id"], pin["pinclass"], pin["name"]) 42 | 43 | wireTypes = ["ftProFlowWire", "ftProDataWire"] 44 | wires = [] 45 | for wireType in wireTypes: 46 | wires += hauptprogramm.find_all("o", attrs={"classname": wireType}) 47 | 48 | for wireEl in wires: 49 | pins = wireEl.find_all("o", attrs={"classname": "wxCanvasPin"}) 50 | pointList = [] 51 | for x in pins: 52 | data = { 53 | "id": x.attrs["id"], 54 | "name": x.attrs["name"], 55 | "resolve": x.attrs["resolveid"], 56 | "type": x.attrs["pinclass"] 57 | } 58 | pointList.append(data) 59 | print("WIRE") 60 | for pin in pointList: 61 | print("-|-", "I" + pin["id"], "R" + pin["resolve"], pin["type"]) 62 | -------------------------------------------------------------------------------- /packages/ropropreter/roProgram.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | from bs4 import BeautifulSoup 5 | from roSubroutine import RoboProSubroutine 6 | from roIOWrap import RoboProIOWrap 7 | 8 | __author__ = "Leon Schnieber" 9 | __copyright__ = "Copyright 2018-2019" 10 | __credits__ = "fischertechnik GmbH" 11 | __maintainer__ = "Leon Schnieber" 12 | __email__ = "olaginos-buero@outlook.de" 13 | __status__ = "Developement" 14 | 15 | 16 | class RoboProProgram(object): 17 | """ 18 | The RoboProProgram-Class is able to parse and execute a .rpp-File generated 19 | from the RoboPro-Software. At least one input parameter needs to be passed: 20 | - a filename/path of a RoboPro-File or its corresponding XML file 21 | - or the XML-String itself, e.g. directly read from a file, hardcoded… 22 | The second (optional) parameter expects a dictionary configuring the IO for 23 | all interfaces. As a default, IF1 is set to a locally configured ftrobopy- 24 | Library in auto-Mode. 25 | """ 26 | 27 | 28 | def __init__(self, xmlstr, ifconfig=None): 29 | if "<" not in xmlstr: # check if file is XML or path 30 | try: 31 | with open(xmlstr, "r") as file: 32 | xmlstr = "".join(file.readlines()) 33 | file.close() 34 | except BaseException as e: 35 | print("ERROR", e) 36 | self.soup = BeautifulSoup(xmlstr, "xml") 37 | self._subroutines = {} 38 | self._data = None 39 | self._io = RoboProIOWrap(ifconfig) 40 | self.parse() 41 | 42 | def parse(self): 43 | """ 44 | Parsing the XML-Structure for Subroutines. For each found subroutine a 45 | new instance of the Subroutine-Class is initialized. 46 | """ 47 | subroutinesRaw = self.soup.find_all("o", attrs={ 48 | "classname": "ftProSubroutineFunction"}) 49 | for subRaw in subroutinesRaw: 50 | self.addNewSubroutine(subRaw) 51 | # print("Found", len(subroutinesRaw), "subroutine(s).") 52 | 53 | def addNewSubroutine(self, subRaw): 54 | """ 55 | Adding a new subroutine to the programs subroutine-list and setting it's 56 | partially optional parameters. 57 | """ 58 | subRtName = subRaw.attrs["name"] 59 | subRtObj = RoboProSubroutine(subRaw) 60 | subRtObj._subrts = self._subroutines 61 | subRtObj._roProg = self 62 | subRtObj.setIO(self._io) 63 | self._subroutines[subRtName] = subRtObj 64 | 65 | def run(self, subroutine="Hauptprogramm"): 66 | """ 67 | the run functions starts the run()-Functions of a given subroutine. If 68 | no parameter is given it assumes the user wants to run the "Hauptprogramm" 69 | """ 70 | if subroutine in self._subroutines: 71 | subObj = self._subroutines[subroutine] 72 | subObj.run() 73 | -------------------------------------------------------------------------------- /packages/ropropreter/roWire.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | from bs4 import BeautifulSoup 5 | 6 | __author__ = "Leon Schnieber" 7 | __copyright__ = "Copyright 2018-2019" 8 | __credits__ = "fischertechnik GmbH" 9 | __maintainer__ = "Leon Schnieber" 10 | __email__ = "olaginos-buero@outlook.de" 11 | __status__ = "Developement" 12 | 13 | 14 | class RoboProWire(object): 15 | """ 16 | This object is generated by an XML-String or via the attributes 17 | itself. Therefor objectXmlSoup has to be None so the attributes can be set 18 | manually. This feature is mainly used for Pseudo-Objects used on converging 19 | wires. 20 | """ 21 | 22 | 23 | def __init__(self, wireXmlSoup=None): 24 | self._wireRaw = wireXmlSoup 25 | self._type = "" 26 | self._points = [] 27 | self._wireinput = "" 28 | self._wireoutput = "" 29 | if self._wireRaw is not None: 30 | self.parse() 31 | 32 | def parse(self): 33 | self._type = self._wireRaw.attrs["classname"] 34 | pinList = self._wireRaw.find_all("o", attrs={ 35 | "classname": "wxCanvasPin" 36 | }) 37 | for pin in pinList: 38 | pinData = { 39 | "id": pin.attrs["id"], 40 | "name": pin.attrs["name"], 41 | "resolve": pin.attrs["resolveid"], 42 | "type": pin.attrs["pinclass"] 43 | } 44 | self._points.append(pinData) 45 | if "wireoutput" in pinData["type"]: 46 | self._wireoutput = pinData["resolve"] 47 | elif "wireinput" in pinData["type"]: 48 | self._wireinput = pinData["resolve"] 49 | 50 | def getObjectWireList(self): 51 | """ 52 | dynamic: 53 | - create object with dynamic-id as outpin, resolveid as inpin 54 | - create wire (end = dynamic-id, begin = orig-begin) 55 | """ 56 | wireList = [] 57 | objectList = [] 58 | category = "flow" if "flow" in self._type else "data" 59 | linkto = "" 60 | linkfrom = "" 61 | for point in self._points: 62 | if "wireinput" in point["type"] and "flow" in point["type"]: 63 | linkto = point["resolve"] 64 | elif "wireoutput" in point["type"] and "data" in point["type"]: 65 | linkfrom = point["resolve"] 66 | elif point["name"] == "dynamic" and "flow" in point["type"]: 67 | wire = { 68 | "wireinput": linkto, 69 | "wireoutput": point["id"], 70 | "type": self._type 71 | } 72 | wireList.append(wire) 73 | object = { 74 | "type": category + "Helper", 75 | "pin": [ 76 | { 77 | "type": category + "objectinput", 78 | "id": point["id"] 79 | }, 80 | { 81 | "type": category + "objectoutput", 82 | "id": point["id"] 83 | } 84 | ] 85 | } 86 | objectList.append(object) 87 | elif point["name"] == "dynamic" and "data" in point["type"]: 88 | wire = { 89 | "wireinput": point["id"], 90 | "wireoutput": linkfrom, 91 | "type": self._type 92 | } 93 | wireList.append(wire) 94 | object = { 95 | "type": category + "Helper", 96 | "pin": [ 97 | { 98 | "type": category + "objectinput", 99 | "id": point["id"] 100 | }, 101 | { 102 | "type": category + "objectoutput", 103 | "id": point["id"] 104 | } 105 | ] 106 | } 107 | objectList.append(object) 108 | return wireList, objectList 109 | -------------------------------------------------------------------------------- /packages/ropropreter/script.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | from TouchStyle import * 5 | from TouchAuxiliary import * 6 | from roProgram import RoboProProgram 7 | import os 8 | from os import listdir as osList 9 | 10 | __author__ = "Leon Schnieber" 11 | __email__ = "olaginos-buero@outlook.de" 12 | __status__ = "Developement" 13 | 14 | class TouchGuiApplication(TouchApplication): 15 | def __init__(self, args): 16 | TouchApplication.__init__(self, args) 17 | 18 | self.status = "nothing" 19 | 20 | self.window = TouchWindow("RoProPreter") 21 | self.mainBox = QHBoxLayout() 22 | self.subBoxA = QVBoxLayout() 23 | # # title 24 | label = QLabel("Programm auswählen:") 25 | self.subBoxA.addWidget(label) 26 | # file list 27 | pathadd = os.path.realpath(__file__).replace("script.py", "") 28 | fileList = osList(pathadd + "files/") 29 | self.listWidget = QListWidget() 30 | for fileName in fileList: 31 | item = QListWidgetItem(fileName) 32 | self.listWidget.addItem(item) 33 | self.subBoxA.addWidget(self.listWidget) 34 | # execute-button 35 | self.button = QPushButton(".rpp Ausführen") 36 | self.button.clicked.connect(self.executeButtonClick) 37 | self.subBoxA.addWidget(self.button) 38 | 39 | self.window.centralWidget.setLayout(self.subBoxA) 40 | self.window.show() 41 | self.exec_() 42 | 43 | def executeButtonClick(self): 44 | if len(self.listWidget.selectedItems()) == 1: 45 | item = self.listWidget.selectedItems()[0] 46 | filename = item.text() 47 | self.runProgram(filename) 48 | 49 | def runProgram(self, programName): 50 | if self.status == "nothing": 51 | self.button.setEnabled(False) 52 | self.button.setText(".rpp läuft!") 53 | pathadd = os.path.realpath(__file__).replace("script.py", "") 54 | ropro = RoboProProgram(pathadd + "files/" + programName) 55 | self.status = "running" 56 | ropro.run() 57 | self.button.setText("fertig! .rpp Ausführen") 58 | self.button.setEnabled(True) 59 | self.status = "nothing" 60 | 61 | 62 | if __name__ == "__main__": 63 | TouchGuiApplication(sys.argv) 64 | -------------------------------------------------------------------------------- /packages/ropropreter/web.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | import time 5 | import cgi 6 | import os 7 | 8 | __author__ = "Leon Schnieber" 9 | __copyright__ = "Copyright 2019" 10 | __maintainer__ = "Leon Schnieber" 11 | __email__ = "olaginos-buero@outlook.de" 12 | __status__ = "Developement" 13 | 14 | def genMain(): 15 | print("") 16 | print("") 17 | print("RoProPreter") 18 | print("") 19 | print("") 20 | print("") 21 | print("
") 22 | print("

fischertechnik TXT

") 23 | print("

") 24 | print("RoProPreter") 25 | print("

") 26 | print("") 27 | print("



") 28 | print("Programmspeicher
") 29 | files = os.listdir("files/") 30 | print("
") 31 | print("") 32 | print("") 33 | print("") 34 | for fileD in files: 35 | if ".rpp" in fileD: 36 | print("") 37 | print("") 38 | print("") 39 | print("") 40 | print("
Dateinamelöschen
" + fileD + "löschen

") 41 | # add list of programs 42 | print("
") 43 | print("Programm hochladen
") 44 | print("

") 45 | print("") 46 | print("") 47 | print("
") 48 | print("


") 49 | print("

zurück zur Startseite

") 50 | print("
") 51 | 52 | def saveDownload(filehandler): 53 | path = filehandler.filename 54 | try: 55 | with open("files/" + path, "w", encoding="utf-8") as f: 56 | f.write(filehandler.file.read().decode()) 57 | f.close() 58 | os.chmod("files/" + path, 0o666) 59 | except BaseException: 60 | pass 61 | genMain() 62 | 63 | def delete(filename): 64 | os.remove("files/" + filename) 65 | genMain() 66 | 67 | if __name__ == "__main__": 68 | data = cgi.FieldStorage() 69 | if "fileUpload" in data: 70 | saveDownload(data["fileUpload"]) 71 | elif "delete" in data: 72 | delete(data["delete"].value.replace("..", "")) 73 | else: 74 | genMain() 75 | -------------------------------------------------------------------------------- /packages/startIDE.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/startIDE.zip -------------------------------------------------------------------------------- /packages/startIDE/.00_news: -------------------------------------------------------------------------------- 1 | News
2 | v1.8.0(20200429):
TX-Pi-HAT-GPIO support
3 | v1.7.5:
Delay now also accepts variables as an input
4 | v1.7.4:
USBRead & USBWrite
5 | v1.7.3:
I2C for RPi and TXT
6 | v1.7.1:
added Calc sgnCpy operator
7 | v1.7.0(20190119)
official v1.7 release
8 | v1.6.12:
disable GPIO display buttons on 3.5" display
9 | v1.6.11:
new Calc functions: sign, unsign, bitShift, bitAnd, bitOr, bitXOr
10 | v1.6.10:
touch, actXPos and actYPos sources in fromSys
11 | v1.6.9:
I2C read and write commands
12 | v1.6.8:
ArrayInit with values
13 | v1.6.6:
Release incl. servo support
14 | v1.6.5:
Added I2C servo support for FTD and SRD
15 | v1.6.3:
Added "Canvas load" to import png pixmaps
16 | v1.6.2:
New menu item "Data" to delete arrays or logfiles
17 | v1.6.1:
Added "userSelect" option to ArraySave
18 | v1.6.0(20181215):
official release of the array functions
19 | v1.5.5:
LookUpTable added
20 | v1.5.2:
QueryArray and webinterface for arrays
21 | v1.5.1:
added array functions
22 | v1.5.0(20181121):
official release of the touch functions
23 | v1.4.2.0:
added IfTouchArea
24 | v1.4.1.0:
added WaitForTouch / WaitForRelease
25 | v1.4.0(20180411):
added graphics commands
26 | v1.3.3:
Bugfix in ftd input acquisition
27 | v1.3.2:
Added RIFShift command
28 | v1.3.1:
Bugfix in FromSys dispBtn
29 | v1.3.0(20180227):
Added FromSys and Log silent
30 | v1.2.2:
Bugfix in ftd counter
31 | v1.2.1:
Bugfix in FromPoly GUI
32 | v1.2.0(20180219):
internal cleanup
33 | v1.1.3:
FromPoly command added
34 | v1.1.1:
div and digit operators for calc command
35 | v1.1.0:(20180207):
Intelligent Interface support
36 | v1.0.8:
added TXT and FTD counters as input
37 | v1.0.7:
calc -> random added
38 | v1.0.5:
performance improvement
39 | v1.0.1:
reduced CPU load during wait commands
40 | v1.0.0(20171231):
Celebrate New Year's Eve with the first release
41 | v0.99.3-debug:
Synchronized on-screen logging
42 | v0.99.0-debug:
Introduction of runtime watchdog
43 | v0.94.3:
“<=“ and “>=“ implemented
44 | v0.94.1:
QueryNow to get current date/time
45 | v0.93.11:
Plain Text up/download in web interface
46 | v0.93.10:
FromButtons input
47 | v0.93.9:
FromKeypad, FromDial to get input
48 | v0.93.1:
FromIn function to read input into a variable
49 | v0.93 (20171210):
Integer variables and arithmetics
50 | v0.92.6:
added Timer Interrupt
51 | v0.92.3:
Introducing log files
52 | v0.92.2:
IfTimer added, Call and CallExt now have a counter
53 | v0.92 (20171207):
CallExt, TimerQuery and TimerClear commands added
54 | v0.91 (20171206):
IfIn, WaitIn and Query commands added
55 | v0.90 (20171129):
ftduino support implemented.
56 | v0.83 (20171121):
Bugfix on Module import.
57 | v0.81 (20171120):
German localisation.
58 | v0.80 (20171120):
Webinterface added.
59 | v0.70 (20171119):
TXT motor output direction inverted for RoboPRO compatibility.
60 | -------------------------------------------------------------------------------- /packages/startIDE/.01_firstrun: -------------------------------------------------------------------------------- 1 |

Pimp your TX-Pi!
Get a HAT...

and stay safe! :-) 2 | -------------------------------------------------------------------------------- /packages/startIDE/.locale: -------------------------------------------------------------------------------- 1 | de -------------------------------------------------------------------------------- /packages/startIDE/HAT.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | # as of 2020/04/29 found at https://github.com/harbaum/cfw-apps/tree/master/packages/tx-pi-hat-test 5 | 6 | 7 | class TxPiHat(): 8 | MODE = "bcm" # "bcm" or "board" 9 | 10 | if MODE == "board": 11 | # board mode uses the pin numbers of the 40 pin 12 | # connector. 13 | PINS = { "I1": 32, "I2": 36, "I3": 38, "I4": 40, 14 | "STBY": 35, 15 | "AIN1": 16, "AIN2": 15, "PWMA": 12, 16 | "BIN1": 29, "BIN2": 31, "PWMB": 33 } 17 | else: 18 | # BCM mode uses the GPIO port numbers 19 | PINS = { "I1": 12, "I2": 16, "I3": 20, "I4": 21, 20 | "STBY": 19, 21 | "AIN1": 23, "AIN2": 22, "PWMA": 18, 22 | "BIN1": 5, "BIN2": 6, "PWMB": 13 } 23 | 24 | def __init__(self): 25 | try: 26 | import RPi.GPIO as GPIO 27 | self.GPIO = GPIO 28 | 29 | self.GPIO.setwarnings(False) 30 | if self.MODE == "board": 31 | self.GPIO.setmode(self.GPIO.BOARD) 32 | else: 33 | self.GPIO.setmode(self.GPIO.BCM) 34 | 35 | # configure I1..I4 as input 36 | self.GPIO.setup(self.PINS["I1"], self.GPIO.IN) 37 | self.GPIO.setup(self.PINS["I2"], self.GPIO.IN) 38 | self.GPIO.setup(self.PINS["I3"], self.GPIO.IN) 39 | self.GPIO.setup(self.PINS["I4"], self.GPIO.IN) 40 | 41 | # power up h bridge for M1 and M2 42 | self.GPIO.setup(self.PINS["STBY"], self.GPIO.OUT) 43 | self.GPIO.output(self.PINS["STBY"], self.GPIO.HIGH) 44 | 45 | # ---------------- M1 ----------------------- 46 | # configure h bridge 47 | self.GPIO.setup(self.PINS["PWMB"], self.GPIO.OUT) 48 | self.pwm1 = self.GPIO.PWM(self.PINS["PWMB"], 200) # 200 Hz 49 | self.pwm1.start(0) 50 | 51 | self.GPIO.setup(self.PINS["BIN1"], self.GPIO.OUT) 52 | self.GPIO.output(self.PINS["BIN1"], self.GPIO.LOW) 53 | 54 | self.GPIO.setup(self.PINS["BIN2"], self.GPIO.OUT) 55 | self.GPIO.output(self.PINS["BIN2"], self.GPIO.LOW) 56 | 57 | # ---------------- M2 ----------------------- 58 | # configure h bridge 59 | self.GPIO.setup(self.PINS["PWMA"], self.GPIO.OUT) 60 | self.pwm2 = self.GPIO.PWM(self.PINS["PWMA"], 200) # 200 Hz 61 | self.pwm2.start(0) 62 | 63 | self.GPIO.setup(self.PINS["AIN1"], self.GPIO.OUT) 64 | self.GPIO.output(self.PINS["AIN1"], self.GPIO.LOW) 65 | 66 | self.GPIO.setup(self.PINS["AIN2"], self.GPIO.OUT) 67 | self.GPIO.output(self.PINS["AIN2"], self.GPIO.LOW) 68 | 69 | self.ok = True 70 | except Exception as e: 71 | self.ok = False 72 | self.err = str(e) 73 | 74 | def get_input(self, i): 75 | return self.GPIO.input(self.PINS[i]) != 1 76 | 77 | def m_set_pwm(self, motor, v): 78 | mpwm = { "M1": self.pwm1, "M2": self.pwm2 } 79 | mpwm[motor].ChangeDutyCycle(v) 80 | 81 | def m_set_mode(self, motor, mode): 82 | mpins = { "M1": [self.PINS["BIN1"], self.PINS["BIN2"]], 83 | "M2": [self.PINS["AIN1"], self.PINS["AIN2"]] } 84 | bits = { "Off": [ self.GPIO.LOW, self.GPIO.LOW ], 85 | "Left": [ self.GPIO.HIGH, self.GPIO.LOW ], 86 | "Right": [ self.GPIO.LOW, self.GPIO.HIGH ], 87 | "Brake": [ self.GPIO.HIGH, self.GPIO.HIGH ] } 88 | self.GPIO.output(mpins[motor][0], bits[mode][0]); 89 | self.GPIO.output(mpins[motor][1], bits[mode][1]); 90 | -------------------------------------------------------------------------------- /packages/startIDE/TextToJson.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | 3 | import sys, json 4 | 5 | stack=[] 6 | with open(str(sys.argv[1]),"r", encoding="utf-8") as f: 7 | for i in f: 8 | stack.append(i[:-1]) 9 | 10 | json.dump(stack, sys.stdout) 11 | -------------------------------------------------------------------------------- /packages/startIDE/arrays/NTC2k_R.arr: -------------------------------------------------------------------------------- 1 | 116;147;189;246;324;434;590;816;1151;1655;2000;2431;3657;5642;8947;14615;24651;43040; -------------------------------------------------------------------------------- /packages/startIDE/arrays/NTC2k_T.arr: -------------------------------------------------------------------------------- 1 | 120; 110; 100; 90; 80; 70; 60; 50; 40; 30; 25; 20; 10; 0; -10; -20; -30; -40; 2 | -------------------------------------------------------------------------------- /packages/startIDE/htmlhelper.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | # helper module for webinterface 5 | # -*- coding: utf-8 -*- 6 | # 7 | 8 | 9 | import sys 10 | 11 | def htmlDecode(str): 12 | return str.replace(""", '"').replace("'", "'").replace("<", '<').replace(">", '>').replace("&", '&'); 13 | 14 | def htmlEncode(str): 15 | return str.replace('&', "&").replace('"', """).replace("'", "'").replace('<', "<").replace('>', ">"); 16 | 17 | def htmlhead(progname:str, headtext:str): 18 | print('Content-Type: text/html') 19 | print('') 20 | print('') 21 | print('') 22 | print('') 23 | print('') 24 | print('') 25 | print('') 26 | print('') 27 | print('') 28 | print('') 29 | print('') 30 | print(progname) 31 | print('') 32 | print('') 33 | print('') 34 | print('') 35 | print('') 36 | print('
') 37 | print('

fischertechnik TXT

') 38 | print('

') 39 | print(progname) 40 | print('

') 41 | print(headtext) 42 | print('
') 43 | 44 | def htmlfoot(message:str, footlink:str, footlinktext:str): 45 | print('

' + message) 46 | print('

' + footlinktext + "") 47 | print("") 48 | 49 | def separator(): 50 | print("


") 51 | 52 | def lf(num:int=1): 53 | for a in range(0,num): 54 | print("
") 55 | 56 | def text(string:str): 57 | #print(" "+string+" ") 58 | print(string) 59 | 60 | def link(text:str, address:str, tags:str=""): 61 | print(''+text+'') 62 | 63 | -------------------------------------------------------------------------------- /packages/startIDE/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/startIDE/icon.png -------------------------------------------------------------------------------- /packages/startIDE/jsonToText.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | 3 | import sys, json 4 | 5 | with open(str(sys.argv[1]),"r", encoding="utf-8") as f: 6 | code=json.load(f) 7 | for i in code: 8 | print(i) 9 | -------------------------------------------------------------------------------- /packages/startIDE/manifest: -------------------------------------------------------------------------------- 1 | [app] 2 | name: startIDE 3 | category: Tools 4 | author: Peter Habermehl 5 | icon: icon.png 6 | desc: Beginner IDE for simple models 7 | html: index.py 8 | url: https://github.com/PeterDHabermehl/startIDE/raw/master/ddoc/Manual_180_de.pdf 9 | exec: startide.py 10 | managed: yes 11 | uuid: 0e500e10-33ee-11e7-9598-0800200c9a66 12 | version: 1.8.0 13 | firmware: >=0.9.4 14 | [de] 15 | desc: Einsteiger-IDE für einfache Modelle 16 | [fr] 17 | desc: IDE d'entrée de gamme pour les modèles simples 18 | -------------------------------------------------------------------------------- /packages/startIDE/pixmaps/BME280.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/startIDE/pixmaps/BME280.png -------------------------------------------------------------------------------- /packages/startIDE/pixmaps/canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/startIDE/pixmaps/canvas.png -------------------------------------------------------------------------------- /packages/startIDE/pixmaps/pinball.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/startIDE/pixmaps/pinball.png -------------------------------------------------------------------------------- /packages/startIDE/pixmaps/servoTest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/startIDE/pixmaps/servoTest.png -------------------------------------------------------------------------------- /packages/startIDE/pixmaps/template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/startIDE/pixmaps/template.png -------------------------------------------------------------------------------- /packages/startIDE/projects/Ampelsim: -------------------------------------------------------------------------------- 1 | ["# Ampelsimulation", "Canvas show", "Canvas clear", "Tag top", "Call Phase00 1", "Delay 5000", "Call Phase01 1", "Delay 1000", "Call Phase02 1", "Delay 1000", "Call Phase03 1", "Delay 1000", "Call Phase04 1", "Delay 3000", "Call Phase05 1", "Delay 2000", "Call Phase06 1", "Delay 1000", "Call Phase00 1", "Jump top", "#", "Module Phase00", "Call Background 1", "# Auto", "Color pen 50 0 0", "Pen move 48 48", "Pen discTo 95 95", "Color pen 50 50 0", "Pen move 48 96", "Pen discTo 95 143", "Color pen 0 255 0", "Pen move 48 144", "Pen discTo 95 192", "# FG", "Color pen 255 0 0", "Pen move 144 96", "Pen discTo 192 143", "Color pen 0 50 0", "Pen move 144 144", "Pen discTo 192 192", "Color pen 50 50 50", "Pen move 144 192", "Pen discTo 192 239", "Canvas update", "MEnd", "#", "Module Phase01", "Call Background 1", "# Auto", "Color pen 50 0 0", "Pen move 48 48", "Pen discTo 95 95", "Color pen 50 50 0", "Pen move 48 96", "Pen discTo 95 143", "Color pen 0 255 0", "Pen move 48 144", "Pen discTo 95 192", "# FG", "Color pen 255 0 0", "Pen move 144 96", "Pen discTo 192 143", "Color pen 0 50 0", "Pen move 144 144", "Pen discTo 192 192", "Color pen 255 255 200", "Pen move 144 192", "Pen discTo 192 239", "Canvas update", "MEnd", "#", "Module Phase02", "Call Background 1", "# Auto", "Color pen 50 0 0", "Pen move 48 48", "Pen discTo 95 95", "Color pen 255 255 0", "Pen move 48 96", "Pen discTo 95 143", "Color pen 0 50 0", "Pen move 48 144", "Pen discTo 95 192", "# FG", "Color pen 255 0 0", "Pen move 144 96", "Pen discTo 192 143", "Color pen 0 50 0", "Pen move 144 144", "Pen discTo 192 192", "Color pen 255 255 200", "Pen move 144 192", "Pen discTo 192 239", "Canvas update", "MEnd", "#", "Module Phase03", "Call Background 1", "# Auto", "Color pen 255 0 0", "Pen move 48 48", "Pen discTo 95 95", "Color pen 50 50 0", "Pen move 48 96", "Pen discTo 95 143", "Color pen 0 50 0", "Pen move 48 144", "Pen discTo 95 192", "# FG", "Color pen 255 0 0", "Pen move 144 96", "Pen discTo 192 143", "Color pen 0 50 0", "Pen move 144 144", "Pen discTo 192 192", "Color pen 255 255 200", "Pen move 144 192", "Pen discTo 192 239", "Canvas update", "MEnd", "#", "Module Phase04", "Call Background 1", "# Auto", "Color pen 255 0 0", "Pen move 48 48", "Pen discTo 95 95", "Color pen 50 50 0", "Pen move 48 96", "Pen discTo 95 143", "Color pen 0 50 0", "Pen move 48 144", "Pen discTo 95 192", "# FG", "Color pen 50 0 0", "Pen move 144 96", "Pen discTo 192 143", "Color pen 0 255 0", "Pen move 144 144", "Pen discTo 192 192", "Color pen 50 50 50", "Pen move 144 192", "Pen discTo 192 239", "Canvas update", "MEnd", "#", "Module Phase05", "Call Background 1", "# Auto", "Color pen 255 0 0", "Pen move 48 48", "Pen discTo 95 95", "Color pen 50 50 0", "Pen move 48 96", "Pen discTo 95 143", "Color pen 0 50 0", "Pen move 48 144", "Pen discTo 95 192", "# FG", "Color pen 255 0 0", "Pen move 144 96", "Pen discTo 192 143", "Color pen 0 50 0", "Pen move 144 144", "Pen discTo 192 192", "Color pen 50 50 50", "Pen move 144 192", "Pen discTo 192 239", "Canvas update", "MEnd", "#", "Module Phase06", "Call Background 1", "# Auto", "Color pen 255 0 0", "Pen move 48 48", "Pen discTo 95 95", "Color pen 255 255 0", "Pen move 48 96", "Pen discTo 95 143", "Color pen 0 50 0", "Pen move 48 144", "Pen discTo 95 192", "# FG", "Color pen 255 0 0", "Pen move 144 96", "Pen discTo 192 143", "Color pen 0 50 0", "Pen move 144 144", "Pen discTo 192 192", "Color pen 50 50 50", "Pen move 144 192", "Pen discTo 192 239", "Canvas update", "MEnd", "#", "Module Background", "Color pen 0 0 0", "Pen move 48 48", "Pen boxTo 96 193", "Pen move 144 96", "Pen boxTo 193 240", "MEnd"] -------------------------------------------------------------------------------- /packages/startIDE/projects/Clock: -------------------------------------------------------------------------------- 1 | ["# clock with chimes", "Init pol_alpha 0", "Init pol_dist 0", "Init cart_dx 120", "Init cart_dy cart_dx", "Init cart_x 0", "Init cart_y 0", "Init std 0", "Init min 0", "Init sec 0", "Init sec_prev 0", "#", "Canvas show", "Canvas clear", "Color pen 255 255 255", "Color paper 50 125 185", "#", "Call Draw_scale 1", "Call Draw_chars 1", "Canvas update", "#", "# main loop", "#", "Tag A", "Delay 50", "FromSys sec second", "IfVar sec == sec_prev A", "Init sec_prev sec", "Call Draw_hands 1", "IfVar sec_prev == 0 FullMinute", "Jump A", "#", "#", "#", "Tag FullMinute", "FromSys min minute", "FromSys std hour", "IfVar min == 0 Full", "IfVar min == 15 Quarter", "IfVar min == 30 Half", "IfVar min == 45 ThreeQuarters", "Jump A", "#", "#", "#", "Tag Full", "Print Full:", "QueryVar std", "QueryVar min", "Jump A", "#", "Tag Quarter", "Print Quarter:", "QueryVar std", "QueryVar min", "Jump A", "#", "Tag Half", "Print Half:", "QueryVar std", "QueryVar min", "Jump A", "#", "Tag ThreeQuarters", "Print ThreeQuarters:", "QueryVar std", "QueryVar min", "Jump A", "#", "#", "#", "Module Draw_scale", "Init x 0", "Init y 0", "Color pen 128 128 128", "Pen move 0 0", "Pen discTo 237 237", "Color pen 0 0 0", "Pen move 2 2", "Pen discTo 239 239", "Color pen 255 255 255", "Pen move 1 1", "Pen discTo 238 238", "Color pen 0 0 0", "Init pol_alpha 0", "Tag B", "Init pol_dist 115", "Call pol_to_cart 1", "Pen move cart_x cart_y", "Init pol_dist 120", "Call pol_to_cart 1", "Pen lineTo cart_x cart_y", "Calc pol_alpha pol_alpha + 6", "IfVar pol_alpha < 366 B", "Init pol_alpha 0", "Tag C", "Init pol_dist 120", "Call pol_to_cart 1", "Pen areaAdd cart_x cart_y", "Init pol_dist 115", "Calc pol_alpha pol_alpha - 2", "Call pol_to_cart 1", "Pen areaAdd cart_x cart_y", "Calc pol_alpha pol_alpha + 2", "Init pol_dist 108", "Call pol_to_cart 1", "Pen areaAdd cart_x cart_y", "Init pol_dist 115", "Calc pol_alpha pol_alpha + 2", "Call pol_to_cart 1", "Pen areaDraw cart_x cart_y", "Calc pol_alpha pol_alpha + 28", "IfVar pol_alpha < 390 C", "MEnd", "#", "#", "Module Draw_chars", "Text Serif 16 12", "Color pen 0 0 0", "Pen text 107 30", "Text Serif 16 3", "Pen text 212 128", "Text Serif 16 9", "Pen text 18 128", "Text Serif 16 6", "Pen text 114 224", "Color pen 0 0 0", "Text Serif 24 startIDE", "Pen text 55 178", "Color pen 255 180 20", "Pen text 54 177", "MEnd", "#", "#", "Module Draw_hands", "# clear background", "Color pen 255 255 255", "Pen move 15 15", "Pen discTo 225 225", "Color pen 255 255 255", "#", "Call Draw_chars 1", "# hours hand", "FromSys std hour", "FromSys min minute", "Init pol_dist 80", "Calc std std * 30", "Calc min min * 180", "Calc min min / 360", "Calc pol_alpha std + min", "Calc pol_alpha pol_alpha - 90", "Call pol_to_cart 1", "Color pen 0 0 0", "Pen areaAdd cart_x cart_y", "Init pol_dist 10", "Calc pol_alpha pol_alpha - 90", "Call pol_to_cart 1", "Pen areaAdd cart_x cart_y", "Calc pol_alpha pol_alpha - 90", "Call pol_to_cart 1", "Pen areaAdd cart_x cart_y", "Calc pol_alpha pol_alpha - 90", "Call pol_to_cart 1", "Pen areaDraw cart_x cart_y", "# minutes hand", "FromSys min minute", "Init pol_dist 100", "Calc pol_alpha min * 6", "Calc pol_alpha pol_alpha - 90", "Call pol_to_cart 1", "Color pen 0 0 0", "Pen areaAdd cart_x cart_y", "Init pol_dist 7", "Calc pol_alpha pol_alpha - 90", "Call pol_to_cart 1", "Pen areaAdd cart_x cart_y", "Calc pol_alpha pol_alpha - 90", "Call pol_to_cart 1", "Pen areaAdd cart_x cart_y", "Calc pol_alpha pol_alpha - 90", "Call pol_to_cart 1", "Pen areaDraw cart_x cart_y", "# minutes hand hollow", "Init pol_dist 82", "Calc pol_alpha min * 6", "Calc pol_alpha pol_alpha - 90", "Call pol_to_cart 1", "Color pen 255 255 255", "Pen areaAdd cart_x cart_y", "Init pol_dist 5", "Calc pol_alpha pol_alpha - 90", "Call pol_to_cart 1", "Pen areaAdd cart_x cart_y", "Calc pol_alpha pol_alpha - 90", "Call pol_to_cart 1", "Pen areaAdd cart_x cart_y", "Calc pol_alpha pol_alpha - 90", "Call pol_to_cart 1", "Pen areaDraw cart_x cart_y", "# seconds hand", "FromSys sec second", "Init pol_dist 100", "Calc pol_alpha sec * 6", "Calc pol_alpha pol_alpha - 90", "Call pol_to_cart 1", "Color pen 255 50 50", "Pen move cart_dx cart_dy", "Pen lineTo cart_x cart_y", "Calc x cart_x - 2", "Calc y cart_y - 2", "Pen move x y", "Calc x cart_x + 2", "Calc y cart_y + 2", "Pen discTo x y", "Calc x cart_dx - 5", "Calc y cart_dy - 5", "Pen move x y", "Calc x cart_dx + 5", "Calc y cart_dy + 5", "Pen discTo x y", "Canvas update", "MEnd", "#", "#", "Module pol_to_cart", "# Inp.: pol_alpha, pol_dist", "# cart_dx, cart_dy", "# Out : cart_x, cart_y", "Calc cart_x pol_dist cos pol_alpha", "Calc cart_x cart_x + cart_dx", "Calc cart_y pol_dist sin pol_alpha", "Calc cart_y cart_y + cart_dy", "MEnd"] -------------------------------------------------------------------------------- /packages/startIDE/projects/Grafik01: -------------------------------------------------------------------------------- 1 | ["# new", "Canvas clear", "Canvas show", "Color paper 127 127 127", "Color pen 255 0 0", "Pen plot 120 120", "Canvas update", "Delay 1000"] -------------------------------------------------------------------------------- /packages/startIDE/projects/I2C_motorshield: -------------------------------------------------------------------------------- 1 | ["# new", "Init s1phase 0", "Init s1direction 1", "Init integer 0", "Call shield0init 1", "Tag e", "Calc s1phase s1phase + s1direction", "Calc s1phase s1phase bitAnd 3", "Call stepper1 1", "LoopTo e 3000", "I2CWrite FTD m1off", "I2CWrite FTD m2off", "# ", "# ", "# ", "Module shield0init", "# reset", "ArrayInit data 96;0;128", "I2CWrite FTD data", "Delay 10", "# read mode", "Init oldmode 0", "ArrayInit data 96;1", "I2CRead FTD data", "Array oldmode readFrom data 0", "# set mode", "Init newmode 0", "Calc newmode oldmode bitAnd 127", "Calc newmode newmode bitOr 16", "ArrayInit data 96;0", "Array newmode appendTo data 0", "I2CWrite FTD data", "# prescale", "ArrayInit data 96;254;5", "I2CWrite FTD data", "ArrayInit data 96;0", "Array oldmode appendTo data 0", "I2CWrite FTD data", "Delay 10", "Calc newmode oldmode bitOr 160", "Array newmode writeTo data 2", "I2CWrite FTD data", "# ende modeset", "ArrayInit m1fwd 96;38;0;16;0;0;0;16;0;0;0;0;0;0", "ArrayInit m1bck 96;38;0;16;0;0;0;0;0;0;0;16;0;0", "ArrayInit m1brk 96;38;0;16;0;0;0;16;0;0;0;16;0;0", "ArrayInit m1off 96;38;0;16;0;0;0;0;0;0;0;0;0;0", "ArrayInit m2fwd 96;50;0;0;0;0;0;16;0;0;0;16;0;0", "ArrayInit m2bck 96;50;0;16;0;0;0;0;0;0;0;16;0;0", "ArrayInit m2brk 96;50;0;16;0;0;0;16;0;0;0;16;0;0", "ArrayInit m2off 96;50;0;0;0;0;0;0;0;0;0;16;0;0", "MEnd", "# ", "# ", "# ", "Module stepper1", "IfVar s1phase == 1 s1ph1", "IfVar s1phase == 2 s1ph2", "IfVar s1phase == 3 s1ph3", "# s1ph0", "I2CWrite FTD m1fwd", "I2CWrite FTD m2off", "Return", "Tag s1ph1", "I2CWrite FTD m2fwd", "I2CWrite FTD m1off", "Return", "Tag s1ph2", "I2CWrite FTD m1bck", "I2CWrite FTD m2off", "Return", "Tag s1ph3", "I2CWrite FTD m2bck", "I2CWrite FTD m1off", "MEnd"] -------------------------------------------------------------------------------- /packages/startIDE/projects/I2C_stepper: -------------------------------------------------------------------------------- 1 | ["# new", "Init s1phase 0", "Init s1direction 1", "Init integer 0", "Call shield0init 1", "Tag e", "Calc s1phase s1phase + s1direction", "Calc s1phase s1phase bitAnd 3", "QueryVar s1phase", "Call stepper1 1", "LoopTo e 200", "# ", "# ", "# ", "Module shield0init", "# reset", "ArrayInit data 96;0;128", "I2CWrite FTD data", "Delay 10", "# read mode", "Init oldmode 0", "ArrayInit data 96;1", "I2CRead FTD data", "Array oldmode readFrom data 0", "# set mode", "Init newmode 0", "Calc newmode oldmode bitAnd 127", "Calc newmode newmode bitOr 16", "ArrayInit data 96;0", "Array newmode appendTo data 0", "I2CWrite FTD data", "# prescale", "ArrayInit data 96;254;5", "I2CWrite FTD data", "ArrayInit data 96;0", "Array oldmode appendTo data 0", "I2CWrite FTD data", "Delay 10", "Calc newmode oldmode bitOr 160", "Array newmode writeTo data 2", "I2CWrite FTD data", "# ende modeset", "ArrayInit m1fwd 96;38;0;16;0;0;0;16;0;0;0;0;0;0", "ArrayInit m1bck 96;38;0;16;0;0;0;0;0;0;0;16;0;0", "ArrayInit m1brk 96;38;0;16;0;0;0;16;0;0;0;16;0;0", "ArrayInit m1off 96;38;0;16;0;0;0;0;0;0;0;0;0;0", "ArrayInit m2fwd 96;50;0;0;0;0;0;16;0;0;0;16;0;0", "ArrayInit m2bck 96;50;0;16;0;0;0;0;0;0;0;16;0;0", "ArrayInit m2brk 96;50;0;16;0;0;0;16;0;0;0;16;0;0", "ArrayInit m2off 96;50;0;0;0;0;0;0;0;0;0;16;0;0", "ArrayInit s1p0 96;38;0;16;0;0;0;16;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;16;0;0", "ArrayInit s1p1 96;38;0;16;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;16;0;0;0;16;0;0", "ArrayInit s1p2 96;38;0;16;0;0;0;0;0;0;0;16;0;0;0;0;0;0;0;0;0;0;0;16;0;0", "ArrayInit s1p3 96;38;0;16;0;0;0;0;0;0;0;0;0;0;0;16;0;0;0;0;0;0;0;16;0;0", "MEnd", "# ", "# ", "# ", "Module stepper1", "IfVar s1phase == 1 s1ph1", "IfVar s1phase == 2 s1ph2", "IfVar s1phase == 3 s1ph3", "# s1ph0", "I2CWrite FTD s1p0", "Return", "Tag s1ph1", "I2CWrite FTD s1p1", "Return", "Tag s1ph2", "I2CWrite FTD s1p2", "Return", "Tag s1ph3", "I2CWrite FTD s1p3", "MEnd"] -------------------------------------------------------------------------------- /packages/startIDE/projects/TempRegler: -------------------------------------------------------------------------------- 1 | ["# new", "Init K_P 18", "Init T_soll 25", "Init T_ist 25", "# ", "Init d_T 0", "Init y 0", "Init y1 0", "Init y2 0", "Init y3 0", "Init R_in 0", "Init U_out 0", "Init dU 0", "# ", "Canvas clear", "Canvas show", "Call initGrid 1", "Interrupt Every 1000 buttons", "# main loop", "Tag main", "Call governor 1", "Call drawGraphs 1", "Jump main", "# ", "Module governor", "FromIn FTD 1 R R_in", "FromPoly T_ist R_in -1.19005379623e-09 1.236196074067e-05 -0.047586949030459 72.5923764402556", "Calc d_T T_soll - T_ist", "Calc d_T T_soll - T_ist", "Calc dU d_T * K_P", "Calc dU dU / 10", "Calc U_out U_out + dU", "Calc U_out U_out min 512", "Calc U_out U_out max 0", "Motor FTD 1 l U_out", "MEnd", "# ", "Module drawGraphs", "Call scrollGrid 1", "Color pen 255 0 0", "Calc y T_soll * 10", "Calc y 370 - y", "Pen move 238 y1", "Pen lineTo 239 y", "Init y1 y", "Color pen 0 255 0", "Calc y T_ist * 10", "Calc y 370 - y", "Pen move 238 y2", "Pen lineTo 239 y", "Init y2 y", "Color pen 0 255 255", "Calc y U_out * 4", "Calc y y / 10", "Calc y 220 - y", "Pen move 238 y3", "Pen lineTo 239 y", "Init y3 y", "MEnd", "# ", "Module buttons", "Init input 0", "FromSys input dispBtn", "IfVar input == 100 temp_plus", "IfVar input == 10 temp_minus", "IfVar input == 1 buttons_end", "Jump buttons_end", "Tag temp_plus", "Calc t_soll t_soll + 1", "Calc t_soll t_soll min 35", "Jump buttons_end", "Tag temp_minus", "Calc t_soll t_soll - 1", "Calc t_soll t_soll max 15", "Jump buttons_end", "Tag end", "Stop", "Tag buttons_end", "MEnd", "# ", "Module scrollGrid", "Pen move 0 0", "Pen eraseTo 40 240", "Color pen 255 255 255", "Pen lineTo 40 0", "Pen move 36 220", "Pen lineTo 39 220", "Pen move 36 20", "Pen lineTo 39 20", "Pen move 36 120", "Pen lineTo 39 120", "Pen move 36 70", "Pen lineTo 39 70", "Pen move 36 170", "Pen lineTo 39 170", "Text Courier 10 15\u00b0", "Pen text 6 224", "Text Courier 10 35\u00b0", "Pen text 6 24", "Text Courier 10 25\u00b0", "Pen text 6 124", "Text Courier 10 20\u00b0", "Pen text 6 174", "Text Courier 10 30\u00b0", "Pen text 6 74", "Pen move 1 0", "Canvas origin", "Color pen 33 117 204", "Pen move 239 0", "Pen lineTo 239 239", "Color pen 255 255 255", "Init ic_y 0", "Tag sc1", "Calc ic_y ic_y + 10", "Pen plot 239 ic_y", "LoopTo sc1 23", "Canvas update", "MEnd", "Module initGrid", "Color pen 255 255 255", "Init ic_y 0", "Tag ic1", "Calc ic_y ic_y + 10", "Pen plot 239 ic_y", "Pen lineTo 39 ic_y", "LoopTo ic1 23", "Call scrollGrid 1", "MEnd"] -------------------------------------------------------------------------------- /packages/startIDE/projects/Touch: -------------------------------------------------------------------------------- 1 | ["# new", "Canvas show", "Canvas clear", "#", "#asdf", "#", "Color pen 255 255 255", "Pen plot 10 40", "Pen lineTo 10 10", "Pen lineTo 120 10", "Color pen 0 0 0", "Pen lineTo 120 40", "Pen lineTo 10 40", "Color pen 255 0 0", "Text Helvetica 11 Touch here!", "Pen text 22 31", "Canvas update", "Tag buttons", "WaitForTouch", "IfTouchArea 10 10 120 40 pressed", "Jump buttons", "Tag pressed", "Color pen 0 0 0", "Pen plot 10 40", "Pen lineTo 10 10", "Pen lineTo 120 10", "Color pen 255 255 255", "Pen lineTo 120 40", "Pen lineTo 10 40", "Canvas update", "WaitForRelease", "Color pen 255 255 255", "Pen plot 10 40", "Pen lineTo 10 10", "Pen lineTo 120 10", "Color pen 0 0 0", "Pen lineTo 120 40", "Pen lineTo 10 40", "Canvas update", "Delay 250", "Pen move 10 10", "Pen eraseTo 121 41", "Canvas update", "Delay 250"] -------------------------------------------------------------------------------- /packages/startIDE/projects/Touch3: -------------------------------------------------------------------------------- 1 | ["# Touch demo 3", "Canvas show", "Canvas clear", "# ", "Call background 1", "Tag top", "Call foreground_0 1", "Call decoration 1", "Canvas update", "# ", "WaitForTouch", "IfTouchArea 0 0 30 30 end", "Output TXT 1 512", "# ", "Call foreground_1 1", "Call decoration 1", "Canvas update", "# ", "WaitForRelease", "Output TXT 1 0", "Jump top", "# ", "Tag end", "Stop", "# ", "Module background", "Color pen 255 255 255", "Pen move 60 60", "Pen discTo 180 180", "Pen move 0 0", "Pen discTo 30 30", "Color pen 255 0 0", "Pen move 4 4", "Pen discTo 26 26", "Color pen 255 255 255", "Text Courier 20 X", "Pen text 6 24", "Pen text 7 24", "Pen text 8 24", "MEnd", "# ", "Module foreground_0", "Color pen 0 127 0", "Pen move 66 66", "Pen discTo 174 174", "MEnd", "# ", "Module foreground_1", "Color pen 0 255 0", "Pen move 66 66", "Pen discTo 174 174", "MEnd", "# ", "Module decoration", "Color pen 255 255 255", "Pen move 117 90", "Pen boxTo 123 150", "MEnd"] -------------------------------------------------------------------------------- /packages/startIDE/projects/blink: -------------------------------------------------------------------------------- 1 | ["# new", "Tag OBEN", "Output FTD 1 512", "Delay 500", "Output FTD 1 0", "Delay 500", "Jump OBEN"] -------------------------------------------------------------------------------- /packages/startIDE/projects/c_Ampel: -------------------------------------------------------------------------------- 1 | ["# Ampel", "# ", "Message Ampelprogramm steuert eine Fussgaengerampel.

(c) 05/2017
Peter Habermehl'Okay", "# Fussgaenger rot setzen", "Output RIF 4 7", "Output RIF 5 0", "#", "Tag gruen", "# Fahrzeuge gruen", "Output RIF 1 0", "Output RIF 2 0", "Output RIF 3 7", "Print FZ gruen", "# Warten auf Fussgaengertaste", "Print Warte auf FG", "Print ...oder Ende", "Tag wait", "IfInDig RIF 2 True ende", "IfInDig RIF 1 False wait", "# Signal kommt", "Output RIF 6 7", "Print Signal kommt", "Delay 3000", "# Fahrzeuge gelb", "Output RIF 2 7", "Output RIF 3 0", "Print FZ gelb", "Delay 2000", "# Fahrzeuge rot", "Output RIF 1 7", "Output RIF 2 0", "Output RIF 3 0", "Print FZ rot", "Delay 2000", "# Fussgaenger gruen", "Output RIF 4 0", "Output RIF 5 7", "Output RIF 6 0", "Print FG gruen", "Delay 2000", "Print Ende FG gruen", "Tag blink", "Output RIF 5 0", "Delay 250", "Output RIF 5 7", "Delay 250", "LoopTo blink 6", "# Fussgaenger wieder rot", "Output RIF 4 7", "Output RIF 5 0", "Print FG rot", "Delay 2000", "# Fahrzeuge rot-gelb", "Output RIF 2 7", "Output RIF 3 0", "Print FZ rot-gelb", "Delay 2000", "# und zurueck zum Start", "Jump gruen", "# Sprungmarke Ende", "Tag ende"] 2 | -------------------------------------------------------------------------------- /packages/startIDE/projects/c_Blink: -------------------------------------------------------------------------------- 1 | ["# Blink", "Tag TOP", "Output RIF 1 7", "Delay 100", "Output RIF 1 0", "Delay 400", "Jump TOP"] -------------------------------------------------------------------------------- /packages/startIDE/projects/c_Haendetrockner: -------------------------------------------------------------------------------- 1 | ["# Haendetrockner", "Motor RIF 2 l 7", "Delay 100", "Tag START", "IfInDig RIF 3 False FAN_ON", "WaitInDig RIF 3 Falling 0", "Tag FAN_ON", "Motor RIF 1 r 7", "WaitInDig RIF 3 Raising 0", "Delay 1000", "Motor RIF 1 s 0", "Jump START"] -------------------------------------------------------------------------------- /packages/startIDE/projects/c_Hanoi3: -------------------------------------------------------------------------------- 1 | ["# Hanoi", "# ", "Output TXT 7 512", "Clear", "Print Fahre Referenzpunkte an...", "Call grundstellung 1", "Tag START", "Message Turm von Hanoi:
Bitte Tonnen in Startstellung bringen!'Start", "# ", "Clear", "Print Programm laeuft...", "# A", "Print Schritt A", "Call auf 2", "Call greifen 1", "Call auf 1", "Call dreh_rechts 2", "Call ab 3", "Call loslassen 1", "# B", "Print Schritt B", "Call auf 2", "Call dreh_links 2", "Call ab 1", "Call greifen 1", "Call auf 1", "Call dreh_rechts 1", "Call ab 2", "Call loslassen 1", "# C", "Print Schritt C", "Call auf 1", "Call dreh_rechts 1", "Call ab 1", "Call greifen 1", "Call auf 2 ", "Call dreh_links 1", "Call ab 1", "Call loslassen 1", "# D", "Print Schritt D", "Call auf 1", "Call dreh_links 1", "Call ab 2", "Call greifen 1", "Call auf 3", "Call dreh_rechts 2", "Call ab 3", "Call loslassen 1", "# E", "Print Schritt E", "Call auf 2", "Call dreh_links 1", "Call ab 1", "Call greifen 1", "Call auf 1", "Call dreh_links 1", "Call ab 2", "Call loslassen 1", "# F", "Print Schritt F", "Call auf 1", "Call dreh_rechts 1", "Call ab 1", "Call greifen 1", "Call auf 2", "Call dreh_rechts 1", "Call ab 1", "Call loslassen 1", "# G", "Print Schritt G", "Call auf 1", "Call dreh_links 2", "Call ab 2", "Call greifen 1", "Call auf 3", "Call dreh_rechts 2 ", "Call ab 1", "Call loslassen 1", "# ", "Call ab 3", "Call freiheben 1", "Message Ablauf beendet.'Okay", "Print ...und zurueck!", "Call greifen 1", "Call auf 1", "Call dreh_links 2", "Call ab 1", "Call loslassen 1", "# ", "Print Hoehenreferenzierung", "Call g2 1", "Jump START", "# ", "# Ende", "# ", "Module grundstellung", "Call loslassen", "MotorP TXT 3 2 3 l 512 9999", "MotorE TXT 2 4 l 512 9999", "MotorE TXT 2 4 r 512 1150", "MotorE TXT 1 1 l 512 9999", "Call g2 1", "MEnd", "Module g2", "MotorE TXT 2 4 l 512 9999", "Call freiheben 1", "MEnd", "# Arm", "Module vor", "MotorP TXT 3 2 3 r 512 10", "MEnd", "Module zurueck", "MotorP TXT 3 2 3 r 512 10", "MEnd", "# Heben", "Module ab", "MotorE TXT 2 4 l 512 350", "MEnd", "Module auf", "MotorE TXT 2 4 r 512 350", "MEnd", "Module freiheben", "MotorE TXT 2 4 r 512 85", "MEnd", "# Drehen", "Module dreh_rechts", "MotorE TXT 1 1 r 512 375", "MEnd", "Module dreh_links", "MotorE TXT 1 1 l 512 375", "MEnd", "# Greifer", "Module loslassen", "Output TXT 8 0", "Delay 100", "MEnd", "Module greifen", "Output TXT 8 512", "Delay 100", "MEnd"] -------------------------------------------------------------------------------- /packages/startIDE/projects/c_Lauflicht: -------------------------------------------------------------------------------- 1 | ["# Ampel Lauflicht", "Tag start", "Output RIF 1 7", "Output RIF 6 0", "Delay 200", "Output RIF 2 7", "Output RIF 1 0", "Delay 200", "Output RIF 3 7", "Output RIF 2 0", "Delay 200", "Output RIF 4 7", "Output RIF 3 0", "Delay 200", "Output RIF 5 7", "Output RIF 4 0", "Delay 200", "Output RIF 6 7", "Output RIF 5 0", "Delay 200", "IfInDig RIF 2 False start"] -------------------------------------------------------------------------------- /packages/startIDE/projects/c_NTC2k: -------------------------------------------------------------------------------- 1 | ["# NTC2k", "Init R_in 0", "Init T_cels 0", "ArrayInit NTC2k_R", "ArrayLoad NTC2k_R byName ", "ArrayInit NTC2k_T", "ArrayLoad NTC2k_T byName ", "FromIn TXT 1 R R_in", "LookUpTable T_cels NTC2k_R linear NTC2k_T R_in", "QueryVar T_cels"] -------------------------------------------------------------------------------- /packages/startIDE/projects/c_Signalfeuer: -------------------------------------------------------------------------------- 1 | ["# Signalfeuer", "Tag ANFANG", "Output RIF 1 7", "Delay 200", "Output RIF 3 7", "Delay 100", "Output RIF 3 0", "Delay 900", "Output RIF 3 7", "Delay 100", "Output RIF 3 0", "Delay 500", "Output RIF 1 0", "Delay 200", "Jump ANFANG"] -------------------------------------------------------------------------------- /packages/startIDE/projects/c_Sort: -------------------------------------------------------------------------------- 1 | ["# sort an array", "Init c 0", "Init d 0", "Init integer 0", "ArrayInit data", "ArrayInit h", "# ", "Tag top", "Calc integer 0 random 100", "Array integer appendTo data 0", "LoopTo top 100", "# ", "QueryArray data", "Call sort 1", "QueryArray data", "# ", "# ", "Module sort", "ArrayStat d sizeOf data ", "Tag sortloop_1", "ArrayStat c minIdx data ", "Array c removeFrom data c", "Array c appendTo h 0", "LoopTo sortloop_1 d", "ArrayStat d sizeOf h ", "Tag sortloop_2", "Array c removeFrom h 0", "Array c appendTo data 0", "LoopTo sortloop_2 d", "MEnd"] -------------------------------------------------------------------------------- /packages/startIDE/projects/c_Touch: -------------------------------------------------------------------------------- 1 | ["# Touch", "Canvas show", "Color paper 0 0 0", "Canvas clear", "# ", "Color pen 255 0 0", "Pen move 209 0", "Pen discTo 239 29", "# ", "Text Times 15 Touch screen!", "Pen text 0 20", "Canvas update", "# ", "Color pen 255 255 255", "Init cx 0", "Init cy 0", "# ", "Tag top", "WaitForTouch", "IfTouchArea 209 0 239 29 end", "FromSys cx touchXPos", "FromSys cy touchYPos", "Pen plot cx cy", "Canvas update", "Jump top", "# ", "Tag end"] -------------------------------------------------------------------------------- /packages/startIDE/projects/i2c_BME280: -------------------------------------------------------------------------------- 1 | ["# init sensor", "#", "# t_standby 500ms", "ArrayInit array 118;245;132", "I2CWrite SRD array", "# normal mode", "ArrayInit array 118;244;111", "I2CWrite SRD array", "#", "# get correction values", "#", "ArrayInit array 118;136", "I2CWrite SRD array", "# ", "ArrayInit array 118;6", "I2CRead SRD array", "# ", "Init integer 0", "Init dig_T1 0", "Array integer readFrom array 1", "Calc dig_T1 integer * 256", "Array integer readFrom array 0", "Calc dig_T1 dig_T1 + integer", "# ", "Init dig_T2 0", "Array integer readFrom array 3", "Calc dig_T2 integer * 256", "Array integer readFrom array 2", "Calc dig_T2 dig_T2 + integer", "# ", "Init dig_T3 0", "Array integer readFrom array 5", "Calc dig_T3 integer * 256", "Array integer readFrom array 4", "Calc dig_T3 dig_T3 + integer", "#", "# read temperature", "#", "Tag loop", "Clear", "# set temp register", "#", "ArrayInit temp_raw 118;250", "I2CWrite SRD temp_raw", "# read temp register", "ArrayInit temp_raw 118;3", "I2CRead SRD temp_raw", "ArrayStat integer sizeOf temp_raw", "IfVar integer != 3 loop", "#", "Init t_h 0", "Init t_m 0", "Init t_l 0", "Array t_h readFrom temp_raw 0", "Array t_m readFrom temp_raw 1", "Array t_l readFrom temp_raw 2", "Calc integer 2 exp 12", "Calc t_h integer * t_h", "Calc integer 2 exp 4", "Calc t_m integer * t_m", "Calc integer 2 exp 4", "Calc t_l t_l / integer", "Init t_ADC t_h", "Calc t_ADC t_ADC + t_m", "Calc t_ADC t_ADC + t_l", "#", "# compensation calc", "#", "Init n0", "Init n1", "Init var1", "Init var2", "Init t_dC", "#", "Calc n0 t_ADC * dig_T2", "Calc n0 n0 / 16384", "Calc n1 dig_T1 * dig_T2", "Calc n1 n1 / 1024", "Calc var1 n0 - n1", "#", "Calc n0 t_ADC * dig_T3", "Calc n0 n0 / 131072", "Calc n1 dig_T1 * dig_T3", "Calc n1 n1 / 8192", "Calc n0 n0 - n1", "Calc var2 n0 * n0", "Calc var2 var2 / dig_T3", "#", "Calc n0 var1 + var2", "Calc t_dC n0 / 512", "QueryVar t_dC", "Delay 1000", "Jump loop"] -------------------------------------------------------------------------------- /packages/startIDE/projects/interpol: -------------------------------------------------------------------------------- 1 | ["# new", "ArrayInit data_in", "ArrayInit data_out", "Init integer 0", "Init integer2 0", "Tag a", "Array integer appendTo data_in 0", "Calc integer2 integer * 100", "Array integer2 appendTo data_out 0", "Calc integer integer + 10", "LoopTo a 5", "QueryArray data_in", "QueryArray data_out", "LookUpTable integer data_in linear data_out 5", "QueryVar integer"] -------------------------------------------------------------------------------- /packages/startIDE/projects/microPaint: -------------------------------------------------------------------------------- 1 | ["# micro Paint", "Canvas clear", "Canvas show", "Init integer 0", "Init x 0", "Init y 0", "Text Times 15 Just paint on the canvas!", "Pen text 20 20", "Canvas update", "Color pen 255 0 0", "Tag a", "Delay 100", "Init r integer", "FromSys integer touch", "IfVar integer == 0 a", "FromSys x actXPos", "FromSys y actYPos", "IfVar integer != r pkt", "Pen lineTo x y", "Tag pkt", "Pen plot x y", "Canvas update", "Jump a"] -------------------------------------------------------------------------------- /packages/startIDE/projects/robo: -------------------------------------------------------------------------------- 1 | ["# robo control", "# Init position variables", "Init x 0", "Init y 0", "Init z 0", "Init st 0", "# Init destination variables", "Init dx 0", "Init dy 0", "Init dz 0", "# Init step variables", "Init a 0", "Init b 0 ", "Init c 0", "# Positions list", "ArrayInit pos_x 10;0;5", "ArrayInit pos_y 0;12;10", "ArrayInit pos_z 0;5;10", "ArrayInit pos_t 0;1;0", "# some more variables", "Init numSteps 0", "ArrayStat numSteps sizeOf pos_x", "Init count -1", "Init cs 0", "# Init stepper states", "Init s1 0", "Init s2 0", "Init s3 0", "# go to reference position 0;0;0;0", "Call home 1", "#", "# run through positions", "#", "Tag next", "Calc count count + 1", "QueryVar count", "# set tool states", "# out tool st", "IfVar count == numSteps ende", "Array dx readFrom pos_x count", "Array dy readFrom pos_y count", "Array dz readFrom pos_z count", "Array st readFrom pos_t count", "#", "Tag move", "Calc a dx - x", "Calc a 1 sgnCpy a", "Calc x x + a", "#", "Calc b dy - y", "Calc b 1 sgnCpy b", "Calc y y + b", "#", "Calc c dz - z", "Calc c 1 sgnCpy c", "Calc z z + c", "#", "Calc cs a || b", "Calc cs cs || c", "IfVar cs == 0 next", "Call step 1", "#", "Jump move", "#", "Tag ende", "#", "# stepper control submodules", "#", "Module step", "Calc s1 s1 + a", "Calc s2 s2 + b", "Calc s3 s3 + c", "Calc s1 s1 bitAnd 3", "Calc s2 s2 bitAnd 3", "Calc s3 s3 bitAnd 3", "Clear", "QueryVar s1", "QueryVar s2", "QueryVar s3", "Call stepper1 1", "Call stepper2 1", "Call stepper3 1", "MEnd", "#", "Module stepper1", "IfVar s1 == 0 s1p0", "IfVar s1 == 1 s1p1", "IfVar s1 == 2 s1p2", "# s1p3:", "# out s1_1_pos3state", "# out s1_2_pos3state", "Jump s1end", "Tag s1p0", "# out s1_1_pos0state", "# out s1_2_pos0state", "Jump s1end", "Tag s1p1", "# out s1_1_pos1state", "# out s1_2_pos1state", "Jump s1end", "Tag s1p2", "# out s1_1_pos2state", "# out s1_2_pos2state", "Tag s1end", "MEnd", "#", "Module stepper2", "IfVar s2 == 0 s2p0", "IfVar s2 == 1 s2p1", "IfVar s2 == 2 s2p2", "# s2p3:", "# out s2_1_pos3state", "# out s2_2_pos3state", "Jump s2end", "Tag s2p0", "# out s2_1_pos0state", "# out s2_2_pos0state", "Jump s2end", "Tag s2p1", "# out s2_1_pos1state", "# out s2_2_pos1state", "Jump s2end", "Tag s2p2", "# out s2_1_pos2state", "# out s2_2_pos2state", "Tag s2end", "MEnd", "#", "Module stepper3", "IfVar s3 == 0 s1p0", "IfVar s3 == 1 s1p1", "IfVar s3 == 2 s1p2", "# s3p3:", "# out s3_1_pos3state", "# out s3_2_pos3state", "Jump s3end", "Tag s3p0", "# out s3_1_pos0state", "# out s3_2_pos0state", "Jump s3end", "Tag s3p1", "# out s3_1_pos1state", "# out s3_2_pos1state", "Jump s3end", "Tag s1p3", "# out s3_1_pos2state", "# out s3_2_pos2state", "Tag s3end", "MEnd", "#", "#", "#", "Module home", "# run all steppers until end switches are released", "Call walkBack 1", "#", "Init s1 -1", "# set tool to \"0\" state", "# out tool 0", "# 4 steps forward for each motor", "# to set defined states", "Tag homerun", "Calc s1 s1 + 1", "Init s2 s1", "Init s3 s1", "Call stepper1 1", "Call stepper2 1", "Call stepper3 1", "LoopTo homerun 4", "# run all steppers until end switches are operated", "Call walkOn 1", "# run all forward until end switches are released again", "Call walkBack 1", "# set position variables accordingly", "Init x 0", "Init y 0", "Init z 0", "Init st 0", "MEnd", "#", "Module walkOn", "# run each stepper backwards", "# until end switch is operated (= 0)", "Tag walkOn", "FromIn FTD 1 D a", "Calc a 0 - a", "FromIn FTD 2 D b", "Calc b 0 - b", "FromIn FTD 3 D c", "Calc c 0 - c", "Calc cs a || b", "Calc cs cs || c", "Call step 1", "IfVar cs != 0 walkOn", "MEnd", "#", "Module walkBack", "# run each stepper forward", "# until end switch is released (= 1)", "Tag walkBack", "FromIn FTD 1 D a", "Calc a a bitXor 1", "FromIn FTD 2 D b", "Calc b b bitXor 1", "FromIn FTD 3 D c", "Calc c c bitXor 1", "Calc cs a || b", "Calc cs cs || c", "Call step 1", "IfVar cs != 0 walkBack", "MEnd"] -------------------------------------------------------------------------------- /packages/startIDE/projects/servoTest: -------------------------------------------------------------------------------- 1 | ["# servoTest v1.2", "Init pwm_dflt 355", "Init pwm_min 200", "Init pwm_mid 355", "Init pwm_max 510", "Init pwm pwm_dflt", "# ", "Canvas load servoTest.png", "Canvas show", "Tag TOP", "Servo SRD S00 pwm", "Call disp_val 1", "Call keyrelease 1", "WaitForTouch", "Call keypress 1", "WaitForRelease", "#", "IfTouchArea 157 7 224 37 BTN_OK", "IfTouchArea 84 87 153 157 BTN_STOP", "#", "IfTouchArea 12 47 82 77 BTN_F_REV", "IfTouchArea 12 87 82 117 BTN_REV", "IfTouchArea 157 47 224 77 BTN_F_FWD", "IfTouchArea 157 87 224 117 BTN_FWD", "#", "IfTouchArea 12 127 82 157 BTN_MEM_MIN", "IfTouchArea 157 127 224 157 BTN_MEM_MAX", "#", "IfTouchArea 12 202 82 232 BTN_MIN", "IfTouchArea 84 202 153 232 BTN_CENTER", "IfTouchArea 157 202 224 232 BTN_MAX", "#", "Jump TOP", "#", "#", "Tag BTN_OK", "QueryVar pwm_min", "QueryVar pwm_mid", "QueryVar pwm_max", "Stop", "#", "Tag BTN_F_REV", "Calc pwm pwm - 10", "Calc pwm 0 max pwm", "Jump TOP", "#", "Tag BTN_F_FWD", "Calc pwm pwm + 10", "Calc pwm 995 min pwm", "Jump TOP", "#", "Tag BTN_REV", "Calc pwm pwm - 1", "Calc pwm 0 max pwm", "Jump TOP", "#", "Tag BTN_FWD", "Calc pwm pwm + 1", "Calc pwm 995 min pwm", "Jump TOP", "#", "Tag BTN_STOP", "Init pwm_min 200", "Init pwm_mid pwm_dflt", "Init pwm_max 510", "Init pwm pwm_dflt", "Jump TOP", "#", "Tag BTN_MEM_MIN", "Init pwm_min pwm", "Calc pwm_mid pwm_min + pwm_max", "Calc pwm_mid pwm_mid / 2", "Jump TOP", "#", "Tag BTN_MEM_MAX", "Init pwm_max pwm", "Calc pwm_mid pwm_min + pwm_max", "Calc pwm_mid pwm_mid / 2", "Jump TOP", "#", "Tag BTN_MIN", "Init pwm pwm_min", "Jump TOP", "#", "Tag BTN_CENTER", "Init pwm pwm_mid", "Jump TOP", "#", "Tag BTN_MAX", "Init pwm pwm_max", "Jump TOP", "#", "Module disp_val", "Color pen 42 42 42", "Pen move 86 47", "Pen boxTo 154 80", "Pen move 13 165", "Pen boxTo 81 198", "Pen move 88 165", "Pen boxTo 154 198", "Pen move 161 165", "Pen boxTo 227 198", "Color pen 255 128 0", "VarToText Courier 20 pwm", "Pen text 98 74", "VarToText Courier 20 pwm_min", "Pen text 23 192", "VarToText Courier 20 pwm_mid", "Pen text 98 192", "VarToText Courier 20 pwm_max", "Pen text 171 192", "Canvas update", "MEnd", "# ", "Module keypress", "Pen move 2 2", "Color pen 0 200 0", "Pen discTo 20 20", "Canvas update", "MEnd", "Module keyrelease", "Pen move 2 2", "Color pen 64 64 0", "Pen discTo 20 20", "Canvas update", "MEnd"] -------------------------------------------------------------------------------- /packages/startIDE/projects/stepper: -------------------------------------------------------------------------------- 1 | ["# new", "Init s1state 0", "Init s1dir 1", "Call stepper1 500", "#", "#", "Module stepper1", "IfVar s1dir == 0 a", "Calc s1state s1state - 2", "Tag a", "Calc s1state s1state + 1", "IfVar s1state == 2 step2", "IfVar s1state == 3 step3", "IfVar s1state == 4 step4", "IfVar s1state == 0 step4", "Init s1state 1", "Motor FTD 2 s 0", "Motor FTD 1 l 512", "Jump s1ende", "Tag step2", "Motor FTD 1 s 0", "Motor FTD 2 r 512", "Jump s1ende", "Tag step3", "Motor FTD 2 s 0", "Motor FTD 1 r 512", "Jump s1ende", "Tag step4", "Init s1state 4", "Motor FTD 1 s 0", "Motor FTD 2 l 512", "Tag s1ende", "Delay 2", "MEnd"] -------------------------------------------------------------------------------- /packages/startIDE/startide_de.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ftCommunity/ftcommunity-apps/be42eb53829c131b5a2b64a465b21fc157ab9979/packages/startIDE/startide_de.qm --------------------------------------------------------------------------------