Не получается конвертировать переменную - не знаю как
- Войдите на сайт для отправки комментариев
Сб, 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]; то ардуина зависает и перезагружается
char tcp_msg[size]; int i=0; while (i<=size-1) { tcp_msg[i]=(char)msg[i]; i=i+1; } Serial.println(tcp_msg); char tcp_msg[size]; int i=0; while (i<=size-1) { tcp_msg[i]=(char)msg[i]; i=i+1; } Serial.println(tcp_msg);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. Будем считать эту историю частью дидактической работы на форуме.
Увидев в тексте такие слова, я обращаюсь к словарю. :))