[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: RD3AVJ 
Форум » форумы » Общие вопросы по Bascom-AVR » работа с уарт (как " разбить"пришедшие данные и поместить их в переменные)
работа с уарт
Aleks8383Дата: Пятница, 25.05.2012, 11:04 | Сообщение # 1
Группа: Проверенные
Сообщений: 102

Статус: Offline
Подскажите как разбить данные приходящие на Уарт и забить их в переменные для дальнейшей работы с ними.На приведённых картинках видно что в контроллер приходит челая строка с данными ,а нужно из этого отсеять номер команды и подкоманды и естественно само значения этой команды(ВСD код).Интересует как именно отделить их и забить в переменные.Мне тут подказывали что нужно использовать inputbin но чтото толкового из этого не чего не получилось,как правельно работать с этой командой или как по другому можно разобрать данные подскажите п.ж.если несложно с кусочком кода.
Зараннее спасибо.
Прикрепления: 6303741.png(93Kb) · 4857890.png(66Kb)


 
kip96Дата: Пятница, 25.05.2012, 19:28 | Сообщение # 2
Группа: Свой человек
Сообщений: 166

Статус: Offline
Code
  $baud = 9600
$lib "lcd4.lbx"
Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7
Config Portd.6 = Output
Set Portd.6
Config Lcd = 16 * 1a                    'используем дисплей на 1 строчки по 16 знакомест в каждой
Dim A(3) As Byte , B(10) As Byte
Do
Cls                    'команда очистки дисплея

Lcd "CB" ; Chr(199) ; "3b"                    'слово "связь"
Printbin &H02 ; A(1)
Delay

$timeout = 100000                    '  таймаут на приём информации
Inputbin B(1)                    '   принимаем и загружаем всё в "B" с первого по десятый
                    '
If B(3) = &H06 Then                    '  если ответ(&H06) положительгый то
Cls                    '
Lcd "Per.N " ; Bcd(b(5))
Lowerline                    '  выводим каждый бит на экран
Lcd Bcd(b(6)) ; Bcd(b(7)) ; Bcd(b(8)) ; Bcd(b(9))           '
Wait 10                    ' ждём 10 сек
End If                    'если ответ
Loop

Код не весь, но для Вас должно быть понятно.


 
trimДата: Суббота, 21.07.2012, 23:46 | Сообщение # 3
Группа: Пользователи
Сообщений: 105

Статус: Offline
а по падробнее

 
kip96Дата: Воскресенье, 22.07.2012, 13:14 | Сообщение # 4
Группа: Свой человек
Сообщений: 166

Статус: Offline
Что конкретно не понятно?

 
trimДата: Воскресенье, 22.07.2012, 13:40 | Сообщение # 5
Группа: Пользователи
Сообщений: 105

Статус: Offline
как ввести правильно несколько переменных и есть ли возможность реридачи более сложных файлов типа картинка видео

 
trimДата: Воскресенье, 22.07.2012, 14:06 | Сообщение # 6
Группа: Пользователи
Сообщений: 105

Статус: Offline
я вещь одну запустил лсд от сименса вот раскручиваю возможности
неудобно каждый раз программировать долго почему то


 
trimДата: Воскресенье, 22.07.2012, 15:25 | Сообщение # 7
Группа: Пользователи
Сообщений: 105

Статус: Offline
Кто мне скажет
кто подскажет что не верно
что не так в чем зарыт
здесь злой касяк

$regfile = "m128def.dat"
$crystal = 8000000
$hwstack = 1028
$swstack = 1028
$framesize = 1028
$baud = 9600

'$lib "LCD-EPSONmy.LIB"
'$lib "lcd-pcf8833my.lib" 'Nokia 6100 color display support только почему-то зеркально отображает
$lib "LCD-SIEMENS_S65_LS020_256_W1.LBX" 'Siemens S65 LS020 color display support
'$lib "LCD-EPSON_L2F50.LIB" 'Siemens S65 L2F50 color display support

Config Graphlcd = Color , Controlport = Portb , Cs = 0 , Rs = 7 , Scl = 1 , Sda = 2 , Reset = 6
Dim A(3) As Byte
Dim B(16) As Byte
Enable Interrupts
Enable Urxc1

Do
Cls 'команда очистки дисплея

Lcd "CB" ; Chr(199) ; "3b" 'слово "связь"
Printbin &H02 ; A(1)
Delay

$timeout = 100000 ' таймаут на приём информации
Inputbin B(1) ' принимаем и загружаем всё в "B" с первого по десятый
'
If B(3) = &H06 Then ' если ответ(&H06) положительгый то
Cls '
Lcd "Per.N " ; Bcd(b(5))
Lowerline ' выводим каждый бит на экран
Lcd Bcd(b(6)) ; Bcd(b(7)) ; Bcd(b(8)) ; Bcd(b(9)) '
Wait 10 ' ждём 10 сек
End If 'если ответ
Loop

пишет лэбл нот фаунд _LCD_CONTROL
Я ПОКА НЕ ПРОШАРИЛ как это работает но что то где то на
окраинах своего интеллекта существует понимание
данного алгоритма нужна озвучка чьято помощ


 
trimДата: Воскресенье, 22.07.2012, 15:27 | Сообщение # 8
Группа: Пользователи
Сообщений: 105

Статус: Offline
и это алекс я про постоянное торчание в инете ,хотелось бы майломи обменяться так сказать для помощи онлайн а то времени не так много а жесть как хочется побыстрее освоить эту науку и творить творить творить если вы не против

 
Aleks8383Дата: Воскресенье, 22.07.2012, 20:03 | Сообщение # 9
Группа: Проверенные
Сообщений: 102

Статус: Offline
Aleks8383-83@mail.ru Пиши если что.

 
trimДата: Понедельник, 23.07.2012, 00:21 | Сообщение # 10
Группа: Пользователи
Сообщений: 105

Статус: Offline
я так понял что в приложении программка которая разлогает изображение на бинарный код может этот код сохранять в тхт файл и думается мне вот его то и нужно как то впихнуть в уарт у кого какие мысли будут

 
exersizzeДата: Понедельник, 23.07.2012, 13:31 | Сообщение # 11
Группа: Администраторы
Сообщений: 718

Статус: Offline
Думаю стоит сперва разобраться с простейшего вида алгоритмами и командами, а потом само-собой все ясно станет.

 
trimДата: Понедельник, 23.07.2012, 17:38 | Сообщение # 12
Группа: Пользователи
Сообщений: 105

Статус: Offline
это я понимаю мне просто нужен конкретный пример и все дальше я сам .почти .как картинку можно вывести по байтно ?

 
shermanДата: Понедельник, 23.07.2012, 22:23 | Сообщение # 13
Группа: Свой человек
Сообщений: 55

Статус: Offline
Посмотри как выводится картинка из примера по работе с диспами от нокии3310, там как раз-таки выводится побайтно.

 
trimДата: Вторник, 24.07.2012, 00:36 | Сообщение # 14
Группа: Пользователи
Сообщений: 105

Статус: Offline
да спасибо я смотрел но чот недошло ладно еще копать буду

 
ut3mkДата: Понедельник, 30.07.2012, 14:40 | Сообщение # 15
Группа: Пользователи
Сообщений: 1

Статус: Offline
Aleks8383,

Обрати внимание на команды MID, Right, LEFT, VAL, STR

www.ut3mk.at.ua
Прикрепления: Bas.doc(12Kb)




Сообщение отредактировал ut3mk - Понедельник, 30.07.2012, 14:53
 
trimДата: Понедельник, 30.07.2012, 17:41 | Сообщение # 16
Группа: Пользователи
Сообщений: 105

Статус: Offline
привет, а что значит возвращает ? кому, куда

Left Возвращает несколько символов с начала строки.

Dim Instring as String*13
Dim Leftstring as String*3
Dim Pval as Integer
Instring = "Bascom Cursus"
Pval = 3
Leftstring = Left(Instring, Pval)
'Leftstring = "Bas"

как этим пользоваться
это работа как я понимаю с пришедшими данными ? хоть откуда ,датчики ,энкодер ,в том числе и уарт ?




Сообщение отредактировал trim - Понедельник, 30.07.2012, 17:43
 
shermanДата: Понедельник, 30.07.2012, 19:20 | Сообщение # 17
Группа: Свой человек
Сообщений: 55

Статус: Offline
Вот видишь что получилось в переменной Leftstring после команды Left? Туда возвратилось 3 левых символа из пеерменной Instring.
Очень удобные команды при работе со строковыми переменными.


 
trimДата: Понедельник, 30.07.2012, 22:45 | Сообщение # 18
Группа: Пользователи
Сообщений: 105

Статус: Offline
ага понял спасибо

 
ssqlДата: Пятница, 06.11.2015, 16:55 | Сообщение # 19
Группа: Проверенные
Сообщений: 7

Статус: Offline
Приветствую!
У меня задача: приходит по юарт пакет 42 байта, мне надо взять 26-й и записать в переменную..
Сложность как принять и как отделить..
Подскажите примером или советом)

Пример пакетов:
AA 00 55 00 4E 57 2B 20 44 41 44 20 34 20 20 20
20 20 20 20 11 8C FF FF 0F 2C 07 06 81 00 5F 55
00 2A 13 22 04 07 0C 00 7A 08 AA 00 55 00 4E 57
2B 20 44 41 44 20 34 20 20 20 20 20 20 20 11 8C
FF FF 0F 2C 07 06 81 00 5F 55 00 2A 13 22 04 07
0C 00 7A 08 AA 00 55 00 4E 57 2B 20 44 41 44 20
34 20 20 20 20 20 20 20 11 8C FF FF 0F 2C 07 06
81 00 5F 55 00 2A 13 22 04 07 0C 00 7A 08 AA 00
55 00 4E 57 2B 20 44 41 44 20 34 20 20 20 20 20
20 20 11 8C FF FF 0F 2C 07 06 81 00 5F 55 00 2A




Сообщение отредактировал ssql - Пятница, 06.11.2015, 16:56
 
Форум » форумы » Общие вопросы по Bascom-AVR » работа с уарт (как " разбить"пришедшие данные и поместить их в переменные)
Страница 1 из 11
Поиск: