Конвертация типов Ардуино

Тема в разделе "Arduino & Shields", создана пользователем Дмитрий П, 11 ноя 2015.

  1. Может кому пригодиться:
    Код (C++):
    [B]Byte to Int[/B]

    Читаем Serial и записываем в int
    [B]Получение целого однозначного числа(1..9)[/B]
     IntVar=(Serial.read() - '0');    


    [B]Получение целого многозначного значения (10+)[/B]
     delay(200)//зависит от скорости передачи
    while (Serial.available()) IntVar = IntVar * 10 + (Serial.read() - '0');  


    [B]Получение текста[/B]
    delay(200);//зависит от скорости передачи
    while (Serial.available())Var = Var + (char)(Serial.read());  

    [B]String to Int[/B]

     int intVar;
    String stringVar = "744";
    intVar=stringVar.toInt();  

    [B]String to Float[/B]
     float floatVar;
    char floatbufVar[32];
    String stringVar = "744";
    stringVar.toCharArray(floatbufVar,sizeof(floatbufVar));
    floatVar=atof(floatbufVar);  

    [B]String to CharArray[/B]
     String stringVar = "744";
    char charBufVar[50];
    stringVar.toCharArray(charBufVar, 50);  

    [B]CharArray to Byte[/B]
    char CharArrayVar[8] = {1,0,1,1,0,0,1,1};
    char CharVar = 0;
    for(int i = 0; i<8; i++)
    {
    CharVar |= lCharArrayVar[i] << (7-i);
    }
    PORTD = CharVar;  

    [B]char to string[/B]
    char[] chArray = "пример";
    String str(chArray);  

    [B]String to const char*[/B]
    String stringVar=String('exemple');
    char charVar[sizeof(stringVar)];
    stringVar.toCharArray(charVar, sizeof(charVar));  

    [B]String to Unsigned long integer[/B]
    char **pointer, *stringVar;
    unsigned long unsignedVar;
    stringVar = "324234g";
    unsignedVar = strtoul(stringVar,pointer,10);//=324234  

    [B]Int to String1  [/B]  String stringVar =  String(intVar, DEC);  

    [B]Int to HEX(String)   [/B] String stringVar =  String(intVar, HEX);    

    [B]Int to BIN(String) [/B]  String stringVar =  String(intVar, BIN);    

    [B]uint8_t to char[/B]
    Serial.print((char)buf[i]);
     
  2. Tomasina

    Tomasina Сушитель лампочек Модератор

  3. Получение целого многозначного значения (10+)
    delay(200)//зависит от скорости передачи
    while(Serial.available()) IntVar = IntVar *10+(Serial.read()-'0');
    я конечно извиняюсь, но что тут происходит?
    если есть инфа в буфере сериала, то содержимое буфера, переведенное из ASCII чета умножается и плюсуется с неизвестно каким intVar?
     
  4. идею то я понял что каждое последующее число будет умножатся на 10 и складываться в переменную.
    Но работать это будет только когда это единственная задача в цикле.
    например если в одном из кейсов которые я выбираю по команде из Serial такое не провернуть.
     
  5. Limoney

    Limoney Гик