Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: demanik, ivan_fd  
Проблема с выводм на дисплей значения переменной DWord
доцент2 Дата: Пт, 24.02.2017, 21:02  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 292
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

Dim T       As SWord   'температура в цельсиях x 10   
Dim Prm     As Dword   'давление в мм ртутного столба mm.rt.st

вывод на 1602. Работает нормально!    
Print At 2,11,SDec2 T/10,".",Dec1 T, 223, "C"     
Print At 2,1, Dec Prm/100,".",Dec2 Prm,"mm"'" mm.rt.st" 

вывод температуры на nokia-1616. Работает нормально.
StrN Text_stroka=Str$(SDec2 T/10):GoSub Nokia_1616_Text
StrN Text_stroka="."                         :GoSub Nokia_1616_Text
StrN Text_stroka=Str$(Dec1 T)       :GoSub Nokia_1616_Text
StrN Text_stroka="`C"                      :GoSub Nokia_1616_Text  

вывод давления на nokia-1616. Проблема!
‘проблемка втом, что переменная Prm (DWord) не хочет отображаться на дисплее
StrN Text_stroka=Str$(Dec Prm/100):GoSub Nokia_1616_Text
StrN Text_stroka="."                          :GoSub Nokia_1616_Text
StrN Text_stroka=Str$(Dec2 Prm)     :GoSub Nokia_1616_Text
StrN Text_stroka="mm"                     :GoSub Nokia_1616_Text 
Если добавляю переменную, нормально выводит только целую часть (fff), подскажите как вывести значения после запятой.
Dim fff    As Word
fff=Prm/100 
StrN Text_stroka=Str$(Dec fff)      :GoSub Nokia_1616_Text
StrN Text_stroka="."                       :GoSub Nokia_1616_Text
StrN Text_stroka=Str$(Dec2 Prm) :GoSub Nokia_1616_Text
StrN Text_stroka="mm"                   :GoSub Nokia_1616_Text

Добавлено (24.02.2017, 21:02)
---------------------------------------------
Проблемка решена.
Dim ggg As Word
ggg=Prm-30000
StrN Text_stroka=Str$(Dec2 Prm) :GoSub Nokia_1616_Text
теперь все нормально.

Сообщение отредактировал доцент2 - Пт, 24.02.2017, 19:47
ЯНДЕКС Дата: 24.02.2017
ADMIN Дата: Сб, 25.02.2017, 03:29  |                                                                                                                Сообщение # 2
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

А в чем, собственно, решение?

Dim ggg As Word
ggg=Prm-30000
StrN Text_stroka=Str$(Dec2 Prm) :GoSub Nokia_1616_Text
теперь все нормально.
доцент2 Дата: Сб, 25.02.2017, 14:20  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 292
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

Решение в том, что у меня библиотека Nokia-1616 почему-то не захотела прочитать переменную типа DWord, хотя SWord понимает (пока не разбирался в чем там дело.)
Значение переменной DWord давления, например 75622 (т.е. 756,22мм) более 65535.
Поэтому пришлось объявить переменную и поделить на 100 значение Prm - получается целая часть типа Word (с ней библиотека работает отлично).
Dim fff    As Word
fff=Prm/100
Для вывода значения после запятой пришлось объявить еще одну переменную и отнять от нее (как пример 30000), чтобы за значение Word не вылазила.
Dim ggg As Word
ggg=Prm-30000
Получается криво, надо думать.

Сообщение отредактировал доцент2 - Сб, 25.02.2017, 14:22
xvovanx Дата: Сб, 25.02.2017, 23:12  |                                                                                                                Сообщение # 4
Группа: Модераторы
Ранг:  Помогаю всем
Сообщений: 332
Репутация: 59   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

В протоне есть функция отделения целой части от числа, т.е. 756 без дробной части уже получили. А потом от 756,22 отнимаем целую часть 756 и умножаем остаток на 100 и как новую переменную. На дисплей выводим целую часть, потом знак раздела (запятую) и вторую переменную.
доцент2 Дата: Вс, 26.02.2017, 13:12  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 292
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

Цитата xvovanx ()
756 без дробной части уже получили. А потом от 756,22 отнимаем целую часть 756 и умножаем остаток на 100 и как новую переменную.
мудрено получается. Мне кажется я сделал проще. переменная давления Рrm = 75622 (тип DWord)
В данном случае целая часть это 756, т.е.
Dim fff As Word
fff=Prm/100 - целая часть 756 на дисплей
StrN Text_stroka=Str$ (Dec fff): GoSub Nokia_1616_Text
далее выделяем дробную часть
Dim ggg As Word
ggg=Prm-30000 (можно отнять любое число, главное результат должен быть не более 65535 для переменной типа Word), далее на дисплей
StrN Text_stroka=Str$ (Dec2 ggg): GoSub Nokia_1616_Text
Цитата xvovanx ()
В протоне есть функция отделения целой части от числа
Наверное затупил. Перелопатил описание протона, но не нашел такую функцию.
xvovanx Дата: Ср, 01.03.2017, 23:24  |                                                                                                                Сообщение # 6
Группа: Модераторы
Ранг:  Помогаю всем
Сообщений: 332
Репутация: 59   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

Цитата доцент2 ()
Перелопатил описание протона, но не нашел такую функцию


Если честно - лень искать smile . Если не ошибаюсь, оператор был как две косые черты, а название функции вроде как Modulis
доцент2 Дата: Ср, 01.03.2017, 23:29  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 292
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

Все равно надо объявлять дополнительные переменные.
  • Страница 1 из 1
  • 1
Поиск: