Shop OBEX P1 Docs P2 Docs Learn Events
Can anyone post the audino code for the 2814 GPS Modue — Parallax Forums

Can anyone post the audino code for the 2814 GPS Modue

alexhsiaochungalexhsiaochung Posts: 4
edited 2013-07-24 12:25 in Accessories
I have an old 28146 GPS Module , it only have the sio Pin ,no rx /tx pin ,Can anyone post the audino code for the 2814 GPS Modue

Comments

  • Chris SavageChris Savage Parallax Engineering Posts: 14,406
    edited 2013-07-12 10:24
    Welcome to the forums. While there is no "official" code from Parallax for #28146 on an Arduino, someone on the forums may have written some. This module has been discontinued for some time, however, so I felt compelled to mention that communication in smart mode simply involves sending serially the "!GPS" followed by a command byte as shown in the documentation. Depending on the command a certain number of bytes will be returned which will contain the data requested in the format listed in the documentation for that command.

    You need only be sure your serial pin is set to output when sending the command and the back to input to serially receive the response.
  • SRNSRN Posts: 15
    edited 2013-07-12 12:10
    I have been playing around with the same setup. I can't seem to get anything other than either combinations of 255 and 65535 (sending back all 1's) or just zero for my received data; essentially it seems to be all or nothing. I have tried only using one pin (and switching that pin from input to output and back each time), as well as using an input and output pin and wiring them both to the SIO pin. I have tried sending the commands in as binary as well as hex, but it doesn't seem to be working. If I can figure out how to send one command and receive that data (in any form, I can't even get it to print all of it as a string) I can figure out how to use this in my project. I know that Parallax support personnel aren't necessarily familiar with Arduino, but any help (including ideas of how to use the base C++ programming to do this) would be appreciated.
  • FranklinFranklin Posts: 4,747
    edited 2013-07-12 13:05
    Have you tried this? http://playground.arduino.cc/Tutorials/GPS Otherwise show us your code and how you have things connected.
  • SRNSRN Posts: 15
    edited 2013-07-12 13:29
    The Playground code is working for regular mode but won't run my other program (I opened a different ticket for that issue). I was looking at Smart mode as an alternative way to get my project done but can't get the commands to comply even with nothing else going on.
  • FranklinFranklin Posts: 4,747
    edited 2013-07-12 14:03
    Otherwise show us your code and how you have things connected.
  • alexhsiaochungalexhsiaochung Posts: 4
    edited 2013-07-12 22:49
    thanks for Franklin , The message given by you is very helpfully for me
  • SRNSRN Posts: 15
    edited 2013-07-14 08:56
    http://forums.parallax.com/showthread.php/149061-Trouble-synchronizing-GPS-with-other-sensors-on-Arduino-UNO I didn't want to post the same issue in multiple threads. Here I was simply wondering if anyone had seen a working sketch for using Smart Mode on an Arduino UNO; I've seen lots of folks asking about it in the forums but nobody has posted anything that works (at least on my system). I don't have access to my equipment until Monday but I have been pulling code from other people who have asked why theirs isn't working when I thought I saw the problem. Anybody who has gotten Smart mode to work, please post the code and I will fit it into my project. Thanks!
  • SRNSRN Posts: 15
    edited 2013-07-15 10:50
    Here is the code I'm currently trying with Smart mode. Please help me figure out what I'm doing wrong; it is printing to the monitor but the GPS is sending back all 1's (leading to "Month: 255" etc.). I've seen people use one digital pin and just write it HIGH and LOW each cycle. Would that be better? (I haven't gotten results either way.)
    #include <SoftwareSerial.h>
    SoftwareSerial GPS = SoftwareSerial(2,3);
    
    int info;
    int tran = 7;
    byte GetValid = 0x00;
    
    void setup()  {
      Serial.begin(9600);
      GPS.begin(4800);
      int runner = 1;
    }
    
    void loop()  {
    digitalWrite(tran, HIGH);
    GPS.print("!GPS");
    GPS.print(0x00, HEX);  //I have sent every feasible command I can think of here
    digitalWrite(tran, LOW);
    
    info = GPS.read();
    info = GPS.read();
    info = GPS.read();
    Serial.println(info, DEC);
    delay(100);}
    
    
  • FranklinFranklin Posts: 4,747
    edited 2013-07-15 18:15
    GPS.print("!GPS");
    GPS.print(0x00, HEX);
    
    Dont you need to terminate that string with a carrige return?
  • SRNSRN Posts: 15
    edited 2013-07-16 06:55
    I do (and forgot about that)... somehow when I was pasting in the code it pasted someone else's that I had modified in one of my attempts. This is what I'm currently trying (complete with carriage return) and still getting 255 for the month, day, and year. I assume I'm doing something wrong with the coding; I've tried wiring the Arduino both with and without the diode (recommended in a few other posts). Again, any and all help is appreciated (and seriously, good catch on my carriage return mind-blank, thanks!).
    #include <SoftwareSerial.h>
    SoftwareSerial GPSsio = SoftwareSerial(2,3);
    byte Month=0;
    byte Day=0;
    byte Year=0;
    int tran = 7;
    byte GetDate = 0x04;
    String Header="!GPS";
    void setup()  {
      pinMode(2, INPUT);
      pinMode(3, OUTPUT);
      Serial.begin(4800);
      GPSsio.begin(4800);
      int runner = 1;
    }
    void loop()  {
    GPSsio.print("!GPS");
    GPSsio.println(0x04,HEX);
     
    
    Month = GPSsio.read();
    Day = GPSsio.read();
    Year = GPSsio.read();
    Serial.print("Month:  ");
    Serial.print(Month);
    Serial.print("  Day:  ");
    Serial.print(Day);
    Serial.print("  Year:  ");
    Serial.println(Year);
    delay(1000);}
     
    
  • FranklinFranklin Posts: 4,747
    edited 2013-07-16 14:12
    Do you have pins 2 and 3 tied together? The GPS module only has one serial pin.
  • Chris SavageChris Savage Parallax Engineering Posts: 14,406
    edited 2013-07-16 16:16
    Franklin wrote: »
    Do you have pins 2 and 3 tied together? The GPS module only has one serial pin.

    If those are dedicated serial pins that won't work unless you can disable the TX pin. The reason is that the TX pin is always driven. So it would conflict with the SIO pin on the GPS when it is in output mode. Your RX pin would only ever see what your TX pin state is, not what is trying to be sent by the GPS module.
  • SRNSRN Posts: 15
    edited 2013-07-17 08:03
    Pins 0 and 1 are the dedicated RX and TX pins, which is why I used the variable digital pins 2 and 3. I didn't specifically set the TX pin high and low at various parts in this sequence (in this iteration; I have on previous attempts but didn't think to here) and that may very well fix it. I'll let you know shortly. Thanks!
  • Chris SavageChris Savage Parallax Engineering Posts: 14,406
    edited 2013-07-17 08:57
    One way you can use dedicated serial pins on a single SIO interface is to connect a 4.7K resistor between TX and RX and then connect your SIO device to the RX pin. In this way when TX is active it can still drive the SIO in input mode. But when the SIO pin goes to output RX should see what is coming from SIO instead of the state of TX. There are two caveats to this...

    On a BASIC Stamp Module this works perfectly since it can only do one thing at a time and has no FIFO buffers. On a microcontroller with FIFO buffers the data sent from TX will always be received into RX and must be discarded or filtered before the response from SIO comes in.

    Also, if the SIO pin has a series resistor it may not work depending on the size as there will be a voltage divider created by the two resistors.
  • SRNSRN Posts: 15
    edited 2013-07-17 11:37
    I hadn't seen a resistor recommended before, but I have seen people saying that you had to hook up a diode in this manner. I have it networked that way right now. I put in commands to make the TX pin go low after transmitting before the RX pin starts, and I started getting something different (but still not quite right). Now I am getting 36/71/80 (Mm/Dd/Yy) for most loops, with the occasional 44/44/44 thrown in. I'm not sure what the significance of these numbers would be. I know the date that shows up on this module on regular mode (with no satellites) is 01/01/03, so that's what I expected to see. Here's what I'm doing now:
    [quote]
    #include <SoftwareSerial.h>
    SoftwareSerial GPSsio = SoftwareSerial(2,3);
    [COLOR=#cc6600]byte[/COLOR] Month=0;
    [COLOR=#cc6600]byte[/COLOR] Day=0;
    [COLOR=#cc6600]byte[/COLOR] Year=0;
    [COLOR=#cc6600]int[/COLOR] tran = 7;
    [COLOR=#cc6600]byte[/COLOR] GetDate = 0x04;
    [COLOR=#cc6600]String[/COLOR] Header=[COLOR=#006699]"!GPS"[/COLOR];
    [COLOR=#cc6600]void[/COLOR] [COLOR=#cc6600][B]setup[/B][/COLOR]()  {
      [COLOR=#cc6600]pinMode[/COLOR](2, [COLOR=#006699]INPUT[/COLOR]);
      [COLOR=#cc6600]pinMode[/COLOR](3, [COLOR=#006699]OUTPUT[/COLOR]);
      [COLOR=#cc6600][B]Serial[/B][/COLOR].[COLOR=#cc6600]begin[/COLOR](4800);
      GPSsio.[COLOR=#cc6600]begin[/COLOR](4800);
      [COLOR=#cc6600]int[/COLOR] runner = 1;
    }
    [COLOR=#cc6600]void[/COLOR] [COLOR=#cc6600][B]loop[/B][/COLOR]()  {
    [COLOR=#cc6600]digitalWrite[/COLOR](3,[COLOR=#006699]HIGH[/COLOR]);
    GPSsio.[COLOR=#cc6600]print[/COLOR](Header);
    GPSsio.[COLOR=#cc6600]write[/COLOR](GetDate); 
    GPSsio.[COLOR=#cc6600]println[/COLOR]([COLOR=#006699]""[/COLOR]);
    [COLOR=#cc6600]digitalWrite[/COLOR](3,[COLOR=#006699]LOW[/COLOR]);
    Month = GPSsio.[COLOR=#cc6600]read[/COLOR]();
    Day = GPSsio.[COLOR=#cc6600]read[/COLOR]();
    Year = GPSsio.[COLOR=#cc6600]read[/COLOR]();
    [COLOR=#cc6600][B]Serial[/B][/COLOR].[COLOR=#cc6600]print[/COLOR]([COLOR=#006699]"Month:  "[/COLOR]);
    [COLOR=#cc6600][B]Serial[/B][/COLOR].[COLOR=#cc6600]print[/COLOR](Month);
    [COLOR=#cc6600][B]Serial[/B][/COLOR].[COLOR=#cc6600]print[/COLOR]([COLOR=#006699]"  Day:  "[/COLOR]);
    [COLOR=#cc6600][B]Serial[/B][/COLOR].[COLOR=#cc6600]print[/COLOR](Day);
    [COLOR=#cc6600][B]Serial[/B][/COLOR].[COLOR=#cc6600]print[/COLOR]([COLOR=#006699]"  Year:  "[/COLOR]);
    [COLOR=#cc6600][B]Serial[/B][/COLOR].[COLOR=#cc6600]println[/COLOR](Year);
    [COLOR=#cc6600]delay[/COLOR](1000);}
    
    [/quote]
    
    
  • FranklinFranklin Posts: 4,747
    edited 2013-07-17 19:05
    As far as I know if you are using pin 2 an 3 for serial you should not be setting them high or low. Doing so may confuse the serial function and at most will be overwritten by the function. You might try making the TX pin an input which should make it HiZ and minimize it's influence.
  • SRNSRN Posts: 15
    edited 2013-07-18 06:18
    Would setting the TX pin as an input still allow it transmit the commands to the module? I assumed that it wouldn't. As far as setting the pins high and low, I haven't done that every time; I just thought that it would help the system to not step on its own toes. I also tried a Serial.flush command, which supposedly waits for the outgoing signal to be clear before going to the next step (something I was sure would fix it.)
  • FranklinFranklin Posts: 4,747
    edited 2013-07-18 14:26
    Would setting the TX pin as an input still allow it transmit the commands to the module?
    No but if you set it to an output, then send and set it to an input before you receive it "might" help. I have not tried this so I am only trying to come up with possibilities.
  • SRNSRN Posts: 15
    edited 2013-07-24 12:25
    What ended up working for me was to put the GPS reading code (from the Playgrounds tutorial) and the sensor program as subroutines and to call them back in. I did still have trouble getting the GPS routine to work correctly due to some kind of timing issue (anything you try to get the processor to do while it's reading GPS data seems to step on its toes a bit); I ended up making a String variable and just appending each bit of information to it as the receiver read it in. (This isn't a problem, as I can parse it later when I put it into Excel, I just added a comma back between each bit of data.) I also ended up having to leave some of my debugging serial.print statements in because it seems making the program actually do something while it's looping gives it time to think. I appreciate everyone's help!

    (This code samples the number of times the beam is broken on an optical sensor for a bug trap and ties it to the GPS data when and where it was sampled. I have it running for four iterations, more if it catches too many bugs. The times will be changed before I put it into the field, but this allows for sampling without hours of waiting.)
    [quote]
    #include <string.h>
    #include <ctype.h>
    #include <[COLOR=#cc6600]SD[/COLOR].h>
    #include <[COLOR=#cc6600]Wire[/COLOR].h>
    [COLOR=#cc6600]int[/COLOR] num=1;
    [COLOR=#cc6600]int[/COLOR] cycles = 4;                      [COLOR=#7e7e7e]// # cycles before checking count (4)[/COLOR]
    #define limit 10                   [COLOR=#7e7e7e]// # bugs that cause another loop[/COLOR]
    [COLOR=#cc6600]int[/COLOR] holdtime = 250;               [COLOR=#7e7e7e]// delay in ms for sensor[/COLOR]
    [COLOR=#cc6600]int[/COLOR] iterations = 20;             [COLOR=#7e7e7e]// # pulses per sensor loop[/COLOR]
    [COLOR=#cc6600]String[/COLOR] values = [COLOR=#006699]""[/COLOR];               [COLOR=#7e7e7e]// what is returned from the function[/COLOR]
    [COLOR=#cc6600]int[/COLOR] ledPin = 13;                  [COLOR=#7e7e7e]// LED test pin[/COLOR]
    [COLOR=#cc6600]int[/COLOR] rxPin = 0;                    [COLOR=#7e7e7e]// RX PIN [/COLOR]
    [COLOR=#cc6600]int[/COLOR] txPin = 1;                    [COLOR=#7e7e7e]// TX TX[/COLOR]
    [COLOR=#cc6600]const[/COLOR] [COLOR=#cc6600]int[/COLOR] chipSelect = 4;
    [COLOR=#cc6600]int[/COLOR] sensorPin4 = A3;
    [COLOR=#cc6600]unsigned[/COLOR] [COLOR=#cc6600]int[/COLOR] x,o,k;  
    [COLOR=#cc6600]int[/COLOR] byteGPS=-1;
    [COLOR=#cc6600]char[/COLOR] linea[300] = [COLOR=#006699]""[/COLOR];
    [COLOR=#cc6600]char[/COLOR] comandoGPR[7] = [COLOR=#006699]"$GPGGA"[/COLOR];
    [COLOR=#cc6600]int[/COLOR] cont=0;
    [COLOR=#cc6600]int[/COLOR] bien=0;
    [COLOR=#cc6600]int[/COLOR] conta=0;
    [COLOR=#cc6600]int[/COLOR] indices[13];
    [COLOR=#cc6600]int[/COLOR] sensorValue4 = 0;
    [COLOR=#cc6600]float[/COLOR] voltage4;
    [COLOR=#cc6600]String[/COLOR] voltageString4 = [COLOR=#006699]"default"[/COLOR];
    [COLOR=#cc6600]void[/COLOR] [COLOR=#cc6600][B]setup[/B][/COLOR]()
    { 
      [COLOR=#cc6600]pinMode[/COLOR](rxPin, [COLOR=#006699]INPUT[/COLOR]);
      [COLOR=#cc6600]pinMode[/COLOR](txPin, [COLOR=#006699]OUTPUT[/COLOR]);
      [COLOR=#cc6600]pinMode[/COLOR](ledPin, [COLOR=#006699]OUTPUT[/COLOR]);
      [COLOR=#cc6600]pinMode[/COLOR](10,[COLOR=#006699]OUTPUT[/COLOR]);
      [COLOR=#cc6600][B]Serial[/B][/COLOR].[COLOR=#cc6600]begin[/COLOR](4800);
      [COLOR=#cc6600]for[/COLOR] ([COLOR=#cc6600]int[/COLOR] i=0;i<300;i++)
      {       [COLOR=#7e7e7e]// Initialize a buffer for received data[/COLOR]
        linea[i]=[COLOR=#006699]' '[/COLOR];
      }  
      [COLOR=#cc6600]if[/COLOR](![COLOR=#cc6600]SD[/COLOR].[COLOR=#cc6600]begin[/COLOR](chipSelect))
      {
        [COLOR=#cc6600][B]Serial[/B][/COLOR].[COLOR=#cc6600]println[/COLOR]([COLOR=#006699]"Card Failed"[/COLOR]);
        [COLOR=#cc6600]return[/COLOR];
      }
      [COLOR=#cc6600]else[/COLOR] 
      {
        [COLOR=#cc6600][B]Serial[/B][/COLOR].[COLOR=#cc6600]println[/COLOR]([COLOR=#006699]"card initialized"[/COLOR]);
      }
      [COLOR=#7e7e7e]// GPS.begin(4800);[/COLOR]
      
    }
    [COLOR=#7e7e7e]//****************************************************************[/COLOR]
    [COLOR=#cc6600]String[/COLOR] GPS(){
      [COLOR=#cc6600]String[/COLOR] placeholder;
      placeholder = [COLOR=#006699]""[/COLOR];    
      [COLOR=#cc6600]for[/COLOR]([COLOR=#cc6600]int[/COLOR] q=0;q<130;q++)
      {
        [COLOR=#cc6600]digitalWrite[/COLOR](ledPin, [COLOR=#006699]HIGH[/COLOR]);
        byteGPS=[COLOR=#cc6600][B]Serial[/B][/COLOR].[COLOR=#cc6600]read[/COLOR]();         [COLOR=#7e7e7e]// Read a byte of the serial port[/COLOR]
        [COLOR=#cc6600]if[/COLOR] (byteGPS == -1) 
        {           [COLOR=#7e7e7e]// See if the port is empty yet[/COLOR]
          [COLOR=#cc6600]delay[/COLOR](100); 
        } 
        [COLOR=#cc6600]else[/COLOR] 
        {
          linea[conta]=byteGPS;        [COLOR=#7e7e7e]// If there is serial port data, it is put in the buffer[/COLOR]
          conta++;     
          [COLOR=#cc6600]if[/COLOR] (byteGPS==13){            [COLOR=#7e7e7e]// If the received byte is = to 13, end of transmission[/COLOR]
            [COLOR=#cc6600]digitalWrite[/COLOR](ledPin, [COLOR=#006699]LOW[/COLOR]); 
            cont=0;
            bien=0;
            [COLOR=#cc6600]for[/COLOR] ([COLOR=#cc6600]int[/COLOR] i=1;i<7;i++){     [COLOR=#7e7e7e]// Verifies if the received command starts with $GPR[/COLOR]
              [COLOR=#cc6600]if[/COLOR] (linea[i]==comandoGPR[i-1]){
                bien++;
              }
            }
            [COLOR=#cc6600]if[/COLOR](bien==6)
            {               [COLOR=#7e7e7e]// If yes, continue and process the data[/COLOR]
              [COLOR=#cc6600]for[/COLOR] ([COLOR=#cc6600]int[/COLOR] i=0;i<300;i++)
              {
                [COLOR=#cc6600]if[/COLOR] (linea[i]==[COLOR=#006699]','[/COLOR])
                {    [COLOR=#7e7e7e]// check for the position of the  "," separator[/COLOR]
                  indices[cont]=i;
                  cont++;
                }
                [COLOR=#cc6600]if[/COLOR] (linea[i]==[COLOR=#006699]'*'[/COLOR])
                {    [COLOR=#7e7e7e]// ... and the "*"[/COLOR]
                  indices[12]=i;
                  cont++;
                }
              }     
              [COLOR=#cc6600]for[/COLOR] ([COLOR=#cc6600]int[/COLOR] i=0;i<14;i++)
              {        
                [COLOR=#cc6600]for[/COLOR] ([COLOR=#cc6600]int[/COLOR] j=indices[i];j<(indices[i+1]-1);j++)
                {           
                  placeholder += linea[j+1];
                }
                placeholder += [COLOR=#006699]",  "[/COLOR];      
              }   
            }
            conta=0;                    [COLOR=#7e7e7e]// Reset the buffer[/COLOR]
            [COLOR=#cc6600]for[/COLOR] ([COLOR=#cc6600]int[/COLOR] i=0;i<300;i++)
            {      
              linea[i]=[COLOR=#006699]' '[/COLOR];             
            }                 
          }
        }
      }
      byteGPS = -1;
      [COLOR=#cc6600]return[/COLOR] placeholder;
    }
    [COLOR=#7e7e7e]//****************************************************************[/COLOR]
    [COLOR=#cc6600]int[/COLOR] Sensorloop()
    { 
      [COLOR=#cc6600]int[/COLOR]  o=0;
      [COLOR=#cc6600]for[/COLOR](x=0; x< iterations; x++)
      {
        [COLOR=#7e7e7e]// read the value from the sensor: [/COLOR]
        sensorValue4 = [COLOR=#cc6600]analogRead[/COLOR](sensorPin4);
        [COLOR=#7e7e7e]// convert to voltage   [/COLOR]
        voltage4 = sensorValue4*(5.0/1023.0);
        [COLOR=#cc6600]delay[/COLOR](holdtime);           
        [COLOR=#cc6600]if[/COLOR](voltage4 > 1.0) 
        {
          o+=1;
        }
      }
      [COLOR=#cc6600]return[/COLOR] o;
    }
    [COLOR=#7e7e7e]//***************************************************************[/COLOR]
    [COLOR=#cc6600]void[/COLOR] Comboloop()
    {
      values = GPS();  
      [COLOR=#cc6600]if[/COLOR](values != [COLOR=#006699]""[/COLOR])         
      {
        [COLOR=#cc6600]File[/COLOR] dataFile = [COLOR=#cc6600]SD[/COLOR].[COLOR=#cc6600]open[/COLOR]([COLOR=#006699]"GPSBUGS.txt"[/COLOR], [COLOR=#006699]FILE_WRITE[/COLOR]);
        [COLOR=#7e7e7e]// if the file is available, write to it:[/COLOR]
        [COLOR=#cc6600]if[/COLOR] (dataFile)
        {
          k = Sensorloop();
          [COLOR=#cc6600][B]Serial[/B][/COLOR].[COLOR=#cc6600]println[/COLOR](values);
          [COLOR=#cc6600][B]Serial[/B][/COLOR].[COLOR=#cc6600]print[/COLOR]([COLOR=#006699]"Counts:  "[/COLOR]);
          [COLOR=#cc6600][B]Serial[/B][/COLOR].[COLOR=#cc6600]println[/COLOR](k);
          dataFile.[COLOR=#cc6600]println[/COLOR](values);
          dataFile.[COLOR=#cc6600]print[/COLOR]([COLOR=#006699]"Counts:  "[/COLOR]);
          dataFile.[COLOR=#cc6600]println[/COLOR](k);
          dataFile.[COLOR=#cc6600]close[/COLOR]();
        }  
        [COLOR=#7e7e7e]// if the file isn't open, pop up an error:[/COLOR]
        [COLOR=#cc6600]else[/COLOR] 
        {
          [COLOR=#cc6600][B]Serial[/B][/COLOR].[COLOR=#cc6600]println[/COLOR]([COLOR=#006699]"Error opening GPSBUGS.txt"[/COLOR]);
        }  
      }
    }
    [COLOR=#7e7e7e]//****************************************************************[/COLOR]
    [COLOR=#cc6600]void[/COLOR] [COLOR=#cc6600][B]loop[/B][/COLOR]()
    {    
     [COLOR=#7e7e7e]// Serial.println("Next...");[/COLOR]
      k=0; 
      values=[COLOR=#006699]""[/COLOR];  
      cycles = 4;
      [COLOR=#cc6600]while[/COLOR](num<=cycles){
       [COLOR=#7e7e7e]// Serial.println("Loop...");[/COLOR]
        Comboloop();
        [COLOR=#cc6600]while[/COLOR](values==[COLOR=#006699]""[/COLOR])
        {
          [COLOR=#cc6600][B]Serial[/B][/COLOR].[COLOR=#cc6600]println[/COLOR]([COLOR=#006699]"Empty set"[/COLOR]);
          Comboloop();
        }
       [COLOR=#7e7e7e]// Serial.print(cycles);[/COLOR]
        [COLOR=#cc6600]if[/COLOR](k>=limit)
        {
          [COLOR=#cc6600][B]Serial[/B][/COLOR].[COLOR=#cc6600]println[/COLOR]([COLOR=#006699]"Cyclesplusplus"[/COLOR]);
          cycles++;
          k=0;
        }
        num++;
      }
    }
    
    [/quote]
    
    
Sign In or Register to comment.