CodilX 0 Posted October 19, 2012 Share Posted October 19, 2012 Hi there, I'm trying to create a sort of CLI for the LaunchPad via Cygwin on Windows. Basically I'm trying to create different "programs" on the LaunchPad, and display the results on a LCD I have coming. For the time being, for development purposes I'm just using the serial com to emulate the output. My goal is to have a few programs, such as display number of new emails, show current PC down/up speed, PC sensor readings etc, and being able to navigate through them via the input button on the LaunchPad. To do so, I need serial input/output. I need the LaunchPad to send a request to my PC, such as, receive number of new emails, get the output and display it on the LCD (serial com for now). It almost works perfectly, just I have an issue with the characters. Sometime the characters get messed up, and the commands are thus broken. Is this due to actual ascii characters being sent? Maybe I have to reset the onboard memory to free space for the receiver? Here's my code for testing the input and displaying what was received. I guess it has something to do with the input being sent/received, as if I add a check if(Input == "some command") { Serial.println("This command was received!"); } It doesn't always display this message, as you can see by the output - it sometimes receives gibberish. String Input = ""; // string to hold input void setup() { Serial.begin(9600); Serial.println("Enter Input"); } void loop() { while (Serial.available() > 0) { int Receiver = Serial.read(); Input += (char)Receiver; if (Receiver == '\n') { Input.replace("\n", ""); Serial.println(Input); Input = ""; } } } I then send a series of test strings - test; lorem; ipsum; qwerty; launchpad - each of them 3 times. My output is attached below. Also a quick question, how do I enable sending characters through Putty? I can view the output just fine, but I can't enter anything. Thanks. Quote Link to post Share on other sites
VirtualEnder 3 Posted October 19, 2012 Share Posted October 19, 2012 I recommend TeraTerm as a simple serial terminal. Very flexible and easy. Quote Link to post Share on other sites
olivluca 12 Posted October 19, 2012 Share Posted October 19, 2012 It's not the serial that's broken but the String class that has some problems with reallocating memory: viewtopic.php?f=38&t=3296 CodilX 1 Quote Link to post Share on other sites
CodilX 0 Posted October 19, 2012 Author Share Posted October 19, 2012 Thank you. So for the time being I guess there is now way to fix this, and just wait for the update? Also, if anyone could help me get PuTTY working with the LaunchPad would be awesome. I've seen a bunch of videos of people being able to do so, but they're using CCS to write and compile their programs, so is this issue of not being able to send commands to the LaunchPad in any way related to it being compiled by Energia? I've just checked, that commands sent from PuTTY actually get received, but in a weird way. If I enter a string in the PuTTY terminal, press enter, close PuTTY, reopen the Energias COM tool and send something, I will receive what was written in PuTTY along with the newly inputted text. To me this seems like a communication error? If I open Energias COM tool, write something and send it, then close the tool, reopen and do the same thing - I never get the previous lines submitted. So as far as I understand a newline isn't sent, or isn't correctly interpreted by the LaunchPad? Quote Link to post Share on other sites
energia 485 Posted October 19, 2012 Share Posted October 19, 2012 The minimal libc that comes with mspgcc does not implement realloc. In the current release there is a bug in which realloc was erroneously replaced by malloc. I have put in a quick and dirty fix for this to work around this until libc gets realloc implemented. The patch is here: https://github.com/energia/Energia/comm ... 0c977c680f --- a/hardware/msp430/cores/msp430/WString.cpp +++ b/hardware/msp430/cores/msp430/WString.cpp @@ -140,6 +140,7 @@ unsigned char String::changeBuffer(unsigned int maxStrLen) char *newbuffer = (char *)malloc(maxStrLen + 1); if (newbuffer) { + strncpy(newbuffer, buffer, len); free(buffer); buffer = newbuffer; capacity = maxStrLen; In the file hardware/msp430/cores/msp430/WString.cpp around line 143 just under "if (newbuffer) {" add "strncpy(newbuffer, buffer, len);" Robert CodilX 1 Quote Link to post Share on other sites
CodilX 0 Posted October 19, 2012 Author Share Posted October 19, 2012 Thank you! Now if I could only get PuTTY working with the LaunchPad would be awesome.. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.