Не получается конвертировать переменную - не знаю как
- Войдите на сайт для отправки комментариев
Сб, 24/10/2015 - 18:50
Добрый вечер! не удается конвертировать переменную типа uint8_t* в тип char * . меня так же устроит если конвертировать так же в String но тоже не получается пример кода: интересует переменная msg и tcp_msg в msg приходит по TCP/IP текст size_t size; if (EthernetClient client = server.available()) { Serial.println(); String tcp_msg; while((size = client.available()) > 0) { uint8_t* msg = (uint8_t*)malloc(size); size = client.read(msg,size); Serial.write(msg,size); //показываю что пришло в переменную msg //НЕ ПОЛУЧАЕТСЯ ТУТ char * tcp_msg; int i=0; while (i<=size-1) { tcp_msg+=(char)msg[i]; i=i+1; } //НЕ ПОЛУЧАЕТСЯ ТУТ Serial.println(tcp_msg); Serial.println(); free(msg); vw_send((uint8_t *)tcp_msg, strlen(tcp_msg)); vw_wait_tx(); // Wait until the whole message is gone
Две переменных с именем tcp_msg, это предпосылка к лётному происшествию.
В 24 строке объявлен указатель, но он не проинициализирован, значит пишем фиг знает куда.
В 27 строке Вы просто увеличиваете это указатель, а не пишите в него. Здесь правильней было бы написать *tcp_msg = (char)...; а потом tcp_msg++;
Но сначала нужно выделить память, иначе будет плохо.
Да и что именно Вы подразумеваете под словом "конвертировать" не совсем понятно.
Допустим, у Вас есть число 45, что Вы хотите получить на выходе?
andriano - 45 но уже в char
kisoft - спасибо за наводку. буду искать
Сделал как вы сказали. получилось но в конце печатается один лишнний символ
если ставлю char tcp_msg[size-1]; то ардуина зависает и перезагружается
cсделал еще вот так и вроде заработало. не знаю правильно ли
tcp_msg[size]=0;
Тогда в 10 строке size+1.
andriano - 45 но уже в char
Т.е. дефис "-"?
Тогда прочто (char*)
kisoft у меня цикл последний байт не берет
while
(i<=size-1)
поэтому уже +1 не надо
Как угодно
Прошу прощения за оффтоп, но не смог удержаться. Вспомнилась услышанная как то фраза: "Ошибка в типе переменной может привести к задержке в присвоении очередного звания на 6 лет." :)) В оригинале далее следовал пример из жизни.
ХААчу пример из жизни!
Что-то слишком круто - 6 лет. Согласно "Положению..." звание считается очередным, только если должность позволяет. А в этом случае трудно представить ситуацию, когда задержка превысит год.
PS. Поиск в гугле по указанной фразе вразумительных результатов не дал.
PPS. Будем считать эту историю частью дидактической работы на форуме.
ХААчу пример из жизни!
Пример спечифический. Возможно... Как-нибудь...
Что-то слишком круто - 6 лет. Согласно "Положению..."
Райвоенкомат г. Н-ска. Райвоенком, прибыв к месту несения и поднявшись на второй этаж, обнаруживает, что привычной плотной обтюрации его комплекции со стенами коридора мешают офицеры запаса, толпящиеся в коридоре в большом количестве. - Чё вы все в одно время припёрлись? - По повестке. - Ну ка, дайте. У всех к 10-00? - Да. - Кто повестку выписывал? - ...ев. - Он у меня два срока в старших лейтенатах отходил, и еще столько же отходит!!!
Если подсчитать, в сумме реализованного и обещанного это даже больше 6 лет.
PS. Поиск в гугле по указанной фразе вразумительных результатов не дал.
Жизнь пока что несколько шире гугля. Мне это фразу в самом начале 80-х произнес один подполковник, по жизни вместо привычного "за...сь" употреблявший слово "супероптимально". Он, будучи еще капитаном, был даже не очевидцем, а непосредственным участником того самого эпизода и через тумблерный регистр сумел вытащить ситуацию. Но это его история, не моя... :))
PPS. Будем считать эту историю частью дидактической работы на форуме.
Увидев в тексте такие слова, я обращаюсь к словарю. :))