Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Связь проводная и бесп-ная, интерфейсы, протоколы » Строковая переменная с преобразованием по UART


Строковая переменная с преобразованием по UART

Сообщений 1 страница 8 из 8

1

Привет всем! Есть вопрос : По UARTу приходят данные в строковом формате  -   201504190711 , что означает слева на право  20(час) 15(мин) 04(число) 19(год)..... .
Забираю каждою переменную с помощью функции   X=MID(n,1,2) и.т.д. Вопрос затык в том что мне стр.знач. нужно перевести в тоже значение только "HEX" или "BIN" , для записи их в модуль времени

Отредактировано qewin (2019-11-04 20:19:17)

0

2

Syntax
var = VAL(s)

Remarks
Var
A numeric variable that is assigned with the value of s.
S
Variable of the string type.

0

3

sla174, Спасибо за ответ. Я понимаю что это 2класс 2четверть  :blush:  но эти функции я пробовал и маненько знаю но что то запутался в математическом исчислении .
STR пример :  04  после Val = 01,  19 = 09

0

4

Все стабильно работает стандартным подходом... ;)

Код:
Dim K As String * 6
Dim KA As String * 2
Dim KB As String * 2
Dim KC As String * 2
Dim A As Byte
Dim B As Byte
Dim C As Byte

K = "123456"
Print K

KA = Mid(K, 1, 2)
KB = Mid(K, 3, 2)
KC = Mid(K, 5, 2)
Print KA; "   " ; KB ; "   " ; KC

A = Val(KA)
B = Val(KB)
C = Val(KC)
Print A; "   " ; B ; "   " ; C

Print Hex(A); "   " ; Hex(B); "   " ; Hex(C)

В окне UART симулятора:
123456
12   34   56
12   34   56
OC  22   38

Все так же адекватно обрабатывается для строки K = "020406"...
020406
02   04   06
2     4     6
02   04   06

Отредактировано Nord (2019-11-04 23:55:10)

+2

5

Nord Привет! Спасибо как всегда. Нашел "глюк" с моей стороны. Все думал что несоответствие какое то от функций а у меня в программе просто быстро делала возврат из под программы и затирала при обновлении переменные. Все не научусь ставить тайминги , все хочется что бы некоторые операции и команды выполнялись быстро :flag:
Как бы тему можно закрыть. Всем спасибо!

А , секундочку еще вопрос, почему переменная "строковая" остается на lcd (использую для отладки лсд Nokia1100) а остальные форматы подтираются?
Все переменные индивидуальные.

Отредактировано qewin (2019-11-05 18:45:53)

0

6

qewin написал(а):

А , секундочку еще вопрос, почему переменная "строковая" остается на lcd (использую для отладки лсд Nokia1100) а остальные форматы подтираются? Все переменные индивидуальные.

Для LCD глубоко фиолетово, какой тип переменной и как ее назвали... ;)
В контроллер LCD передаются байты, а он их конвертирует в координаты и состояние точек.

Где-то в программе указано "остальные форматы подтирать", а для "строковой" это не делается.
Ищите внимательнее... ;)

0

7

qewin написал(а):

а у меня в программе просто быстро делала возврат из под программы и затирала при обновлении переменные. Все не научусь ставить тайминги

Тайминги тут ни при чем.
Если переменные "затираются", то надо смотреть с другой стороны.
От времени они (переменные) не испортятся, это не колбаса... ;)
Где-то в программе ошибка в логике ее работы.

0

8

qewin написал(а):

Вопрос затык в том что мне стр.знач. нужно перевести в тоже значение только "HEX" или "BIN" , для записи их в модуль времени

А в десятичном формате модуль времени не понимает разве, обязательно Hex или Bin ?
Что за модули такие уникальные ? ;)
При передаче байта хоть последовательно, хоть параллельно - это все равно комбинация "0" и "1"...

0


Вы здесь » Программирование ATMEL в BASCOM. » Связь проводная и бесп-ная, интерфейсы, протоколы » Строковая переменная с преобразованием по UART