ev3dev / ev3dev-lang-python

Pure python bindings for ev3dev
MIT License
428 stars 145 forks source link

Console() rows/columns, echo, and cursor properties; doc corrections #654

Closed bpmerkel closed 5 years ago

bpmerkel commented 5 years ago

Enhanced Console() to add rows, columns, and echo properties; convert the show_cursor method to a cursor property; and corrected the docs to reflect the changes, as well as the main README to properly render the link to the official API doc site. Also added a console_menu utility to demonstrate the Console(), Led() and Button() classes to create a fast mission-switcher for FIRST LEGO League teams to save precious time between missions (without having to hunt and peck at Brickman to find their next file to run).

WasabiFan commented 5 years ago

In #655 @dlech suggested we publish a new release this week; I'd love to get these changes in over the next few days to include. And since I haven't gotten to actually test the Console I'll get to do that too now that I'll be back home. I can help out with some of the changes here, but others are questions which I wasn't sure of; let me know how I can help.

WasabiFan commented 5 years ago

Referring to this thread: https://github.com/ev3dev/ev3dev-lang-python/pull/654#discussion_r314122966

After thinking about it some more, I think the new menu code should live either in the demo repo or in the docs. We could make an importable Menu class and provide it built-in to the library, which I think would be a good idea (for a future PR). But given that the console_menu.py in this PR requires code modification before use in one's own project, I don't think it is a good fit for the utils/ dir in this repo as it stands.

bpmerkel commented 5 years ago

Referring to this thread: #654 (comment)

After thinking about it some more, I think the new menu code should live either in the demo repo or in the docs. We could make an importable Menu class and provide it built-in to the library, which I think would be a good idea (for a future PR). But given that the console_menu.py in this PR requires code modification before use in one's own project, I don't think it is a good fit for the utils/ dir in this repo as it stands.

I concur. Exclude it from the PR. I can submit a different PR as a new class in ev3dev2, or for the demo repo... I have other demo code too with a new Robot() class wrapper to encapsulate a robot's specific ports, speeds, wheel sizes, with useful properties meant to serve as singleton references. I also have a more advanced drive module with Gyro proportional turns, Gyro-based moves, and moves with ramp-up/ramp-down to avoid annoying robot jerk from torque/momentum.

WasabiFan commented 5 years ago

Thanks! Those other items you mentioned also sound great -- I'd love to have real tested control capabilities and demos. Right now we don't get a lot of feedback on how our, e.g., driving primitives perform in real-world use cases -- your contributions and comments validate that at least most of it is doing the right thing.