Go Down

Topic: SoftwareSerial example not working as expected? (Read 860 times) previous topic - next topic

dieselboris

Oct 11, 2012, 09:30 am Last Edit: Oct 11, 2012, 10:56 am by dieselboris Reason: 1
EDIT: I'm using a arduino Uno SMD version

Hi all,

If i use the sofwareserial example which comes with the arduino distribution (1.0.1 on windows 7, softwareserial version ?? ) the output is not as expected.

Code: [Select]
/*
 Software serial multple serial test

Receives from the hardware serial, sends to software serial.
Receives from software serial, sends to hardware serial.

The circuit:
* RX is digital pin 2 (connect to TX of other device)
* TX is digital pin 3 (connect to RX of other device)

created back in the mists of time
modified 9 Apr 2012
by Tom Igoe
based on Mikal Hart's example

This example code is in the public domain.

*/
#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // RX, TX

void setup()  
{
// Open serial communications and wait for port to open:
 Serial.begin(57600);
  while (!Serial) {
   ; // wait for serial port to connect. Needed for Leonardo only
 }

 
 Serial.println("Goodnight moon!");

 // set the data rate for the SoftwareSerial port
 mySerial.begin(4800);
 mySerial.println("Hello, world?");
}

void loop() // run over and over
{
 if (mySerial.available())
   Serial.write(mySerial.read());
 if (Serial.available())
   mySerial.write(Serial.read());
}


if i input 1 2 3 4 5 6 7 8 9 (seperated) i get this response:

þþÿÿÿÿþþþ

if i change

Code: [Select]

Serial.write(mySerial.read());


to

Code: [Select]

Serial.print(mySerial.read());


the output becomes:

ÿÿÿÿÿÿÿÿÿ

which looks like a timing issue to me...

Anyone experience with this possible bug?

dxw00d

What 'other device' are you connecting to?

dieselboris

a GPRS modem on a breakoutboard from linksprite:

http://www.linksprite.com/product/showproduct.php?id=187&lang=en


AWOL

Quote
if i change

Code:

Serial.write(mySerial.read());


to

Code:

Serial.write(mySerial.read());


I'm not sure I see the difference.
"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.

dieselboris


Nick Gammon

Code: [Select]
SoftwareSerial mySerial(2, 3); // RX, TX

The Leonardo does not seem to support pin change interrupts on those pins, hence software serial won't work on them.

http://arduino.cc/en/Hacking/PinMapping32u4
Please post technical questions on the forum, not by personal message. Thanks!

More info:
http://www.gammon.com.au/electronics

Nick Gammon

In addition to that, I'm not certain that SoftwareSerial has been rewritten to take into account the mappings for the Leonardo. It may have been, it may not.
Please post technical questions on the forum, not by personal message. Thanks!

More info:
http://www.gammon.com.au/electronics

dieselboris


In addition to that, I'm not certain that SoftwareSerial has been rewritten to take into account the mappings for the Leonardo. It may have been, it may not.


Forgot to mention, but i'm on a arduino Uno SMD.

dxw00d

Is your modem configured to repeat whatever it gets sent? If not, what would you expect it to reply when you send it '1 2 3 4 5 6 7 8 9'?

Go Up