формирование пакета
|
|
DimDIk |
Дата: Ср, 18.02.2009, 01:04 | Сообщение # 1 |
Группа:
Пользователи
Ранг:
Начал соображать
Сообщений:
20
Замечания:
±
На сайте с 28.12.2008
Статус:
Offline
|
Недавно начал изучать Proton PicBasic и сейчас возникла необходимость сформировать пакет в 20 байт и отправить его по USART. Может кто подскажет как это сделать? С командами HserIn и HserOut я разобрался, а вот как реализовать сам пакет не знаю.
Сообщение отредактировал
DimDIk - Ср, 18.02.2009, 01:10
|
|
|
|
demanik |
Дата: Ср, 18.02.2009, 10:03 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
448
Замечания:
±
На сайте с 11.12.2007
Статус:
Offline
|
Quote (DimDIk) С командами HserIn и HserOut HSEROUT отправляет пачками 7бит + 1бит четности + стоп бит
Попробуй всё и вся... может быть пол...
|
|
|
|
DimDIk |
Дата: Ср, 18.02.2009, 11:27 | Сообщение # 3 |
Группа:
Пользователи
Ранг:
Начал соображать
Сообщений:
20
Замечания:
±
На сайте с 28.12.2008
Статус:
Offline
|
Так значит пакет в 20 байт отправить нельзя?
|
|
|
|
holyuser |
Дата: Ср, 18.02.2009, 14:04 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
228
Замечания:
±
На сайте с 12.12.2007
Статус:
Offline
|
Можно, конечно, сначала надо эти байты загрузить в массив, а потом через цикл, в теле которого HSEROUT, послать последовательно все элементы массива (байты), куда надо...
|
|
|
|
DimDIk |
Дата: Пт, 20.02.2009, 02:15 | Сообщение # 5 |
Группа:
Пользователи
Ранг:
Начал соображать
Сообщений:
20
Замечания:
±
На сайте с 28.12.2008
Статус:
Offline
|
А как загнать нужные мне байты в массив?
|
|
|
|
holyuser |
Дата: Пт, 20.02.2009, 11:35 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
228
Замечания:
±
На сайте с 12.12.2007
Статус:
Offline
|
Через идентификатор (имя) массива и индекс (место соотв. байта в массиве).
|
|
|
|
DimDIk |
Дата: Вт, 24.02.2009, 15:44 | Сообщение # 7 |
Группа:
Пользователи
Ранг:
Начал соображать
Сообщений:
20
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 28.12.2008
Статус:
Offline
|
Так может кто подскажет,почему при передаче через USART бйтового массива одним пиком на другой,передача проходит а прием - нет!!! Но если его принимать как строковый то тогда массив принимается как надо???
Сообщение отредактировал
DimDIk - Вт, 03.03.2009, 20:20
|
|
|
|
bikirich |
Дата: Вт, 03.03.2009, 22:36 | Сообщение # 11 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
2
Замечания:
±
На сайте с 02.03.2009
Статус:
Offline
|
Прием (как и передача) пакета осуществляется как в 1-м так и во 2-м случае. Нужно поработать со ВРЕМЕНЕМ при приеме. Разница (возможно) в наличии ЦИКЛА при передаче МАССИВА
|
|
|
|
DimDIk |
Дата: Чт, 05.03.2009, 16:01 | Сообщение # 12 |
Группа:
Пользователи
Ранг:
Начал соображать
Сообщений:
20
Замечания:
±
На сайте с 28.12.2008
Статус:
Offline
|
А какие команды в протоне используются для задержки?
|
|
|
|
toommy |
Дата: Ср, 03.06.2009, 18:52 | Сообщение # 13 |
Группа:
Пользователи
Ранг:
Новенький
Сообщений:
13
Замечания:
±
На сайте с 04.11.2008
Статус:
Offline
|
если ти имееш введу паузу то delayms и delayus. delayms измеряетса в милисекундах, а delayus а микросекундах
|
|
|
|
Diaz |
Дата: Вт, 06.10.2015, 14:19 | Сообщение # 14 |
Группа:
Пользователи
Ранг:
Начал соображать
Сообщений:
27
Замечания:
±
На сайте с 10.08.2015
Статус:
Offline
|
HSerOut - может посылать значение n-байтовых переменных типа DWORD, LONG ? тот же вопрос по HSerIn - как он переваривает 2- 3- байтовые данные ? а то я что то совсем этого не пойму
|
|
|
|
MiXaS |
Дата: Вт, 06.10.2015, 18:41 | Сообщение # 15 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
На память не могу сказать может или нет, но переменную можно разбить на байты и передать по байтам, напрмер, А as DWord Hserout [A.byte3, A.byte2,A.byte1, A.byte0] На строне приемника нужно собрать 4 байта в переменную Для этого делаете обратную процедуру А.byte3=...... Как–то так
|
|
|
|