Преобразовать число в строку

Простейшие вопросы в области инженерной разработки

Преобразовать число в строку

Postby pazitiff25 on 07 Oct 2018, 01:53

Здравствуйте участники форума!
Хочу передавать число в COM-порт. Закачал драйверы для VISA, написал простую программку, используя функцию VISA Write.

Приспособил ползунок integer. Подскажите пожалуйста, можно ли преобразовать int в строку? Есть ли готовые функции или надо писать подпрограмму самому?

visa com port.jpg
pazitiff25
beginner
beginner
 
Posts: 15
Joined: 07 Oct 2018, 01:40
LabVIEW Version: 2013
Karma: 0

Re: Преобразовать число в строку

Postby alerm on 07 Oct 2018, 03:25

Снимок.PNG
Снимок.PNG (5.91 KiB) Viewed 564 times
User avatar
alerm
leader
leader
 
Posts: 573
Joined: 02 May 2012, 21:28
Medals: 1
Activity (1)
LabVIEW Version: 13
Karma: 156
VIP teachers freelance

Re: Преобразовать число в строку

Postby pazitiff25 on 07 Oct 2018, 11:45

Спасибо огромное, заработало!
Не пойму только назначение вывода width(-) на иконке Number To Decimal String. Это длина в байтах или в битах? В хелпе сказано "длина в цифрах" (((

Если я отправляю в порт 1 байт unsigned integer, я так понимаю там должна стоять "1" ?
pazitiff25
beginner
beginner
 
Posts: 15
Joined: 07 Oct 2018, 01:40
LabVIEW Version: 2013
Karma: 0

Re: Преобразовать число в строку

Postby Kosist on 07 Oct 2018, 12:37

pazitiff25 wrote:Спасибо огромное, заработало!
Не пойму только назначение вывода width(-) на иконке Number To Decimal String. Это длина в байтах или в битах? В хелпе сказано "длина в цифрах" (((

Если я отправляю в порт 1 байт unsigned integer, я так понимаю там должна стоять "1" ?

Это количество знаков, нужных на отображение числа. Можете туда ничего не ставить, в Вашем случае проблем не будет.
А так - например, если Вы хотите, чтобы в файле (или где-то еще) преобразованные числа отображались с одинаковой длинной строки, можете указывать этот параметр. Тогда если "ширина" строки будет равна 2, то числа будут отображаться как 01, 02, 03... 10, 11, и т.д.
Я обычно использую Format Into String функцию, там тоже можно этот параметр задавать, например как %02d, где 02 - ширина строки, d - форматтер числа.
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 900
Joined: 21 Feb 2011, 23:44
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 253
CLAD I/O VIP students

Re: Преобразовать число в строку

Postby pazitiff25 on 07 Oct 2018, 17:06

Спасибо!
Подскажите, а VISA Write может гнать в порт только строки? А обычные десятичные числа не может?

Может есть другие функции связи с портом?
pazitiff25
beginner
beginner
 
Posts: 15
Joined: 07 Oct 2018, 01:40
LabVIEW Version: 2013
Karma: 0

Re: Преобразовать число в строку

Postby Kosist on 07 Oct 2018, 21:43

В конце-концов, все интерпретируется как набор байтов. Но драйвер в :labview: принимает строки - и в этом нет никакой проблемы, поверьте. Любой драйвер устройства для серийного порта использует VISA Write. Если Вы посылаете строку с числом, а прибор не реагирует - нужно изучить протокол. Может, число должно быть представлено как hex; может нужно использовать определенный терминирующий символ (конец строки \n, \r, \r\n, и т.д.); может нужно посылать hex-числа в виде нормально строки.
Что конкретно не работает в Вашем случае?
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 900
Joined: 21 Feb 2011, 23:44
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 253
CLAD I/O VIP students

Re: Преобразовать число в строку

Postby pazitiff25 on 08 Oct 2018, 10:24

Передаю данные через виртуальный com-порт в микроконтроллер STM32f767. Микроконтроллер настроен на прием usart rs232.
Я так понимаю, LabView отправляет данные в ascii-коде. Не разберу, как потом перевести ascii-код числа в обычное число.
pazitiff25
beginner
beginner
 
Posts: 15
Joined: 07 Oct 2018, 01:40
LabVIEW Version: 2013
Karma: 0

Re: Преобразовать число в строку

Postby pazitiff25 on 08 Oct 2018, 10:47

Подскажите пожалуйста, есть ли в С++ функции для преобразования ascii в обычное число? Или алгоритмы?
Функция atoi в stm32 не работает ((
pazitiff25
beginner
beginner
 
Posts: 15
Joined: 07 Oct 2018, 01:40
LabVIEW Version: 2013
Karma: 0

Re: Преобразовать число в строку

Postby Blackman on 08 Oct 2018, 10:58

pazitiff25 wrote:Подскажите пожалуйста, есть ли в С++ функции для преобразования ascii в обычное число? Или алгоритмы? ... ((

:think:
ASCII код - 48 = Значение числа
49 - 48 = 1
pazitiff25 wrote:Я так понимаю, LabView отправляет данные в ascii-коде.

:labview: отправляет строку (массив байтов). А как в этих байтах кодируется информация - это другой вопрос :). Можно отправлять числа и в бинарном формате. Например число 2018 : ASCII - hex: 32 30 31 38 Бинарный - hex: 07 E2
Last edited by Blackman on 08 Oct 2018, 11:29, edited 1 time in total.
Blackman
leader
leader
 
Posts: 802
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 234
VIP

Re: Преобразовать число в строку

Postby Artem.spb on 08 Oct 2018, 11:14

Blackman wrote:
pazitiff25 wrote:Подскажите пожалуйста, есть ли в С++ функции для преобразования ascii в обычное число? Или алгоритмы? ... ((

:think:
ASCII код - 48 = Значение числа
49 - 48 = 1

зачем мудрить, когда есть готовое?
вы же не будете в :labview: так преобразовывать стрки в числа?
str.png
str.png (14.2 KiB) Viewed 474 times
Artem.spb
expert
expert
 
Posts: 1445
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 248
CLD hardware I/O VIP freelance

Re: Преобразовать число в строку

Postby Blackman on 08 Oct 2018, 11:48

А почему нет? Хороший пример алгоритма для pazitiff23 :) Под капотом :labview: примерно тоже самое, найли лайкли :)))
Blackman
leader
leader
 
Posts: 802
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 234
VIP

Re: Преобразовать число в строку

Postby Artem.spb on 08 Oct 2018, 12:05

Blackman wrote:А почему нет? Хороший пример алгоритма для pazitiff23 :) Под капотом :labview: примерно тоже самое, найли лайкли :)))

ну если только с точки зрения изучения алгоритмов :)
Artem.spb
expert
expert
 
Posts: 1445
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 248
CLD hardware I/O VIP freelance

Re: Преобразовать число в строку

Postby taras_33 on 08 Oct 2018, 14:14

Функция atoi в stm32 не работает

Это уже интересно, впервые слышу. Все работает.
стандартный хедер #include <stdlib.h> подключен?
Вот на вскидку из гугла - почитайте. Вот из Keil
Если нужно наоборот, то вот неплохая статья.
Я так понимаю NUCLEO-F767ZI ковыряете? Если да, то зачем Вам UART там же USB на борту...
Last edited by taras_33 on 08 Oct 2018, 14:28, edited 1 time in total.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
User avatar
taras_33
developer
developer
 
Posts: 256
Joined: 31 Oct 2009, 18:25
Location: Minsk -> Miami
Medals: 1
Activity (1)
LabVIEW Version: 2016
Karma: 121
CLD VIP

Re: Преобразовать число в строку

Postby alex3f on 08 Oct 2018, 14:23

pazitiff25, чтобы "работать с теми же числами, что и в контроллере" попробуйте:
Attachments
Преобразовать число в строку.png
alex3f
beginner
beginner
 
Posts: 21
Joined: 23 Aug 2016, 09:16
LabVIEW Version: 2016
Karma: 10

Re: Преобразовать число в строку

Postby pazitiff25 on 08 Oct 2018, 16:26

Alex3f, спасибище огромное, вставил квадратную шпильку - все заработало! Шлет чистейшие интеджеры!
pazitiff25
beginner
beginner
 
Posts: 15
Joined: 07 Oct 2018, 01:40
LabVIEW Version: 2013
Karma: 0

Next

Return to Для чайников

Who is online

Users browsing this forum: alerm, Andrew Lunev, Google, yakuba26 and 15 guests

cron