трудности обработки переменной типа char

victorv
Offline
Зарегистрирован: 31.07.2015

Здравствуйте, помогите разобраться - необходимо передавать переменную .

 

библиотеки

#include <SPI.h>
#include <RH_RF69.h>
#include <RHReliableDatagram.h>

необходимо отправлять изменениеи напряжения (outputValue)

 

char radiopacket = (outputValue) ;// отсылаем показания
  itoa(packetnum++, radiopacket + 13, 10);
  Serial.print("Sending "); Serial.println(radiopacket);//выводим , что отослали

  // отправляем сообщение
  if (rf69_manager.sendtoWait((uint8_t *)radiopacket, strlen(radiopacket), DEST_ADDRESS)) {
    // Ждем ответа от сервера
    uint8_t len = sizeof(buf);
    uint8_t from;

 

принимаю

{
  if (rf69_manager.available())
  {
    // Wait for a message addressed to us from the client
    uint8_t len = sizeof(buf);
    uint8_t from;
    if (rf69_manager.recvfromAck(buf, &len, &from)) {
      buf[len] = 0; // zero out remaining string
      
      Serial.print("Got packet from #"); Serial.print(from);
      Serial.print(" [RSSI :");
      Serial.print(rf69.lastRssi());
      Serial.print("] : ");
      Serial.println(atoi((char*)buf));

выводит то 0.Помогите разобраться , думаю что вот тут

char radiopacket = (outputValue) ;// отсылаем показания

не правильно?

b707
Offline
Зарегистрирован: 26.05.2017

абсолютно неправильно. Начиная прямо с первой строки

char radiopacket = (outputValue) ;

что это? Переменная radiopacket описана как char. Char - это один символ! А вы, судя по последующему коду, пытаетесь в один симывол целую строчку запихнуть. И что такое outputValue и зачем оно в скобках?

и так далее

Я бы сказал. что Вам даже вопросы еще рано задавать, не только код писать. Возьмите любой учебник по Си и проштудируйте главу про символьные массивы.

 

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

не только здесь неправильно, но и далее по тексту

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

b707 пишет:

Возьмите любой учебник по Си и проштудируйте главу про символьные массивы.

Именно это он с 2015 года и делает. 

b707
Offline
Зарегистрирован: 26.05.2017

DetSimen пишет:

b707 пишет:

Возьмите любой учебник по Си и проштудируйте главу про символьные массивы.

Именно это он с 2015 года и делает. 

может уже детектив почитать? :)

victorv
Offline
Зарегистрирован: 31.07.2015

может встречалось , что то похожее(скетч) , мне так будет проще разобраться ?

victorv
Offline
Зарегистрирован: 31.07.2015
 outputValue = float(analogRead(Volt)) / 204, 6;
  Serial.print("Voltage = " );
  Serial.println(outputValue);

 

 

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

victorv пишет:

 outputValue = float(analogRead(Volt)) / 204, 6;
  Serial.print("Voltage = " );
  Serial.println(outputValue);

А как outputValue описан? Вы можете код целиком давать, а не огрызки?

victorv
Offline
Зарегистрирован: 31.07.2015

ЕвгенийП пишет:

victorv пишет:

 outputValue = float(analogRead(Volt)) / 204, 6;
  Serial.print("Voltage = " );
  Serial.println(outputValue);

А как outputValue описан? Вы можете код целиком давать, а не огрызки?

 

да, чуть позже, я с телефона зашел.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Ну так "чуть позже" и вопросы бы задавал. Мы-то чем виноваты, что ты с чего попало заходишь?

b707
Offline
Зарегистрирован: 26.05.2017

Ворота пишет:

Ну так "чуть позже" и вопросы бы задавал. Мы-то чем виноваты, что ты с чего попало заходишь?

странно - в первом сообщении огромные куски кода вставлены.. это он с телефона смог, а описание переменной - нет?

victorv
Offline
Зарегистрирован: 31.07.2015
#include <SPI.h>
#include <RH_RF69.h>
#include <RHReliableDatagram.h>

// частота на которой будем работать
#define RF69_FREQ 868.8

// Отправлять пакеты на этот адрес
#define DEST_ADDRESS   1
// мой адрес
#define MY_ADDRESS     2

#if defined (__AVR_ATmega328P__)  // настройки для чипа  328P 
#define RFM69_INT     2  // 
#define RFM69_CS     10  //
#define RFM69_RST     3  // "A"
//#define LED           A5
#endif

// Singleton instance of the radio driver
RH_RF69 rf69(RFM69_CS, RFM69_INT);

// Class to manage message delivery and receipt, using the driver declared above
RHReliableDatagram rf69_manager(rf69, MY_ADDRESS);

int16_t packetnum = 0;  // packet counter, we increment per xmission

int Volt   = A3;   //замер напряжения
float outputValue = 0;


void setup() {
  Serial.begin(9600);

  pinMode(RFM69_RST, OUTPUT);
  digitalWrite(RFM69_RST, LOW);

  Serial.println("Feather Addressed RFM69 TX Test!");
  Serial.println();

  // ручной сброс//
  digitalWrite(RFM69_RST, HIGH);
  delay(10);
  digitalWrite(RFM69_RST, LOW);
  delay(10);

  if (!rf69_manager.init()) {
    Serial.println("RFM69 radio init failed");
    while (1);
  }
  Serial.println("RFM69 radio init OK!");
  // Defaults after init are 434.0MHz, modulation GFSK_Rb250Fd250, +13dbM (for low power module)
  // No encryption
  if (!rf69.setFrequency(RF69_FREQ)) {
    Serial.println("setFrequency failed");
  }

  // If you are using a high power RF69 eg RFM69HW, you *must* set a Tx power with the
  // ishighpowermodule flag set like this:
  rf69.setTxPower(20, true);  // range from 14-20 for power, 2nd arg must be true for 69HCW

  // The encryption key has to be the same as the one in the server
  uint8_t key[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
                    0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
                  };
  rf69.setEncryptionKey(key);
  Serial.print("RFM69 radio @");  Serial.print((int)RF69_FREQ);  Serial.println(" MHz");
  ////////////////////////////////////////////////////////////////////////////////////////



}
// Dont put this on the stack:
uint8_t buf[RH_RF69_MAX_MESSAGE_LEN];
uint8_t data[] = "  OK";

void loop() {


  delay(1000);  // ждем 1 сек перед передачами


  char radiopacket = (outputValue) ;//отсылаем показания вольтметра
  itoa(packetnum++, radiopacket + 13, 10);
  Serial.print("Sending "); Serial.println(radiopacket);//выводим , что отослали

  // отправляем сообщение
  if (rf69_manager.sendtoWait((uint8_t *)radiopacket, strlen(radiopacket), DEST_ADDRESS)) {
    // Ждем ответа от сервера
    uint8_t len = sizeof(buf);
    uint8_t from;
    if (rf69_manager.recvfromAckTimeout(buf, &len, 2000, &from)) //ждем ответ , если он пришел...
    {
      buf[len] = 0; // обнулить оставшуюся строку

      Serial.print("Got reply from #"); Serial.print(from);
      Serial.print(" [RSSI :");
      Serial.print(rf69.lastRssi());
      Serial.print("] : ");
      Serial.println((char*)buf);


    }
  }
}

 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Т.е. в строке №83 ты переменной типа char присваиваешь значение типа float и ... что ты хочешь получить в результате?

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Ворота пишет:

Т.е. в строке №83 ты переменной типа char присваиваешь значение типа float и ... что ты хочешь получить в результате?

Ворота! Давай выслушаем показания.

ТС, дорогой, позволь поинтеревосаться, что ты хотел выразить в строке 83?

Что ты затер и убрал из неё своими кривыми руками? Мы не сможем тебе помочь, если ты не признаешься! Скажи правду и тебе сразу станет легче.

victorv
Offline
Зарегистрирован: 31.07.2015

wdrakula пишет:

Ворота пишет:

Т.е. в строке №83 ты переменной типа char присваиваешь значение типа float и ... что ты хочешь получить в результате?

Ворота! Давай выслушаем показания.

ТС, дорогой, позволь поинтеревосаться, что ты хотел выразить в строке 83?

Что ты затер и убрал из неё своими кривыми руками? Мы не сможем тебе помочь, если ты не признаешься! Скажи правду и тебе сразу станет легче.

 

решил не здороваться с миром

char radiopacket[20] = "Hello World #      ";

 

че делать то ?

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

ТС! Есть ли у тебя понимание того, чем отличаются строки:

char lalala; и char lalala[123];   ?

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

ТС! И еще, что ты хотел выразить взятием в круглые скобочки своего значения? Это просто способ выразить свое к нему почтение? Или что-то иное?

victorv
Offline
Зарегистрирован: 31.07.2015

wdrakula пишет:

ТС! И еще, что ты хотел выразить взятием в круглые скобочки своего значения? Это просто способ выразить свое к нему почтение? Или что-то иное?

по существу  что нибудь ожидать ?

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Расходимся. 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

victorv пишет:

wdrakula пишет:

ТС! И еще, что ты хотел выразить взятием в круглые скобочки своего значения? Это просто способ выразить свое к нему почтение? Или что-то иное?

по существу  что нибудь ожидать ?

wdrakula всё по существу спросил. Вы можете ответить на вопрос, зачем Вы переменную outputValue взяли в скобки?

b707
Offline
Зарегистрирован: 26.05.2017

victorv пишет:

по существу  что нибудь ожидать ?

если это "не по существу" - то воспользуйся моим советом выше, почитай учебник. Задавать вопросы тебе пока рано.

b707
Offline
Зарегистрирован: 26.05.2017

Jeka_M пишет:

Вы можете ответить на вопрос, зачем Вы переменную outputValue взяли в скобки?

да просто видел такое в чужом скетче... он же "на примерах лучше понимает"

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

victorv пишет:

решил не здороваться с миром

а мир обиделся. Вот теперь и думайте

victorv пишет:

че делать то ?

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

victorv пишет:

по существу  что нибудь ожидать ?

Это и было по существу.

А что в твоём понимании "по существу"? Скажи, я, может, выдам тебе.

sadman41
Offline
Зарегистрирован: 19.10.2016

По существу - это исправить данный кот, чтобы на примере было понятно почему маленький, но гордый char не склонил голову.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Ну, посмотрим чё ТС скажет. Мож ему ссылка дельная нужна, так их есть у меня, ты в курсе, наверное.

Шурик
Offline
Зарегистрирован: 21.06.2019

Не надо котов исправлять. Котики няшные.

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Шурик пишет:

Не надо котов исправлять. Котики няшные.

Не всегда. 

kostyamat
Offline
Зарегистрирован: 16.11.2017

Эх, я бы своего кота исправил, ссыт где не попадя, падла. И терлибончики давно отрезаны, а изменений в поведении - ноль. Осталось только краник узелком завязать.

victorv
Offline
Зарегистрирован: 31.07.2015

Ворота пишет:

Ну, посмотрим чё ТС скажет. Мож ему ссылка дельная нужна, так их есть у меня, ты в курсе, наверное.

хорошо начал , делись,продолжай)

Шурик
Offline
Зарегистрирован: 21.06.2019

О-о-о, процесс пошёл... Осталось припасть к истокам:

Кёрниган Ритчи Язык Си 

Символьные массивы: Символьные массивы

Массивы и указатели: Указатели и массивы

 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

victorv пишет:

хорошо начал , делись,продолжай)

Я что, ядро урана, чтобы за нехрен делать делиться? Тебе был задан вопрос

Ворота пишет:
А что в твоём понимании "по существу"?

Ответа я до сих пор не получил. Жду пока. Скоро надоест ждать, тогда забью просто.

victorv
Offline
Зарегистрирован: 31.07.2015

Шурик пишет:

О-о-о, процесс пошёл... Осталось припасть к истокам:

Кёрниган Ритчи Язык Си 

Символьные массивы: Символьные массивы

Массивы и указатели: Указатели и массивы

 

спасибо.

Шурик
Offline
Зарегистрирован: 21.06.2019

Не за что.

Просто, эту "библию сионистов" обязательно надо изучить, благо она совсем тоненькая. В ней описаны основы языка Си (не С++!) -- но эти основы так и называются "Диалект языка С от K&R" и имеют вес неписанного стандарта.

Особенно её полезно изучение в плане освоения ссылочных операций (и вообще, для формирования чёткого понимания о ссылках, указателях и адресации).

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

всё так, только чесный Си нихрена не знает о ссылках. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

всё так, только чесный Си нихрена не знает о ссылках. 

и о ссылках вида пойди туда не знаю куда и спроси там куда идти дальше тоже?

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

ты путаешь ссылки и вложенные указатели разной степени косвенности

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

DetSimen пишет:

всё так, только чесный Си нихрена не знает о ссылках. 

Такова плата за честность :(

victorv
Offline
Зарегистрирован: 31.07.2015

Всем кто выеб...ылся посвящается -

https://portal-pk.ru/news/95-funkciya--dtostrf-.html

 

 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

victorv пишет:

Всем кто выеб...ылся посвящается -

Посвящать что-то не тобой написаное - плагиат, а посвящать самому себе - нескромность.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

ты путаешь ссылки и вложенные указатели разной степени косвенности

путать можно только то, о чём имеешь представление, а я же не имею )))