как считать данные из порта в char*

vlad072
Offline
Зарегистрирован: 01.08.2017

char* inpstr;

 

anatoli_nik
Онлайн
Зарегистрирован: 17.01.2019
inpstr = PINx; //x-нужный порт

 

vlad072
Offline
Зарегистрирован: 01.08.2017

За последовательного

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

char inpstr ;

if (Serial.available()) {
   inpstr =(char) Serial.read();
}

 

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

brokly, так ему ж не в char, а в char * надо.

ТС, а кто память выделяет?

vlad072
Offline
Зарегистрирован: 01.08.2017

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

brokly, так ему ж не в char, а в char * надо.

ТС, а кто память выделяет?

да мне всёравно, хоть никто. хотел бы получить ответ на вопрос ))

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Я как-то резюме читал. Там студент написал: "обладаю навыками экстремального программирования". Я всё думал - что это за программирование такое... А теперь вот увидел и сразу понял.

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

vlad072 пишет:

да мне всёравно, хоть никто. хотел бы получить ответ на вопрос ))

Вопрос задан настолько безграмотно, что ответить на него нормально нет никакой возможности. Если бы Вы хоть взяли на себ труд пояснить подробнее, что же Вам нужно-то?

vlad072
Offline
Зарегистрирован: 01.08.2017

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

vlad072 пишет:

да мне всёравно, хоть никто. хотел бы получить ответ на вопрос ))

Вопрос задан настолько безграмотно, что ответить на него нормально нет никакой возможности. Если бы Вы хоть взяли на себ труд пояснить подробнее, что же Вам нужно-то?

Так вроде как всё очевидно. Есть переменная-указатель на массив символов, нужно этот массив заполнить значениями полученными из (пусть будет) Serial, произвольной длины. Или это изначально неверный подход, и правильней будет сразу создать буфер заведомо бОльшей длины (char inpstr[xx]) и туда читать?

vlad072
Offline
Зарегистрирован: 01.08.2017

sadman41 пишет:

А теперь вот увидел и сразу понял.

Увидели что?

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

vlad072 пишет:

Так вроде как всё очевидно. 

Для меня - нет. Фразу "как считать данные из порта в char*" я воспринял не как "заполнить массив", а как считать из порта значение самого указателя. Вы уж пишите подробнее, что Вам нужно.

vlad072 пишет:

этот массив заполнить значениями полученными из (пусть будет) Serial, произвольной длины. 

Вот я и спросил, а кто выделяет память под массив?

Но, если Вам пофиг, то нет проблем. Положить байт из сериала по адресу указателя - как два пальца

char* inpstr;
* inpstr = Serial.read();

Успехов!

Только куда (на какой кусок памяти) указывает указатель и, соответственно, куда попдёт этот байт - остаётся вопросом. Но, Вы сказали, что пофиг. Ну, пофиг, так пофиг.

vlad072
Offline
Зарегистрирован: 01.08.2017

Поэтому и написал в "песочницу" что не знал, нужно ли выделать память самому или это делает компилятор, как что правильно сделать. Хотел увидеть просто пример кода а по итогу один троллинг. Ну спасибо товарищи тролли, разобрался сам уже...

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

vlad072 пишет:

 не знал, нужно ли выделать память самому или это делает компилятор, как что правильно сделать. .

Так надо было это и спрашивать! А то ж лень на клавишу нажать! Вот и получил: каков вопрос, таков и ответ.

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Собираю одно важное электронное устройство. Возник вопрос - надо ли припаивать детали к плате или достаточно просто кинуть одно на другое? Есть предположение, что паяльник сам всё сделает. Только отвечайте по существу, огры немытые!

Schwarz78
Offline
Зарегистрирован: 19.01.2019

Вы же вроде довольно грамотно до этого писали, вот вам и ответили. Компилятор выделяет сам только то, что может знать. Вообще, пиша для контроллеров (если это позволяет русский язык), лучше о памяти думать самому всегда. Компилятор не знает, сколько сможет выделить динамически, а вы можете знать.

andriano
andriano аватар
Онлайн
Зарегистрирован: 20.06.2015

vlad072 пишет:

Так вроде как всё очевидно.

Думаю, Вы заблуждаетесь.

Цитата:

Есть переменная-указатель на массив символов, нужно этот массив заполнить значениями полученными из (пусть будет) Serial, произвольной длины.

Какой "этот" массив? У Вас есть только указатель, никакого массива Вы не заказывали. Вы понимаете разницу между переменной и указателем на переменную? Это две разные сущности, они существуют совершенно независимо друг от друга: может быть переменная без указателя, может быть указатель без переменной, может быть и то, и другое, а может быть - ни того, ни другого.

Цитата:

Или это изначально неверный подход, и правильней будет сразу создать буфер заведомо бОльшей длины (char inpstr[xx]) и туда читать?

Можно, конечно, и так, но это совсем не тот подход, о которм Вы спрашивали в начале.