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

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

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

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


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


Отправка через uart при обновлении данных

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

1

Приветствую! Только начал изучать баском,поэтому прошу не сильно бить. Написал вот такой код,как сделать так чтоб переменная В отправлялась только при изменении?

Код:
$regfile = "2313def.dat"
$crystal = 18432000
$hwstack = 32
$swstack = 8
$framesize = 32

Config Pind.3 = Input
Config Pind.4 = Input

Dim A As String * 3
Dim B As Long

B = 1000000

Open "comb.7:19200,8,n,1" For Output As #1
Open "comb.6:19200,8,n,1" For Input As #2

Do

If Pind.3 = 0 Then
B = B + 1000
End If

If Pind.4 = 0 Then
B = B - 1000
End If


Print #1 , B

Loop

End

0

2

Код:
Dim B As Long
Dim M As Long


B = 1000000
M = 0

Open "comb.7:19200,8,n,1" For Output As #1
Open "comb.6:19200,8,n,1" For Input As #2

Do

If Pind.3 = 0 Then
B = B + 1000
End If

If Pind.4 = 0 Then
B = B - 1000
End If


IF M <> B THEN
      Print #1 , B
      M = B
End If

Loop

End

как-то так идея

Отредактировано RDW (2011-12-13 11:29:03)

0

3

Спасибо огромное! Еще один вопрос возник когда я нажимаю на кнопку,то передается не одно значение,а несколько примерно так:
1001000
1002000
1003000
1004000
1005000
1006000

Как от этого можно избавиться?

0

4

Так правильно, значения же меняются от нажатия кнопок.
Логика отсутствует или я её не понимаю, вам выводятся значения только новые, если не хотите чтобы что-то выводилось - то не выводите.  8-)
Какие условия вывода должны быть?

0

5

Условия вывода только при изменении числа.

0

6

У вас число меняется? - Меняется.
Данные по изменению выводятся? - Выводятся.
Что не так?
Если у вас есть управление и сбор данных (откуда либо), то их нужно разделять.

0

7

Например: в "В" храните приходящие значения, а скажем в "С" значение кнопок.

0

8

Правда можно ещё так сделать:

Код:
Dim B As Long
Dim M As Long


B = 1000000
M = 0

Open "comb.7:19200,8,n,1" For Output As #1
Open "comb.6:19200,8,n,1" For Input As #2

Do

If Pind.3 = 0 Then
B = B + 1000
M = B
End If

If Pind.4 = 0 Then
B = B - 1000
M = B
End If


IF M <> B THEN
      Print #1 , B
      M = B
End If

Loop

End

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

0

9

Спасибо разобрался!!! :canthearyou:

0

10

Не подскажете еще как несколько переменных типа byte объединить вместе в одну строку?

0

11

Не правильно выразился,переформулирую. Как перевести переменную типа Integer в тип Byte?

0

12

Разные системы счисления, всё зависит от того, что: входит и что выходит; нужен ли знак... в инете есть примеры и идеи для реализации.

0

13

Integer в Byte.

Dim A as Integer
Dim B as Byte
Dim C as Byte

A=&HAA55
B=HIGH(A)  'B=&HAA
C=LOW(A)   'C=&H55

Вместо 16-тиричных чисел можно использовать любые.

Объединить 2 байта в Integer

A = MAKEINT(C ,B)

Отредактировано sva-don (2011-12-13 19:42:40)

0

14

Спасибо огромное!

0

15

Столкнулся еще с одной проблемой использую программный uart для получения данных,как реализовать алгоритм если по Input #2 в течении 500мс ничего не поступило то сразу Gosub?

0

16

У софтового приёма есть один недостаток, нельзя определить данных нет или данные 0. Соответственно, если в данных нет нуля, то можно на этой основе сделать алгоритм.

0


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