Message |
|
Sorry I haven't tested the new version again yet. I was having other issues with my program and I want to get it right before I accuse the library. All I know is it kind of worked and after upgrading it didn't work at all anymore. I've fixed some bugs with my software so I'm going to try again here soon.
|
|
|
Thanks for the info. I reverted a while ago so I could keep working on my project. I'll try to make a copy of my progress and try the new libraries again in the morning.
|
|
|
So this is what seems to correspond to what you are looking for. If I type something after a 1 it updates. If I delete the 1 and then just type a 1 I have to type something else after it, a "0" in this case to get it to show up.
So think of it like this:
1. I have an item named "1Light 1".
2. I backspace the first "1" so it looks like "Light 1".
3. I type "1" and only the entry field updates everything else still says "Light 1".
4. I type "0" after the "1" and everything updates and says "10Light 1".
5. I backspace the "0" and only the field updates to "1Light 1". Everything else looks like "10Light 1".
6. I backspace the "1" and everything updates to "Light 1".
7. I write "1" once more to try to get to my original "1Light 1" but it only shows up in the field everything else says "Light 1"
2019-05-08 18:29:44 WARNING javafx.fxml.FXMLLoader$ValueElement processValue Loading FXML document with JavaFX API of version 11.0.1 by JavaFX runtime of version 11
2019-05-08 18:29:44 INFO com.thecoderscorner.menu.editorui.generator.plugin.DirectoryCodePluginManager lambda$loadPlugins$2 Found image file META-INF/tcmenu/adagfx-color.jpg
2019-05-08 18:29:44 INFO com.thecoderscorner.menu.editorui.generator.plugin.DirectoryCodePluginManager lambda$loadPlugins$2 Image loaded, Width: 250, height: 151
2019-05-08 18:29:44 INFO com.thecoderscorner.menu.editorui.generator.plugin.DirectoryCodePluginManager lambda$loadPlugins$2 Found image file META-INF/tcmenu/ethernet-shield.jpg
2019-05-08 18:29:44 INFO com.thecoderscorner.menu.editorui.generator.plugin.DirectoryCodePluginManager lambda$loadPlugins$2 Image loaded, Width: 200, height: 142
2019-05-08 18:29:44 INFO com.thecoderscorner.menu.editorui.generator.plugin.DirectoryCodePluginManager lambda$loadPlugins$2 Found image file META-INF/tcmenu/lcd-display.jpg
2019-05-08 18:29:44 INFO com.thecoderscorner.menu.editorui.generator.plugin.DirectoryCodePluginManager lambda$loadPlugins$2 Image loaded, Width: 200, height: 85
2019-05-08 18:29:44 INFO com.thecoderscorner.menu.editorui.generator.plugin.DirectoryCodePluginManager lambda$loadPlugins$2 Found image file META-INF/tcmenu/no-display.png
2019-05-08 18:29:44 INFO com.thecoderscorner.menu.editorui.generator.plugin.DirectoryCodePluginManager lambda$loadPlugins$2 Image loaded, Width: 247, height: 150
2019-05-08 18:29:44 INFO com.thecoderscorner.menu.editorui.generator.plugin.DirectoryCodePluginManager lambda$loadPlugins$2 Found image file META-INF/tcmenu/rotary-encoder.jpg
2019-05-08 18:29:44 INFO com.thecoderscorner.menu.editorui.generator.plugin.DirectoryCodePluginManager lambda$loadPlugins$2 Image loaded, Width: 180, height: 140
2019-05-08 18:29:44 INFO com.thecoderscorner.menu.editorui.generator.plugin.DirectoryCodePluginManager lambda$loadPlugins$2 Found image file META-INF/tcmenu/serial-connection.jpg
2019-05-08 18:29:44 INFO com.thecoderscorner.menu.editorui.generator.plugin.DirectoryCodePluginManager lambda$loadPlugins$2 Image loaded, Width: 200, height: 152
2019-05-08 18:29:44 INFO com.thecoderscorner.menu.editorui.generator.plugin.DirectoryCodePluginManager lambda$loadPlugins$2 Found configuration file META-INF/tcmenu/tcmenu-plugin.json
2019-05-08 18:29:44 INFO com.thecoderscorner.menu.editorui.generator.plugin.DirectoryCodePluginManager parsePluginConfig Loaded configuration CodePluginConfig{moduleName='com.thecoderscorner.tcmenu.plugin.baseio', name='General IO CodeGen Plugin', version='1.3.0', license='Apache 2.0', licenseUrl='https://www.apache.org/licenses/LICENSE-2.0', plugins=[CodePluginItem{id='6dd87e7d-e751-4912-a70d-91793b1d3d87', description='Control menu with rotary encoder & button', extendedDescription='Hardware rotary encoder with acceleration that needs no external components in most cases. It can either be connected direct to Arduino or on an i2c expander (8574, 23017). With long wire runs may need stronger pull up resistors near the device.', applicability=[ARDUINO, ARDUINO32], subsystem=INPUT, imageFileName='rotary-encoder.jpg', codeCreatorClass='com.thecoderscorner.tcmenu.plugins.baseinput.RotaryEncoderInputCreator'}, CodePluginItem{id='2a3ae3ba-05f4-4c9c-aad3-3ddc88df9049', description='Control menu with Up / Down / OK buttons', extendedDescription='Switches that represent up, down and OK controlled by switches library. These are fully debounced either pull up or pull down switches and can either be connected direct to Arduino or via an i2c expander.', applicability=[ARDUINO, ARDUINO32], subsystem=INPUT, imageFileName='up-down-encoder.jpg', codeCreatorClass='com.thecoderscorner.tcmenu.plugins.baseinput.UpDownOkSwitchInputCreator'}, CodePluginItem{id='89cd7f70-0457-4884-97c2-0db904ccb0ba', description='No input or custom input module', extendedDescription='Use this option when you either don't want a local input method, or you are providing a custom one.', applicability=[ARDUINO, ARDUINO32], subsystem=INPUT, imageFileName='no-display.png', codeCreatorClass='com.thecoderscorner.tcmenu.plugins.baseinput.NoInputModeCreator'}, CodePluginItem{id='61f370f4-0294-41cf-8988-1458f242914a', description='LiquidCrystalIO display direct or other i2c', extendedDescription='LiquidCrystal based display driver that can be configured to work with any pin arrangement. Just set the EN, RS, Data pins at a minimum. It also has optional inbuilt backlight and PWM contrast support.', applicability=[ARDUINO, ARDUINO32], subsystem=DISPLAY, imageFileName='lcd-display.jpg', codeCreatorClass='com.thecoderscorner.tcmenu.plugins.basedisplay.LiquidCrystalDisplayCreator'}, CodePluginItem{id='d4c84106-fa87-4024-b91e-053e17a52b8f', description='LiquidCrystalIO for commonly available I2C backpacks', extendedDescription='LiquidCrystal based display driver that is setup out of the box to work with the two main choices of i2c backpack. Just choose the pin arrangement for your backpack. If your display has an unusual arrangement use the general version', applicability=[ARDUINO, ARDUINO32], subsystem=DISPLAY, imageFileName='lcd-display.jpg', codeCreatorClass='com.thecoderscorner.tcmenu.plugins.basedisplay.I2cLiquidCrystalDisplayCreator'}, CodePluginItem{id='cdd0be35-f6ff-40ae-86fc-f9d04a6e8679', description='No display or custom display module', extendedDescription='This is for cases where either no local display, or a custom display is going to be used. If you are using a custom display, just make sure the renderer is created and registered during setup.', applicability=[ARDUINO, ARDUINO32], subsystem=DISPLAY, imageFileName='no-display.png', codeCreatorClass='com.thecoderscorner.tcmenu.plugins.basedisplay.DoNotDefineDisplayCreator'}, CodePluginItem{id='7c486068-9879-459f-89ee-9522366524a3', description='Adafruit GFX based display', extendedDescription='Render using the AdafruitGFX library. Set the graphics variable, rotation and screen size. This version works with most displays and is very configurable. You can easily override the drawing configuration.', applicability=[ARDUINO, ARDUINO32], subsystem=DISPLAY, imageFileName='adagfx-color.jpg', codeCreatorClass='com.thecoderscorner.tcmenu.plugins.adagfx.ColorAdaGfxDisplayCreator'}, CodePluginItem{id='2c101fec-1f7d-4ff3-8d2b-992ad41e7fcb', description='No Remote Control', extendedDescription='Use this option when you don't want any remote control capabilities', applicability=[ARDUINO, ARDUINO32], subsystem=REMOTE, imageFileName='no-display.png', codeCreatorClass='com.thecoderscorner.tcmenu.plugins.remote.NoRemoteCapability'}, CodePluginItem{id='1e38dc42-672d-4c1c-a393-2c7632bf6c5c', description='Serial remote control (Rs232 / USB / Bluetooth)', extendedDescription='Use this option to be able to control the menu over many kinds of serial link, for example RS232, USBSerial, Bluetooth. The full menu structure will be available to the remote using either the protocol or the API.', applicability=[ARDUINO, ARDUINO32], subsystem=REMOTE, imageFileName='serial-connection.jpg', codeCreatorClass='com.thecoderscorner.tcmenu.plugins.remote.Rs232RemoteCapabilitiesCreator'}, CodePluginItem{id='0877131c-e03e-426b-8eaf-228e01f5e7f1', description='Ethernet control of your menu using popular libraries', extendedDescription='Use this option to be able to control the menu over many kinds of ethernet sheilds and devices. The full menu structure will be available to the remote using either the protocol or the API.', applicability=[ARDUINO, ARDUINO32], subsystem=REMOTE, imageFileName='ethernet-shield.jpg', codeCreatorClass='com.thecoderscorner.tcmenu.plugins.remote.EthernetRemoteCapabilitiesCreator'}]}
2019-05-08 18:29:44 INFO com.thecoderscorner.menu.editorui.generator.plugin.DirectoryCodePluginManager lambda$loadPlugins$2 Found image file META-INF/tcmenu/up-down-encoder.jpg
2019-05-08 18:29:44 INFO com.thecoderscorner.menu.editorui.generator.plugin.DirectoryCodePluginManager lambda$loadPlugins$2 Image loaded, Width: 217, height: 140
2019-05-08 18:29:44 INFO com.thecoderscorner.menu.editorui.generator.plugin.DirectoryCodePluginManager lambda$loadPlugins$2 Found image file META-INF/tcmenu/DfRobotShield.jpg
2019-05-08 18:29:44 INFO com.thecoderscorner.menu.editorui.generator.plugin.DirectoryCodePluginManager lambda$loadPlugins$2 Image loaded, Width: 211, height: 158
2019-05-08 18:29:44 INFO com.thecoderscorner.menu.editorui.generator.plugin.DirectoryCodePluginManager lambda$loadPlugins$2 Found configuration file META-INF/tcmenu/tcmenu-plugin.json
2019-05-08 18:29:44 INFO com.thecoderscorner.menu.editorui.generator.plugin.DirectoryCodePluginManager parsePluginConfig Loaded configuration CodePluginConfig{moduleName='com.thecoderscorner.tcmenu.plugin.dfrobot', name='DfRobot CodeGen Plugin', version='1.3.0', license='Apache 2.0', licenseUrl='https://www.apache.org/licenses/LICENSE-2.0', plugins=[CodePluginItem{id='7daa6a81-dd09-422e-b83c-bda5045abaef', description='Input from DfRobot Shield', extendedDescription='Uses the DfRobot shield switches to control the menu. These switches are connected to analog input A0 and will be managed by switches.', applicability=[ARDUINO, ARDUINO32], subsystem=INPUT, imageFileName='DfRobotShield.jpg', codeCreatorClass='com.thecoderscorner.tcmenu.plugins.dfrobot.DfRobotAnalogInputCreator'}, CodePluginItem{id='bcd5fe34-9e9f-4fcb-9edf-f4e3caca0674', description='Output to DfRobot Shield LCD', extendedDescription='Uses the LCD panel on the DfRobot shield via the LiquidCrystalIO library without needing to specify any configuration at all. This provides a menu item per line menu view supporting submenus.', applicability=[ARDUINO, ARDUINO32], subsystem=DISPLAY, imageFileName='DfRobotShield.jpg', codeCreatorClass='com.thecoderscorner.tcmenu.plugins.dfrobot.DfRobotLcdCreator'}]}
2019-05-08 18:29:45 INFO com.thecoderscorner.menu.editorui.uimodel.CurrentProjectEditorUIImpl createPanelForMenuItem creating new panel for menu item editing 0
2019-05-08 18:29:45 INFO com.thecoderscorner.menu.editorui.generator.arduino.ArduinoLibraryInstaller getArduinoDirectory Looking for Árduino directory
2019-05-08 18:29:45 INFO com.thecoderscorner.menu.editorui.generator.arduino.ArduinoLibraryInstaller getArduinoDirectory looking for libraries
2019-05-08 18:29:46 INFO com.thecoderscorner.menu.editorui.uimodel.CurrentProjectEditorUIImpl createPanelForMenuItem creating new panel for menu item editing 0
2019-05-08 18:29:48 INFO com.thecoderscorner.menu.editorui.project.FileBasedProjectPersistor open Open file C:\Users\Daniel\Documents\Arduino\Verdure_ESP32_Menu\Verdure_ESP32_Menu.emf
2019-05-08 18:29:48 INFO com.thecoderscorner.menu.editorui.uimodel.CurrentProjectEditorUIImpl createPanelForMenuItem creating new panel for menu item editing 0
2019-05-08 18:29:50 INFO com.thecoderscorner.menu.editorui.uimodel.CurrentProjectEditorUIImpl createPanelForMenuItem creating new panel for menu item editing 1
2019-05-08 18:29:50 INFO com.thecoderscorner.menu.editorui.uimodel.CurrentProjectEditorUIImpl lambda$createPanelForMenuItem$1 created panel UIBooleanMenuItem
|
|
|
Using the 1.3.1 designer with the new libraries breaks my project on the esp32. It doesn't seem to matter if I build for SAMD or ESP8266. I'm working on getting a log now.
|
|
|
This is installed in windows 10. Where should I look to find the logs and what will they be named?
Also maybe there is a conflict between the java versions of the controller and the designer programs. I can only use one at a time and have to reinstall if I want to use the other. Each time it asks me to update my java to a different version and then the other program won't work. I installed designer first and when I installed controller I could no longer open designer so I reinstalled designer and I could no longer open controller. Maybe that broke something.
|
|
|
Sometimes when changing a name after a menu has been created it doesn't update in the preview or tree view the way you would expect. Let's say I make a menu called display Items and I forget to capitalize the "d" in display, if I go back and edit it to a capital "D" sometimes the tree view and preview show "isplay Menu" when the name in the form for the new item shows "Display Menu". Weird bug. Can't get it to replicate all of the time and sometimes I can fix it by just deleting the whole entry box and retyping the whole name.
Okay here is a very specific example: If you have the number 1 in your menu name it seems you have to edit past the number in order for the changes to reflect. There are other odd cases too but I'm having a hard time replicating them reliably.
|
|
|
Can't wait to use it. Especially the back functionality not going to the top of the tree and holding select only firing callback once. It would be nice to have the eeprom settings working on ESP32 as my implementation is buggy at the moment. I run multiple loops using FreeRTOS and things like SERIAL and EEPROM don't seem to like it. Calling those items in the menu callback functions is hit or miss. If I run attempt a Serial.print inside a callback it usually locks the callback up. or if there is a for loop inside of a callback and I want to check the iteration with a Serial.print the loop breaks and just iterates forever hanging up the program. Still not sure if that is my fault for using tasks but hard to debug without serial functionality. Probably a topic for another thread.
|
|
|
Ioabstraction for scheduling. Good to know.
|
|
|
Yeah I couldn't remember the name of it at the time. Having different button press functionality for that action menu item would be amazing. Also since the boolean menu type can be used in this way it would also benefit from the ability to choose how the select button triggers the callback. Imagine a boolean menu where you can enter the two string options and choose how the select button works. If you leave the two string options the same and the callback fires on change then you don't even need the action type anymore.
I know features can get out of control pretty quickly as there are so many things you can do with an interface like this and maybe it's not as intuitive for people who are building a menu to use the boolean type as an action type but that's how I saw it right off the bat.
Thanks for taking my input and running with it. I'm hoping to upgrade to the new version when it comes out as it will greatly improve the usability of the system. My menu has 130 items in it since I'm setting timers for a bunch of devices. Timer type anyone? lol
|
|
|
Jog is terminology used in VFD or variable frequency drives in factory automation systems and is typically assigned to a button that runs the motor in one direction when pressed and turns the motor off when not pressed. In a motor jog situation you don't want to have to press a button twice as you have less control. I figured if the only button available is on the rotary encoder and you have an exclusive call back menu item maybe there would be an option for button push action type. Something like execute on press or execute on release or extra callbacks for multi-click and even callbacks that run only while held for the jog situation. Doing it that way you can create a menu system more people are comfortable with. TIf they see a shiny button, they expect a jog option, they press and let go the and motor stays on, they panic.
Just so you know, I'm not trying to sound demanding. I feel like I'm the only one on here suggesting things at the moment. The current menu system will work with my project and I'm just assigning jog to other buttons instead of the menu. Just making sure I'm not missing options that are already in the library since I did see a held variable in there somewhere but it didn't look like it was being used.
|
|
|
I only use 2 layers at max if you don't count menu items so that will work perfectly.
|
|
|
Is there a jog menu item or at least a callback for if the select button is held vs the single fire option? Currently holding down select causes a boolean or callback menu item to toggle on and then toggle off again about half a second later. This is using the rotary encoder setup with the button built into it. This is not really an issue as long as you press the button and let go pretty quickly.
|
|
|
Okay, just making sure I didn't screw something up. My screen space is limited on a 16x2 display so I changed the forward and back indicators in the library to little arrows. "?" "?"
|
|
|
The back menu item in sub menus currently takes me back to the top of the entire tree instead of the top of the parent sub menu. Is this something unique to my setup or is it a feature that doesn't exist yet?
|
|
|
Is there a way to use the setBoolean modifier without firing off the call back function? Would be a nice option to have in some custom cases. Let's say you want to have another system directly control an I/O point and you want to set your menu to reflect the change. In that case it would be nice to be able to update the menu item without the call back going off.
|
|
|
|
|