трудности обработки переменной типа char
- Войдите на сайт для отправки комментариев
Ср, 26/06/2019 - 12:38
Здравствуйте, помогите разобраться - необходимо передавать переменную .
библиотеки
#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) ;// отсылаем показания
не правильно?
абсолютно неправильно. Начиная прямо с первой строки
что это? Переменная radiopacket описана как char. Char - это один символ! А вы, судя по последующему коду, пытаетесь в один симывол целую строчку запихнуть. И что такое outputValue и зачем оно в скобках?
и так далее
Я бы сказал. что Вам даже вопросы еще рано задавать, не только код писать. Возьмите любой учебник по Си и проштудируйте главу про символьные массивы.
не только здесь неправильно, но и далее по тексту
Возьмите любой учебник по Си и проштудируйте главу про символьные массивы.
Именно это он с 2015 года и делает.
Возьмите любой учебник по Си и проштудируйте главу про символьные массивы.
Именно это он с 2015 года и делает.
может уже детектив почитать? :)
может встречалось , что то похожее(скетч) , мне так будет проще разобраться ?
outputValue = float(analogRead(Volt)) / 204, 6; Serial.print("Voltage = " ); Serial.println(outputValue);outputValue = float(analogRead(Volt)) / 204, 6; Serial.print("Voltage = " ); Serial.println(outputValue);А как outputValue описан? Вы можете код целиком давать, а не огрызки?
outputValue = float(analogRead(Volt)) / 204, 6; Serial.print("Voltage = " ); Serial.println(outputValue);А как outputValue описан? Вы можете код целиком давать, а не огрызки?
да, чуть позже, я с телефона зашел.
Ну так "чуть позже" и вопросы бы задавал. Мы-то чем виноваты, что ты с чего попало заходишь?
Ну так "чуть позже" и вопросы бы задавал. Мы-то чем виноваты, что ты с чего попало заходишь?
странно - в первом сообщении огромные куски кода вставлены.. это он с телефона смог, а описание переменной - нет?
#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); } } }Т.е. в строке №83 ты переменной типа char присваиваешь значение типа float и ... что ты хочешь получить в результате?
Т.е. в строке №83 ты переменной типа char присваиваешь значение типа float и ... что ты хочешь получить в результате?
Ворота! Давай выслушаем показания.
ТС, дорогой, позволь поинтеревосаться, что ты хотел выразить в строке 83?
Что ты затер и убрал из неё своими
кривымируками? Мы не сможем тебе помочь, если ты не признаешься! Скажи правду и тебе сразу станет легче.Т.е. в строке №83 ты переменной типа char присваиваешь значение типа float и ... что ты хочешь получить в результате?
Ворота! Давай выслушаем показания.
ТС, дорогой, позволь поинтеревосаться, что ты хотел выразить в строке 83?
Что ты затер и убрал из неё своими
кривымируками? Мы не сможем тебе помочь, если ты не признаешься! Скажи правду и тебе сразу станет легче.решил не здороваться с миром
че делать то ?
ТС! Есть ли у тебя понимание того, чем отличаются строки:
char lalala; и char lalala[123]; ?
ТС! И еще, что ты хотел выразить взятием в круглые скобочки своего значения? Это просто способ выразить свое к нему почтение? Или что-то иное?
ТС! И еще, что ты хотел выразить взятием в круглые скобочки своего значения? Это просто способ выразить свое к нему почтение? Или что-то иное?
по существу что нибудь ожидать ?
Расходимся.
ТС! И еще, что ты хотел выразить взятием в круглые скобочки своего значения? Это просто способ выразить свое к нему почтение? Или что-то иное?
по существу что нибудь ожидать ?
wdrakula всё по существу спросил. Вы можете ответить на вопрос, зачем Вы переменную outputValue взяли в скобки?
по существу что нибудь ожидать ?
если это "не по существу" - то воспользуйся моим советом выше, почитай учебник. Задавать вопросы тебе пока рано.
Вы можете ответить на вопрос, зачем Вы переменную outputValue взяли в скобки?
да просто видел такое в чужом скетче... он же "на примерах лучше понимает"
решил не здороваться с миром
а мир обиделся. Вот теперь и думайте
че делать то ?
по существу что нибудь ожидать ?
Это и было по существу.
А что в твоём понимании "по существу"? Скажи, я, может, выдам тебе.
По существу - это исправить данный кот, чтобы на примере было понятно почему маленький, но гордый char не склонил голову.
Ну, посмотрим чё ТС скажет. Мож ему ссылка дельная нужна, так их есть у меня, ты в курсе, наверное.
Не надо котов исправлять. Котики няшные.
Не надо котов исправлять. Котики няшные.
Не всегда.
Эх, я бы своего кота исправил, ссыт где не попадя, падла. И терлибончики давно отрезаны, а изменений в поведении - ноль. Осталось только краник узелком завязать.
Ну, посмотрим чё ТС скажет. Мож ему ссылка дельная нужна, так их есть у меня, ты в курсе, наверное.
хорошо начал , делись,продолжай)
О-о-о, процесс пошёл... Осталось припасть к истокам:
Кёрниган Ритчи Язык Си
Символьные массивы: Символьные массивы
Массивы и указатели: Указатели и массивы
хорошо начал , делись,продолжай)
Я что, ядро урана, чтобы за нехрен делать делиться? Тебе был задан вопрос
Ответа я до сих пор не получил. Жду пока. Скоро надоест ждать, тогда забью просто.
О-о-о, процесс пошёл... Осталось припасть к истокам:
Кёрниган Ритчи Язык Си
Символьные массивы: Символьные массивы
Массивы и указатели: Указатели и массивы
спасибо.
Не за что.
Просто, эту "библию сионистов" обязательно надо изучить, благо она совсем тоненькая. В ней описаны основы языка Си (не С++!) -- но эти основы так и называются "Диалект языка С от K&R" и имеют вес неписанного стандарта.
Особенно её полезно изучение в плане освоения ссылочных операций (и вообще, для формирования чёткого понимания о ссылках, указателях и адресации).
всё так, только чесный Си нихрена не знает о ссылках.
всё так, только чесный Си нихрена не знает о ссылках.
и о ссылках вида пойди туда не знаю куда и спроси там куда идти дальше тоже?
ты путаешь ссылки и вложенные указатели разной степени косвенности
всё так, только чесный Си нихрена не знает о ссылках.
Такова плата за честность :(
Всем кто выеб...ылся посвящается -
https://portal-pk.ru/news/95-funkciya--dtostrf-.html
Всем кто выеб...ылся посвящается -
Посвящать что-то не тобой написаное - плагиат, а посвящать самому себе - нескромность.
ты путаешь ссылки и вложенные указатели разной степени косвенности
путать можно только то, о чём имеешь представление, а я же не имею )))