I2C library issue

I have this arduino code for Dissolved oxygen sensor via I2C protocol.It is not working with my particle electron.I think i am not able to figure out the correct library to use in place of <Wire.h>…Any suggestions to get this code working?

//**THIS CODE WILL WORK ON ANY ARDUINO**
//This code was written to be easy to understand.
//Modify this code as you see fit.
//This code will output data to the Arduino serial monitor.
//Type commands into the Arduino serial monitor to control the D.O. circuit.

//An Arduino UNO was used to test this code.
//This code was written in the Arduino 1.8.5 IDE
//This code was last tested 1/2018

#include <Wire.h>                //enable I2C.
#define address 97               //default I2C ID number for EZO D.O. Circuit.



char computerdata[20];           //we make a 20 byte character array to hold incoming data from a pc/mac/other.
byte received_from_computer = 0; //we need to know how many characters have been received.
byte code = 0;                   //used to hold the I2C response code.
char DO_data[20];                //we make a 20 byte character array to hold incoming data from the D.O. circuit.
byte in_char = 0;                //used as a 1 byte buffer to store inbound bytes from the D.O. Circuit.
int time_ = 600;                 //used to change the delay needed depending on the command sent to the EZO Class D.O. Circuit.
float DO_float;                  //float var used to hold the float value of the DO.
char *DO;                        //char pointer used in string parsing.
char *sat;                       //char pointer used in string parsing.
float do_float;                  //float var used to hold the float value of the dissolved oxygen.
float sat_float;                 //float var used to hold the float value of the saturation percentage.



void setup()                    //hardware initialization.
{
  Serial.begin(9600);          //enable serial port.
  Wire.begin();                //enable I2C port.
}




void loop() {                   //the main loop.
  byte i = 0;                   //counter used for DO_data array.

  if (Serial.available() > 0) {                                           //if data is holding in the serial buffer
    received_from_computer = Serial.readBytesUntil(13, computerdata, 20); //we read the data sent from the serial monitor(pc/mac/other) until we see a <CR>. We also count how many characters have been received.
    computerdata[received_from_computer] = 0;                             //stop the buffer from transmitting leftovers or garbage.
    computerdata[0] = tolower(computerdata[0]);                           //we make sure the first char in the string is lower case.
    if (computerdata[0] == 'c' || computerdata[0] == 'r')time_ = 600;     //if a command has been sent to calibrate or take a reading we wait 600ms so that the circuit has time to take the reading.
    else time_ = 300;                                                     //if not 300ms will do


    Wire.beginTransmission(address);                                      //call the circuit by its ID number.
    Wire.write(computerdata);                                             //transmit the command that was sent through the serial port.
    Wire.endTransmission();                                               //end the I2C data transmission.

    if (strcmp(computerdata, "sleep") != 0) {  //if the command that has been sent is NOT the sleep command, wait the correct amount of time and request data.
                                               //if it is the sleep command, we do nothing. Issuing a sleep command and then requesting data will wake the D.O. circuit.


    delay(time_);                     //wait the correct amount of time for the circuit to complete its instruction.

    Wire.requestFrom(address, 20, 1); //call the circuit and request 20 bytes (this may be more than we need)
    code = Wire.read();               //the first byte is the response code, we read this separately.

    switch (code) {                   //switch case based on what the response code is.
      case 1:                         //decimal 1.
        Serial.println("Success");    //means the command was successful.
        break;                        //exits the switch case.

      case 2:                         //decimal 2.
        Serial.println("Failed");     //means the command has failed.
        break;                        //exits the switch case.

      case 254:                      //decimal 254.
        Serial.println("Pending");   //means the command has not yet been finished calculating.
        break;                       //exits the switch case.

      case 255:                      //decimal 255.
        Serial.println("No Data");   //means there is no further data to send.
        break;                       //exits the switch case.
    }


    while (Wire.available()) {       //are there bytes to receive.
      in_char = Wire.read();         //receive a byte.
      DO_data[i] = in_char;          //load this byte into our array.
      i += 1;                        //incur the counter for the array element.
      if (in_char == 0) {            //if we see that we have been sent a null command.
        i = 0;                       //reset the counter i to 0.
        Wire.endTransmission();      //end the I2C data transmission.
        break;                       //exit the while loop.
      }
    }

    if (isDigit(DO_data[0])) {
      string_pars();                  //If the first char is a number we know it is a DO reading, lets parse the DO reading
    }
    else {                            //if it’s not a number
      Serial.println(DO_data);        //print the data.
      for (i = 0; i < 20; i++) {      //step through each char
        DO_data[i] = 0;               //set each one to 0 this clears the memory
      }
    }
  }
  }
}

void string_pars() {                  //this function will break up the CSV string into its 2 individual parts, DO and %sat.
  byte flag = 0;                      //this is used to indicate is a “,” was found in the string array
  byte i = 0;                         //counter used for DO_data array.


  for (i = 0; i < 20; i++) {          //Step through each char
    if (DO_data[i] == ',') {          //do we see a ','
      flag = 1;                       //if so we set the var flag to 1 by doing this we can identify if the string being sent from the DO circuit is a CSV string containing tow values
    }
  }

  if (flag != 1) {                    //if we see the there WAS NOT a ‘,’ in the string array
    Serial.print("DO:");              //print the identifier
    Serial.println(DO_data);          //print the reading
  }

  if (flag == 1) {                    //if we see the there was a ‘,’ in the string array
    DO = strtok(DO_data, ",");        //let's pars the string at each comma
    sat = strtok(NULL, ",");          //let's pars the string at each comma
    Serial.print("DO:");              //print the identifier
    Serial.println(DO);               //print the reading
    Serial.print("Sat:");             //print the identifier
    Serial.println(sat);              //print the reading
    flag = 0;                         //reset the flag
  }
                                      
    /*                                //uncomment this section if you want to take the ASCII values and convert them into a floating point number.
    DO_float=atof(DO);
    sat_float=atof(sat);
   */ 
}

you haven't told us what errors you are seeing but you could start with removing this line

I am able to compile and flash the code but i am not getting any output on particle serial monitor, which i am getting using arduino. I have to pass a string ‘R’ in the serial monitor of arduino to read the output from the sensor but it is not possible to pass anything through the particle serial monitor.

If you’re on windows I would maybe try a serial terminal program like TeraTerm, my personal preference is for the “COM Port Toolkit” but its more for talking to things in hex.

However if you are at this time just testing talking to your sensor I would be tempted to just do that for now and then move on to accepting commands from a PC later.

This thread talks about working with this sensor line: