| Модуль Console | 
| 
				
			 | 
| 
| уни | Дата: Воскресенье, 27.10.2013, 01:28 | Сообщение # 1 |  | Группа: Проверенные Сообщений: 16 
 Статус: Offline | Пример работы с ANSI-терминалом ZOC/Pro 5.07 или PuTTY: https://mysvn.ru/avr/examples/ansibas/ Экспортировать к себе при помощи плагина к проводнику TortoiseSVN: http://tortoisesvn.net/downloads.html
 
 Список доступных функций можно посмотреть тут: https://mysvn.ru/avr/examples/ansibas/Console_Header.bas
 Функции будут постепенно дополняться.
 
 Схема в Proteus приложена. Для отладки рекомендую использовать Proteus 7.7 SP2 + Virtual Serial Ports Driver XP 4.0 + ZOC/Pro 5.07. Всё искать на рутрекере.
 
 ANSI-терминал поддерживает работу с цветами, курсором и экраном, вы можете рисовать в псевдографике CP866. Иными словами, используя команды терминала, можно создать свой собственный псевдографический интерфейс.
 
 
     
 
   
 
 
 
 Сообщение отредактировал уни - Понедельник, 28.10.2013, 01:44 |  
 |  |  |  | 
| 
| top | Дата: Воскресенье, 27.10.2013, 12:51 | Сообщение # 2 |  |   Группа: Друзья Сообщений: 146 
 Статус: Offline | Кажется мне что это дико интересная вешь! Но я ничегоне понял. Как, что и зачем? 
 
 |  
 |  |  |  | 
| 
| уни | Дата: Воскресенье, 27.10.2013, 14:01 | Сообщение # 3 |  | Группа: Проверенные Сообщений: 16 
 Статус: Offline | Обновил исходники: - добавлена работа с RTC DS1307 через TWI;
 - небольшие правки кода.
 
 Этот модуль может пригодиться в нескольких случаях:
 
 1) Обучение программированию на bascom avr. Вы можете при помощи Proteus и ANSI-терминала делать наглядные иллюстрации работы кода (см. пример выше с часиками DS1307).
 
 2) Наглядная отладка с выводом в терминал. У меня виртуальный проект работает на скорости USART 57600. Этого достаточно, чтобы не было каких-то сильных миганий при выводе псевдографики. Если же это делать в железе, то будет ещё быстрее.
 
 Здесь нужно подключать воображение. Этот код переписан из другого моего проекта на C++ для AVR, где я при помощи аналогичного модуля написал простой панельный файловый менеджер на ATmega16, который работает в флешкой. На бейсике это тоже возможно, но код будет занимать гораздо больше места.
 
 Нужно только понимать, что модуль предназначен для работы с ANSI-терминалами, такими как ZOC/Pro или PuTTY, которые умеют работать и понимают ESC-последовательности. Это такие команды для терминала, позволяющие управлять текстовым изображением на стороне терминала.
 
 Можно выводить текст в любое место окна, любым цветом и фоном (даже мигающим). Можно рисовать рамки, можно двигать курсор как в абсолютных так и в относительных координатах, запоминать и восстанавливать его состояние. Можно очищать строку и экран одной командой с разными параметрами.
 
 Код пока не оптимизирован и занимает около 7 КБайт флеша. Я не большой специалист по бейсику, написал пока, чтобы вообще работало.
 
 
 |  
 |  |  |  | 
| 
| top | Дата: Воскресенье, 27.10.2013, 14:47 | Сообщение # 4 |  |   Группа: Друзья Сообщений: 146 
 Статус: Offline | Мммм, очень заманчиво. Сам сталкивался с написанием интерефейса через простой UART, действительно жрет очень много флэша.Цитата уни (  ) На бейсике это тоже возможно, но код будет занимать гораздо больше места.
 
 |  
 |  |  |  | 
| 
| уни | Дата: Воскресенье, 27.10.2013, 20:25 | Сообщение # 5 |  | Группа: Проверенные Сообщений: 16 
 Статус: Offline | Изменил структуру проекта. Добавил код для просмотра состояния ОЗУ. На картинке можно видеть, что дамп ОЗУ в терминале совпадает с тем же окошком в Proteus. Таким же макаром можно дампить EEPROM и FLASH. 
 
   
 
 |  
 |  |  |  | 
| 
| AlekS | Дата: Воскресенье, 27.10.2013, 21:58 | Сообщение # 6 |  | Группа: Проверенные Сообщений: 247 
 Статус: Offline | уни,  извини, но так и не понял, а зачем это все надо? Так же все можно вывести на терминалку? конкретней , на примере..)   
 
 |  
 |  |  |  | 
| 
| уни | Дата: Воскресенье, 27.10.2013, 22:14 | Сообщение # 7 |  | Группа: Проверенные Сообщений: 16 
 Статус: Offline | Ну, например, наглядно показывать состояние пинов портов. 
 
   
 Можно добавить функционал, чтобы клавишами стрелками перемещаться по выводам и Пробелом, к примеру, изменять состояние конкретного вывода. Можно сделать оконный интерфейс для удобной настройки прошивки прямо в окне терминала. Можно сделать оконное меню с выбором из списка с иерархией. Можно в цвете показывать выполнение операций как в юниксе, где OK - зелёный, а Error - красный.
 
 Смысл в том, что нам не нужно в ОЗУ держать копию экрана терминала, т.к. в мк это всё просто не влезет. Мы динамически формируем информацию в окне терминала, но более продвинутым способом, чем простой командный интерфейс. Можно сделать интерфейс, который будет изменять состояние своих частей с разной периодичностью. К примеру, есть 30 дискретных датчиков и нужно в терминале посмотреть их состояние. Рисуем 30 квадратиков с разными цветами и обновляем цвета с какой-то периодичностью.
 
 
 |  
 |  |  |  | 
| 
| уни | Дата: Понедельник, 28.10.2013, 02:30 | Сообщение # 8 |  | Группа: Проверенные Сообщений: 16 
 Статус: Offline | Обновил исходники. Код модуля Console существенно оптимизирован, размер уменьшился на пару килобайт. Теперь можно что-то ваять и на ATmega16. 
 
 |  
 |  |  |  | 
| 
| уни | Дата: Понедельник, 28.10.2013, 12:43 | Сообщение # 9 |  | Группа: Проверенные Сообщений: 16 
 Статус: Offline | По поводу размера модуля Console. Без некоторых жирных и не очень нужных функций у меня получилось вместить его в ATtiny2313 под завязку: https://mysvn.ru/avr/examples/tinycmd/bascom/ 
 Проект компилируется и в Proteus показывает адекватное поведение, но выходной поток символов где-то прореживается. Пока не понял где, грешу на начальные настройки проекта.
 
 В общем и целом можно сказать, что модуль Console требует от 2 Kбайт флеша. Те же функции на C++ позволили мне уместить их в tiny2313 полностью, даже ещё на 30 команд места осталось.
 
 
 |  
 |  |  |  | 
| 
| AlekS | Дата: Понедельник, 28.10.2013, 17:13 | Сообщение # 10 |  | Группа: Проверенные Сообщений: 247 
 Статус: Offline | уни, спасибо, все теперь стало ясно.) 
 
 |  
 |  |  |  | 
| 
| уни | Дата: Среда, 30.10.2013, 17:37 | Сообщение # 11 |  | Группа: Проверенные Сообщений: 16 
 Статус: Offline | Изменил структуру проекта и перешёл на Visual Studio 2008. Хоть подсветка и не совсем в тему, но всё остальное полне помогает вести разработку на Bascom AVR более удобно, чем в стандартной среде. Пришлось немного поколдовать и написать несколько скриптов, чтобы можно было компилировать проект прямо из Студии. 
 Все данные теперь буду сохранять прямо внутри функций, имеются в виду те, которые заданы при помощи DATA. Очень неудобно при делении проекта на модули располагать данные после ключевого слова END. Это нарушает локализованность объектов. Я обошёл эту проблему для байтовых массивов таким способом:
 
 
 Код ' Вывод символа из ОЗУ. Sub Console_PutChar( ByVal AChar As Byte, ByVal ACodePage As Byte )
 
 select case ACodePage
 
 case cp866:
 
 case cp1251:
 
 if AChar.7 = 1 then
 
 AChar = AChar AND &H7F
 AChar = Lookup( AChar, CP1251_TO_CP866 )
 
 end if
 
 end select
 
 ' Выводим символ, который соответствует кодовой таблице CP866.
 PrintBin AChar
 
 Exit Sub
 
 CP1251_TO_CP866:
 
 $ASM
 .DB &H20,&H20,&H2C,&H20,&H20,&H20,&H20,&H20,&H20,&H20,&H20,&H3C,&H20,&H20,&H20,&H20
 .DB &H20,&H27,&H27,&H22,&H22,&HF9,&H2D,&H2D,&H20,&H20,&H20,&H3E,&H20,&H20,&H20,&H20
 .DB &HFF,&H20,&H20,&H6A,&H20,&H20,&H7C,&H20,&HF0,&H20,&H20,&H22,&H20,&H20,&H20,&H20
 .DB &HF8,&H20,&H49,&H69,&H20,&H20,&H20,&HFA,&HF1,&H23,&H20,&H22,&H6A,&H53,&H73,&H20
 .DB &H80,&H81,&H82,&H83,&H84,&H85,&H86,&H87,&H88,&H89,&H8A,&H8B,&H8C,&H8D,&H8E,&H8F
 .DB &H90,&H91,&H92,&H93,&H94,&H95,&H96,&H97,&H98,&H99,&H9A,&H9B,&H9C,&H9D,&H9E,&H9F
 .DB &HA0,&HA1,&HA2,&HA3,&HA4,&HA5,&HA6,&HA7,&HA8,&HA9,&HAA,&HAB,&HAC,&HAD,&HAE,&HAF
 .DB &HE0,&HE1,&HE2,&HE3,&HE4,&HE5,&HE6,&HE7,&HE8,&HE9,&HEA,&HEB,&HEC,&HED,&HEE,&HEF
 $END ASM
 
 End Sub
 При помощи ассемблерной вставки мы можем располагать данные прямо внутри тела функции, не забывая при этом перепрыгивать их (Exit Sub). К сожалению, это не работает со строками. Директива .DB их не понимает.
 
 Теперь в основном файле модули подключаются обычным для других систем способом - просто их перечисляем. Тут может возникнуть проблема, если точка входа окажется в одном из модулей. Чтобы это обойти, указываем точку входа самостоятельно таким образом:
 
 Код ' -=[ Переменные в ОЗУ ]=- 
 Dim Key As Byte
 Dim Caption As String * 46
 
 ' Точка входа в основную программу.
 Declare Sub Main : Main : End
 
 ' /***********************
 ' *  Д Е К Л А Р А Ц И Я
 ' *  ~~~~~~~~~~~~~~~~~~~
 ' ***********************/
 
 Declare Sub ShowPinStates
 Declare Sub PutByte( ByVal Addr As Word, ByVal AValue As Byte )
 Declare Function GetByte( ByVal Addr As Word ) As Byte
 
 ' Подключаем заголовочные файлы модулей.
 $include "Config_Header.bas"
 $include "Version_Header.bas"
 $include "Delays_Header.bas"
 $include "RTC_Header.bas"
 $include "Console_Header.bas"
 $include "CommandShell_Header.bas"
 $include "MemoryViewer_Header.bas"
 $include "MCU_Header.bas"
Сама же Main может располагаться где угодно далее.
 
 
   
 
 
 
 Сообщение отредактировал уни - Четверг, 31.10.2013, 03:25 |  
 |  |  |  | 
| 
| уни | Дата: Четверг, 31.10.2013, 21:48 | Сообщение # 12 |  | Группа: Проверенные Сообщений: 16 
 Статус: Offline | Обновил и доработал программки, теперь они находятся немного по другому адресу: https://mysvn.ru/avr/bascom/ Это svn репозиторий, поэтому скачивать указанным выше клиентом.
 
 
 |  
 |  |  |  | 
| 
| 123ksn | Дата: Понедельник, 25.11.2013, 03:29 | Сообщение # 13 |  | Группа: Пользователи Сообщений: 1 
 Статус: Offline | Всем доброго времени суток. Уважаемый уни, есть такое выражение: "Умела баба приготовить, да не умела подать". Вы используете много умных и наверняка правильных слов, но толку от них ноль, если многие не понимают суть Вашей разработки. Вы пишите: И что? Это что б быстрее бродить по интернету? Опишите задачу "на пальцах", покажите не действо, а конечную цель, в которой применение Вашей разработки будет интересно.Цитата уни (  ) ANSI-терминал поддерживает работу с цветами, курсором и экраном, вы можете рисовать в псевдографике CP866. Иными словами, используя команды терминала, можно создать свой собственный псевдографический интерфейс.Посмотрел на Ваши ссылки. Объясните мне, непутевому, какую мне пользу принесет указанный Вами плагин? Ах, я смогу в каком-то удобном для Вас виде посмотреть Ваши материалы. Извините, не убедительно. На вкус и цвет товарищей нет. Опишите по-русски нафиг всё о чем Вы пишите и предлагаете надо? Может цены нет Вашим материалам, а я глупец не понимаю. И вижу, что другие тоже. Прошу без обид. Просто очень хочется понимать человека, который говорит по-русски. А то слова по отдельности понятны, а вместе смысла не видно.
 
 
 |  
 |  |  |  | 
| 
| уни | Дата: Воскресенье, 22.12.2013, 15:31 | Сообщение # 14 |  | Группа: Проверенные Сообщений: 16 
 Статус: Offline | Когда хочется кушать, то не важно что как подано. Если вы что-то не понимаете, то не пришло время ещё, не оголодали. Более полные инструкции по использованию компилятора bascomp можно найти тут:  http://bascomavr.3bb.ru/viewtopic.php?id=1041 и http://bascomavr.3bb.ru/viewtopic.php?id=1050 Там народ тоже долго не понимал что к чему. Я попытался объяснить более доходчиво.
 
 Всё это и многое другое позволяет работать на бейсике более профессионально, по аналогии с другими средами разработки. Плохо, когда есть всего один инструмент и нет выбора.
 
 
 
 
 Сообщение отредактировал уни - Воскресенье, 22.12.2013, 15:33 |  
 |  |  |  | 
| 
| selevo | Дата: Вторник, 21.02.2017, 16:41 | Сообщение # 15 |  |   Группа: Пользователи Сообщений: 3 
 Статус: Offline | классная штука хочу  такой терминал на  lcd nokia1202
   
 
 |  
 |  |  |  | 
| 
| Trikon | Дата: Суббота, 04.03.2017, 22:52 | Сообщение # 16 |  |   Группа: Проверенные Сообщений: 6 
 Статус: Offline | Увы это из совсем другой оперы. Только терминал только хардкор.Цитата selevo (  )  хочу  такой терминал на  lcd nokia1202
 
 |  
 |  |  |  | 
| 
| christian | Дата: Суббота, 22.04.2017, 20:21 | Сообщение # 17 |  |   Группа: Пользователи Сообщений: 4 
 Статус: Offline | Можно найти код С? 
 
 |  
 |  |  |  |