SDI-12 Library and Software Serial Library Conflict

Hi,

I am working on a environmental data-logger and GPRS transmitter. I recently switched sensors to a SDI-12 pressure transducer and have run into a problem. I’ve been using the SDI-12 library developed by Stroud Research Center (https://github.com/StroudCenter/Arduino-SDI-12) to interface with the sensor and it works great. The problem happens when I try to use the built-in Software Serial library which I need to interface with my GPRS modem (sim900). When I try to upload my code (below) I get the following error.

ArduinoSDI12master\SDI12.cpp.o: In function `__vector_5':
C:\Users\Jeff Sadler\Documents\Arduino\libraries\ArduinoSDI12master/SDI12.cpp:798: multiple definition of `__vector_5'
SoftwareSerial\SoftwareSerial.cpp.o:C:\Program Files (x86)\Arduino\libraries\SoftwareSerial/SoftwareSerial.cpp:319: first defined here
ArduinoSDI12master\SDI12.cpp.o: In function `__vector_4':
C:\Users\Jeff Sadler\Documents\Arduino\libraries\ArduinoSDI12master/SDI12.cpp:794: multiple definition of `__vector_4'
SoftwareSerial\SoftwareSerial.cpp.o:C:\Program Files (x86)\Arduino\libraries\SoftwareSerial/SoftwareSerial.cpp:312: first defined here
ArduinoSDI12master\SDI12.cpp.o: In function `__vector_3':
C:\Users\Jeff Sadler\Documents\Arduino\libraries\ArduinoSDI12master/SDI12.cpp:790: multiple definition of `__vector_3'
SoftwareSerial\SoftwareSerial.cpp.o:C:\Program Files (x86)\Arduino\libraries\SoftwareSerial/SoftwareSerial.cpp:305: first defined here

Does anyone have any suggestions for righting this? Any similar experiences?

Here is a simplified version of my code:

/*Note:This code is used for Arduino 1.0 or later*/
//serial communication to Sim900
#include <SoftwareSerial.h>
SoftwareSerial Sim900Serial(2, 3);

#include <SDI12.h>
#define DATAPIN 9         // change to the proper pin
SDI12 mySDI12(DATAPIN); 




void setup()
{
  Sim900Serial.begin(115200);               // the GPRS baud rate  
  delay(500);
  Sim900Serial.println("AT+IPR=19200");
  delay(500);
  Sim900Serial.begin(19200);               // the GPRS baud rate   
  delay(1000);
  Serial.begin(9600);               // the Hardware serial rate 
  pinMode(10, OUTPUT);                 //set pinmode 10 as output for SD card
  
  mySDI12.begin();
 
  Serial.println("Enter 'c' for clock");
  Serial.println("Enter 'm' for sensor measurement");
 
}
void loop()
{   


  if (Serial.available())
    switch(Serial.read())
   {
     
      case 'c':
      Clock();
      break;
      case 'm':
      sensors();
      break;
 }

}

void Clock()
{
  
  Sim900Serial.println("AT");
  delay(100);
  ShowSerialData();
  Sim900Serial.println("AT+CCLK?");
  delay(100);
  ShowSerialData();
}
  

    
void ShowSerialData()
{
  while(Sim900Serial.available()!=0)
    Serial.write(Sim900Serial.read());
}


void sensors(){
  mySDI12.sendCommand("0M7!"); 
  delay(300);                     // wait a while for a response
  String waitStr = bufferToStr();
  String waitTrim = waitStr.substring(0,3);
  int waitInt = waitTrim.toInt()*1000;
  delay(waitInt); // print again in three seconds
 
  //mySDI12.sendCommand("0D0!"); 
  delay(300);                     // wait a while for a response
  String mStr = bufferToStr();
  
  int comPos = mStr.indexOf(",");
  int comPos1 = mStr.indexOf(",",comPos+1);
  String Var1 = mStr.substring(comPos+1, comPos1);
  
  int comPos2 = mStr.indexOf(",",comPos1+1);
  int comPos3 = mStr.indexOf(",",comPos2+1);
  String Var2 = mStr.substring(comPos2+1, comPos3);
  
  Serial.println(Var1);
  Serial.println(Var2);
}

String bufferToStr(){
  String buffer = "";
  mySDI12.read(); // consume address
  
  while(mySDI12.available()){
    char c = mySDI12.read();
    if(c == '+' || c == '-'){
      buffer += ',';   
      if(c == '-') buffer += '-'; 
    } 
    else {
      buffer += c;  
    }
    delay(100); 
  }
 return(buffer);
}

Thanks in advance!

Hi, do you solve this problem? or can anyone help us?