Converting string to uint32_t

Andreas Höschler <[email protected]>
Newsgroups gmane.comp.hardware.avr.gcc
Message-ID <[email protected]>
Hi all,

doing my first cautious steps in C on an Arduino I try to convert a string read over the serial interface to a uint32_t.

uint32_t getLong_from_serial_rec_buffer()
  {
   char char_buffer[10];
   int i;
   for (i = 0 ; i < 10 ; i++)
     {
      if (bytes_in_serial_rec_buffer() > 0)
        {
         char current = buffer[buffer_tail];
         if (current >= '0' && current <= '9')
           {
            get_from_serial_rec_buffer(); // we already know the byte :-)
            char_buffer[i] = current;
           }
         else // is a comma or NULL or whatever other character
           {
            char_buffer[i] = 0;
            
            putString_in_serial_trans_buffer(char_buffer);
            
            return (uint32_t)atol(char_buffer);
           }
        }
     } 
   return -1;
  }

void putLong_in_serial_trans_buffer(uint32_t value)
{
   char char_buffer[10];
   utoa(value, char_buffer, 10); 
   int i;
   for (i = 0 ; i < 10 ; i++)
    {
      char current = char_buffer[i];
      if (current != 0) TxByte (current);
      else break;
    }
}

This does not work. The thing receives 500000 as a string but atol seems to be good for 16bit values only!? The value returned by getLong_from_serial_rec_buffer is at least always smaller than 65536. What am I missing? Where would I find the correct function that returns a 32bit value?

Thanks a lot,

 Andreas
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.