I've been reading the documentation and what I've been told, and read, about the SoftwareSerial library is at odds with the documentation page for the constructor.
it only shows two parameters. As I now understand it, there's an optional third parameter, to set inverted logic, which hasn't been mentioned.
A call to SoftwareSerial(rxPin, txPin) creates a new SoftwareSerial object, whose name you need to provide as in the example below.
It seems the SoftwareSerial library is this: http://arduiniana.org/libraries/newsoftserial/
That being the case, the documentation is out of date, and the description of the constructor needs to include this:
“Normal” TTL serial signaling defines a start bit as a transition from “high” to “low” logic. Logical 1 is “high”, 0 is “low”. But some serial devices turn this logic upside down, using what we call “inverted signaling”. As of version 10, NewSoftSerial supports these devices natively with a third parameter in the constructor.
NewSoftSerial myInvertedConn(7, 5, true); // this device uses inverted signaling
NewSoftSerial myGPS(3, 2); // this one doesn't
change all NewSoftSerial references to SoftwareSerial.