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

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: demanik, ivan_fd  
формирование пакета
DimDIk Дата: Ср, 18.02.2009, 01:04  |                                                                                                                Сообщение # 1
Группа: Пользователи
Ранг:  Начал соображать
Сообщений: 20
Репутация: 0   ±
Замечания:   ±
На сайте с 28.12.2008

Статус: Offline

Недавно начал изучать Proton PicBasic и сейчас возникла необходимость сформировать пакет в 20 байт и отправить его по USART. Может кто подскажет как это сделать? С командами HserIn и HserOut я разобрался, а вот как реализовать сам пакет не знаю.
Сообщение отредактировал DimDIk - Ср, 18.02.2009, 01:10
ЯНДЕКС Дата: 18.02.2009
demanik Дата: Ср, 18.02.2009, 10:03  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 448
Репутация: 10   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

Quote (DimDIk)
С командами HserIn и HserOut

HSEROUT отправляет пачками 7бит + 1бит четности + стоп бит


Попробуй всё и вся... может быть пол...

DimDIk Дата: Ср, 18.02.2009, 11:27  |                                                                                                                Сообщение # 3
Группа: Пользователи
Ранг:  Начал соображать
Сообщений: 20
Репутация: 0   ±
Замечания:   ±
На сайте с 28.12.2008

Статус: Offline

Так значит пакет в 20 байт отправить нельзя?
holyuser Дата: Ср, 18.02.2009, 14:04  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 228
Репутация: 5   ±
Замечания:   ±
На сайте с 12.12.2007

Статус: Offline

Можно, конечно,
сначала надо эти байты загрузить в массив, а потом через цикл, в теле которого HSEROUT,
послать последовательно все элементы массива (байты), куда надо...
DimDIk Дата: Пт, 20.02.2009, 02:15  |                                                                                                                Сообщение # 5
Группа: Пользователи
Ранг:  Начал соображать
Сообщений: 20
Репутация: 0   ±
Замечания:   ±
На сайте с 28.12.2008

Статус: Offline

А как загнать нужные мне байты в массив?
holyuser Дата: Пт, 20.02.2009, 11:35  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 228
Репутация: 5   ±
Замечания:   ±
На сайте с 12.12.2007

Статус: Offline

Через идентификатор (имя) массива и индекс (место соотв. байта в массиве).
DimDIk Дата: Вт, 24.02.2009, 15:44  |                                                                                                                Сообщение # 7
Группа: Пользователи
Ранг:  Начал соображать
Сообщений: 20
Репутация: 0   ±
Замечания:   ±
На сайте с 28.12.2008

Статус: Offline

Я предполагаю, что это должно выглядеть приблизительно вот так:

Device 16F877
Include "PROTON_4.INC"
Dim MYARRAY[15] As Byte
Dim INDEX As Byte
For INDEX = 0 To 15
MYARRAY[INDEX] = INDEX
Next
For INDEX = 0 To 15
Print At 1,1, BIN MYARRAY[INDEX]
DelayMS 500
Next

ProgramStart:
For INDEX = 0 To 15
HSerOut [ BIN ,MYARRAY[INDEX] ]
Next
DelayMS 1000
'GoTo ProgramStart
Stop
Но я не могу понять, передаются номера индексов или то что находится в массиве?
А если я хочу создать массив в 16 элементов и передать их через USART в последовательности типа RANDOM,
то как это сделать?

Yrok Дата: Вт, 24.02.2009, 17:00  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 2   ±
Замечания:   ±
На сайте с 27.09.2007

Статус: Offline

Quote
For INDEX = 0 To 15
MYARRAY[INDEX] = INDEX
Next
--вот здесь ты заполняешь массив и кто же виноват что индекс и содержимое у тебя совпадает --сделай например так MYARRAY[INDEX] = INDEX +5 и тогда увидишь что передается то что находиться в массиве
DimDIk Дата: Вт, 24.02.2009, 17:50  |                                                                                                                Сообщение # 9
Группа: Пользователи
Ранг:  Начал соображать
Сообщений: 20
Репутация: 0   ±
Замечания:   ±
На сайте с 28.12.2008

Статус: Offline

Да,действительно. Спасибо!!
А почему если я предаю этот массив по Usart то на приеме получаю какую-то ерунду?
Вот программа для pic который принимает:
Device 16F877
Include "PROTON_4.INC"
Dim MYARRAY[4] As Byte
Dim Index As Byte
Dim I As Byte
loop:

HSerIn 1000 , Timeout,[MYARRAY[Index]] 'ждём данные из порта

Print BIN MYARRAY[Index]
Timeout:
GoTo loop 'бесконечный цикл

DimDIk Дата: Вт, 03.03.2009, 20:19  |                                                                                                                Сообщение # 10
Группа: Пользователи
Ранг:  Начал соображать
Сообщений: 20
Репутация: 0   ±
Замечания:   ±
На сайте с 28.12.2008

Статус: Offline

Так может кто подскажет,почему при передаче через USART бйтового массива одним пиком на другой,передача проходит а прием - нет!!! Но если его принимать как строковый то тогда массив принимается как надо???
Прикрепления: PIC.bas (0.2 Kb) · Pic.bas (1.8 Kb)

Сообщение отредактировал DimDIk - Вт, 03.03.2009, 20:20
bikirich Дата: Вт, 03.03.2009, 22:36  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Новенький
Сообщений: 2
Репутация: 0   ±
Замечания:   ±
На сайте с 02.03.2009

Статус: Offline

Прием (как и передача) пакета осуществляется как в 1-м так и во 2-м случае. Нужно поработать со ВРЕМЕНЕМ при приеме. Разница (возможно) в наличии ЦИКЛА при передаче МАССИВА wacko
ЯНДЕКС Дата: 03.03.2009
DimDIk Дата: Чт, 05.03.2009, 16:01  |                                                                                                                Сообщение # 12
Группа: Пользователи
Ранг:  Начал соображать
Сообщений: 20
Репутация: 0   ±
Замечания:   ±
На сайте с 28.12.2008

Статус: Offline

А какие команды в протоне используются для задержки?
toommy Дата: Ср, 03.06.2009, 18:52  |                                                                                                                Сообщение # 13
Группа: Пользователи
Ранг:  Новенький
Сообщений: 13
Репутация: 0   ±
Замечания:   ±
На сайте с 04.11.2008

Статус: Offline

если ти имееш введу паузу то delayms и delayus. delayms измеряетса в милисекундах, а delayus а микросекундах
Diaz Дата: Вт, 06.10.2015, 14:19  |                                                                                                                Сообщение # 14
Группа: Пользователи
Ранг:  Начал соображать
Сообщений: 27
Репутация: 0   ±
Замечания:   ±
На сайте с 10.08.2015

Статус: Offline

HSerOut - может посылать значение n-байтовых  переменных  типа DWORD, LONG ?
тот же вопрос по HSerIn - как он переваривает 2- 3- байтовые данные ? а то я что то совсем этого не пойму sad
MiXaS Дата: Вт, 06.10.2015, 18:41  |                                                                                                                Сообщение # 15
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 549
Репутация: 27   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

На память не могу сказать может или нет, но переменную можно разбить на байты и передать по байтам, напрмер, А as DWord
Hserout [A.byte3, A.byte2,A.byte1, A.byte0]
На строне приемника нужно собрать 4 байта в переменную
Для этого делаете обратную процедуру
А.byte3=......
Как–то так
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: