1 / 1 / 1
Регистрация: 06.10.2013
Сообщений: 79
|
||||||||||||||||
1 | ||||||||||||||||
Прочитать строку из буфера и преобразовать в int24.01.2014, 16:36. Показов 3696. Ответов 48
Метки нет (Все метки)
Добрый день уважаемые профессионалы!
Есть буфер. Получены данные из ком порта. в формате: 32 43 101 255 2 3 45 73 54 29 111 Как эти данные из строки преобразовать 1 байтовые числа и загнать в текстбокс? Естественно пробелы игнорировать. Что то уже голова пухнет.... со стороны микроконтроллера(МК) (он отправляет эти данные) я решил на си (очень геморройно решил ) прочитал каждый символ , игнорировал пробелы, перевел в число
0
|
24.01.2014, 16:36 | |
Ответы с готовыми решениями:
48
Преобразовать строку в int Преобразовать строку в int Как преобразовать long int в строку Как преобразовать некорректную строку в int? |
28.01.2014, 23:55 | 21 |
Я в написании программ для мк не очень, но вот вижу 2 момента. buffer у Вас типа char, а вы в него пытаетесь записать int. Да и самим этим int (те что temp) на мой взгляд пытаетесь присвоить дробные значения... Хотя может в мк такое возможно...
0
|
1 / 1 / 1
Регистрация: 06.10.2013
Сообщений: 79
|
|
28.01.2014, 23:59 [ТС] | 22 |
Я переменную int преобразовываю в 1 байтовое значение (перевожу в диапазон 1.....255) и копирую в символьную переменную. А как по другому сделать? По моему никак ... Дробные я не копирую, везде целые значения. Та если даже будут дробные - компилятор должен их отбросить.
0
|
29.01.2014, 00:00 | 23 |
Если можно, покажите код полностью, я хоть в С и никак, но вроде синтаксис не очень отличен, попробую понять.
И да, если переменная типа int, ее потом при копировании в массив типа char не надо приводить к типу?
0
|
1 / 1 / 1
Регистрация: 06.10.2013
Сообщений: 79
|
||||||
29.01.2014, 00:03 [ТС] | 24 | |||||
Вот:
Кликните здесь для просмотра всего текста
Код еще очень сырой, половина блоков не функционирует.
0
|
1 / 1 / 1
Регистрация: 06.10.2013
Сообщений: 79
|
|
29.01.2014, 00:10 [ТС] | 26 |
0
|
434 / 299 / 82
Регистрация: 11.12.2010
Сообщений: 1,209
|
|
29.01.2014, 00:10 | 27 |
У вас какого типа переменная с температурой?
Как я понял что то типа float в котором есть число например 52,86 И его надо разбить на 2 цифры 52 и 86? Упс опоздал
0
|
1 / 1 / 1
Регистрация: 06.10.2013
Сообщений: 79
|
|
29.01.2014, 00:16 [ТС] | 28 |
Да , именно
Добавлено через 1 минуту Нет. Она int . число там до 1000 Я его делю на 10 - получаю целую часть. А остаток от деления - получаю десятые доли. Добавлено через 1 минуту Видно какой тип переменных Добавлено через 1 минуту То есть: 998 значение , температура будет = 99.8
0
|
29.01.2014, 00:17 | 29 |
Думаю, что дело в приведении типов. Не могу точно сказать где, не работал с мк, но мое мнение - что-то не так преобразовываете...
И я не нашел, как вы в однобайтный вариант данные преобразовываете. Я обычно беру значение и комбинирую его по "И" со значением 0хff. На выходе при любом варианте выше 0xff не получится.
0
|
1 / 1 / 1
Регистрация: 06.10.2013
Сообщений: 79
|
|
29.01.2014, 00:23 [ТС] | 30 |
0
|
29.01.2014, 00:28 | 31 |
Типа того. Только обычно первое значение типа int
Вот: int x=0xfadb; byte y= Convert.ToByte(x & 0xff). На выходе у меня получается значение y = 0xdb. У меня такая необходимость постоянно, я отправляю на устройство посылку из байт, и по протоколу обмена последний байт - КС всей посылки. Вот я все элементы складываю и потом так в байт перегоняю.
0
|
1 / 1 / 1
Регистрация: 06.10.2013
Сообщений: 79
|
|
29.01.2014, 00:30 [ТС] | 32 |
Так у меня тоже так
Только на Си . У Вас C# . Хотя от этого суть не меняется
0
|
29.01.2014, 00:33 | 33 |
Ну да, суть та же. А основная проблема - нет отправки от мк или мк не принимает ваши посылки? И еще, порт мк в каких режимах работает (какие типы данных отправляет - принимает)? int, char, byte?
0
|
1 / 1 / 1
Регистрация: 06.10.2013
Сообщений: 79
|
|||||||||||
29.01.2014, 00:38 [ТС] | 34 | ||||||||||
Прикол в том, что я подозреваю в кривости компилятор!
Так как , параллельно , я наблюдаю температуру на дисплее. И все норм отображается! так:
Так:
0
|
1 / 1 / 1
Регистрация: 06.10.2013
Сообщений: 79
|
|
29.01.2014, 00:48 [ТС] | 36 |
Там используется стандартная функция printf(); стандартной библиотеки stdio.h
printf() может выводить char,int,float.... и т.д. Добавлено через 2 минуты Да, так я делю на 10 и потом копирую. Ведь этот код: int y=1000; char x; x = y/10; означает: поделить число 1000 на 10 и записать в переменную x. Добавлено через 1 минуту Завтра продолжу разбираться на свежую голову
0
|
29.01.2014, 01:17 | 37 | ||||||||||
Это я уже понял. Даже на шарпе пример накидал.
В принципе,и С++ выдает так же.
1
|
1 / 1 / 1
Регистрация: 06.10.2013
Сообщений: 79
|
|
29.01.2014, 01:20 [ТС] | 38 |
Спасибо Вам 1000 раз! И вообще всему форуму! Все очень уважительные, умные и адекватные люди!
Я в глубине души догадываюсь где собака порылась Завтра проверю. Добавлено через 2 минуты А что выдает при отладке? 96 1 , 95 4, 34 9 .... и т.д. ?
0
|
1 / 1 / 1
Регистрация: 06.10.2013
Сообщений: 79
|
||||||
29.01.2014, 01:30 [ТС] | 40 | |||||
Когда под МК пишу , бывает и не так приходится писать
Вот к примеру так:
Так как МК 8бит. Им выполнять умножение и деление очень трудно. Занимает много ресурсов. Приходится все делать при помощи вычитания и сложения
0
|
29.01.2014, 01:30 | |
29.01.2014, 01:30 | |
Помогаю со студенческими работами здесь
40
Как преобразовать строку string в int? Как преобразовать строку из TextBox в int ? Как преобразовать строку char в массив int? Преобразовать строку цифр в число типа int Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |