ANSI Console on

This forum is about you. Feel free to discuss anything is related to embedded and electronics, your awesome projects, your ideas, your announcements, not necessarily related to ChibiOS but to embedded in general. This forum is NOT for support.
Posts: 33
Joined: Tue Nov 05, 2013 12:15 am

ANSI Console on

Postby jafrey » Thu Nov 21, 2013 3:01 pm

Apologies if this is too basic for 'code samples' but it's been a long time since I used C and still in the learning process with Chibi. My development board is a STM32F4Discovery. Hopefully some other beginners can find this useful.

My end goal is to create a ANSI compatible console so that rather than a just a basic 'run command' interface it's more of a 'GUI' (or at least building blocks to do so.

First Milestone: Print the number of the serial port and an incrementing number on ALL serial. I took my Usb<->Serial device and poked around all of the called out pins and, much to my surprise, it worked!

Code: Select all

        // Activates the UART driver 1, PA9(TX) and PA10(RX) are routed to USART1.
        // Activates the UART driver 2, PA2(TX) and PA3(RX) are routed to USART2.
        // Activates the UART driver 3, PB10(TX) and PB11(RX) are routed to USART3.
        // Activates the UART driver 4, PC10(TX) and PC11(RX) are routed to UART4.
        // Activates the UART driver 5, PC12(TX) and PD2(RX) are routed to UART5.
        // Activates the UART driver 6, PC6(TX) and PC7(RX) are routed to USART6.

Code: Select all

while (TRUE) {
                if (SDU1.config->usbp->state == USB_ACTIVE) {
                        chprintf((BaseSequentialStream *)&SDU1, "Serial USB: %d\r\n", i);
                chprintf((BaseSequentialStream *)&SD1, "Serial 1: %d\r\n", i);
                chprintf((BaseSequentialStream *)&SD2, "Serial 2: %d\r\n", i);
                chprintf((BaseSequentialStream *)&SD3, "Serial 3: %d\r\n", i);
                chprintf((BaseSequentialStream *)&SD4, "Serial 4: %d\r\n", i);
                chprintf((BaseSequentialStream *)&SD5, "Serial 5: %d\r\n", i);
                chprintf((BaseSequentialStream *)&SD6, "Serial 6: %d\r\n", i);

Milestone 2: Print out different ANSI escape sequences to change the color, background and font.

Picture of how it appears in 2 different consoles with default settings. Eclipse terminal is on the left (white background), PuTTY is on the right (black background)

User avatar
Site Admin
Posts: 13086
Joined: Wed May 27, 2009 8:48 am
Location: Salerno, Italy
Has thanked: 759 times
Been thanked: 637 times

Re: ANSI Console on

Postby Giovanni » Thu Nov 21, 2013 3:52 pm


You mean creating something like curses in UNIX? ... library%29


Posts: 33
Joined: Tue Nov 05, 2013 12:15 am

Re: ANSI Console on

Postby jafrey » Thu Nov 21, 2013 5:57 pm

Giovanni wrote:You mean creating something like curses in UNIX? ... library%29

Similar. I plan on using chibiOS to create an engine controller. I would like to make a terminal interface similar to this for some of my tuning work: ... XMqQKf_F3U

Posts: 452
Joined: Sat Nov 19, 2011 6:47 pm
Location: Versailles, France
Has thanked: 12 times
Been thanked: 18 times

Re: ANSI Console on

Postby mobyfab » Fri Nov 29, 2013 12:47 am

Really nice, good job! :)

Return to “User Projects”

Who is online

Users browsing this forum: No registered users and 1 guest