
Последние записи
- Проверка на шестнадцатеричный формат записи
- Отдать пользователю файл с помощью file_get_contents()
- Написать собственую функцию operator[] для битов
- Проблема с движением 2D человека
- OpenGl.Создание винтовой лестницы
- Склеить несколько файлов в один
- Windows 10 сменить администратора
- Рандомное слайдшоу
- Событие для произвольной области внутри TImage
- Удаление папки с файлами

Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk

Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
26th
Авг
Библиотека файловой системы AT45DB161
При разработке микроконтроллерных устройств с внешней памятью типа AT45DBxx приходится сталкиваться с ситуацией, когда блоки данных (файлы) записываются редко, обычно при обновлении ПО устройства, а иногда вообще только один раз — при изготовлении устройства. В таких случаях нет необходимости в использовании файловой системы дискового типа, таких как FAT…
Вячеслав Мовила
http://movilavn.narod.ru
родился 28 июля 1957 г.р., инженер. Интересы: фантастика, читаю много и с увлечением, имею неплохую библиотеку — собирал много лет. Шахматы, к сожалению сейчас не хватает времени. Но самое страстное увлечение и работа — это программирование, основной язык C++, а также, естественно Assembler, Pascal. WEB-программирование, создание динамических, интерактивных сайтов с использованием JavaScript, Java, PHP, MySQL. Базы данных, работа с CASE-средствами разработки информационным систем. Cхемотехника микропроцессорных и микроконтроллерных систем, программирование микроконтроллеров и DSP.
Проще и эффективнее использовать файловую систему последовательного доступа, наподобие ленточной. При этом файлы вместо названия имеют только индексы – последовательный номер файла на устройстве. Данные файла при записи записываются в конец свободного адресного пространства устройства, в этом случае при закрытии файла ему назначается уникальный номер (индекс). Доступ к файлу при чтении происходит по его индексу. На устройстве может находится не более 62 записанных файлов. Рассматриваемая библиотека организует такую файловую систему для микросхемы AT45DB161, порт CodeVision. Листинги библиотеки подробно прокомментированы [1…3]. Так, что при желании не потребуется больших усилий для портирования на другой компилятор и для внесения изменений с целью применения для другого типа микросхем серии AT45DBxx.
Краткое описание AT45DB161
AT45DB161 (см. рис.1) — является Flash памятью с последовательным интерфейсом, и идеально подходит для широкого спектра цифровых голосовых приложений, приложений визуализации, и приложений хранения программного кода и данных. 17 301 504 бит памяти данной ИС организованы в 4096 страниц по 528 байт каждая. Кроме памяти общего назначения ИС, также, имеет два SRAM буфера данных по 528 байт. Буферы обеспечивают возможность приема данных в режиме перепрограммирования страницы основной памяти, или считывание, или запись непрерывных потоков данных. Режим эмуляции EEPROM (с побитным или побайтным изменением) прост в применении, благодаря встроенной, трехступенчатой системе команд Read — Modify — Write. В отличие от стандартных типов Flash памяти, обращение к которым, происходит произвольным образом в режиме многочисленных адресных строк и при помощи параллельного интерфейса, память типа DataFlash использует последовательный интерфейс для обращения к своим данным в режиме последовательного доступа. ИС поддерживает SPI — режимы типа 0 и 3. Простой последовательный интерфейс облегчает разводку платы, увеличивает отказоустойчивость системы, минимизирует коммутационные шумы, а также, уменьшает размер корпуса и число необходимых активных выводов. ИС оптимизирована для использования в широком круге коммерческих и индустриальных приложений, для которых существенную роль играют высокая плотность размещения, малое число выводов, низкое напряжение питания, и низкое энергопотребление. ИС функционирует с тактовыми частотами, вплоть до 20 МГц при типовом потребляемом токе в режиме активного чтения 4 мА.
Рис. 1. Распиновка ИМС
Предпосылки выбора
Для обеспечения удобства внутрисистемного перепрограммирования, ИС AT45DB161 не требует высоких входных напряжений в режиме программирования. ИС питается от однополярного источника с напряжением от 2.5 В до 3.6 В, или от 2.7 В до 3.6 В, как в режиме программирования, так и в режиме чтения. Выборка ИС AT45DB161 производится по входу CS (активный низкий), а доступ к ИС обеспечивается посредством 3-х проводного последовательного интерфейса, состоящего из сигнала последовательного входа SI, последовательного выхода SO и последовательного тактового сигнала SCK (см. таблицу):
Таблица. Расшифровка сигналов ИМС
Все циклы программирования имеют встроенный контроль временных характеристик, а для проведения программирования предварительный цикл стирания не требуется. При поставке ИС от Atmel, старшая значащая страница массива памяти может не быть чистой. Другими словами, содержимое последней страницы может быть заполнено содержимым, отличным от FFH.
Отличительные особенности
- Однополярное напряжение питания от 2.5 В до 3.6 В, или от 2.7 В до 3.6 В
- Совместимость с последовательным периферийным интерфейсом типа SPI
- Максимальная тактовая частота 20 МГц
- Постраничный режим программирования:
- Одиночный цикл перепрограммирования (стирание плюс программирование)
- 4096 страниц основной памяти (528 байт на страницу)
- Поддержка страничного и блочного режимов стирания
- Два 528-ми байтных буфера данных SRAM, обеспечивающих прием данных в режиме перепрограммирования энергонезависимой памяти
- Поддержка режима непрерывного считывания полного массива данных
- Идеально для приложений теневого дублирования кода
- Низкое энергопотребление:
4 мА — типичный ток в режиме активного чтения
2 мкА — типичный потребляемый ток в режиме ожидания - Аппаратная функция защиты данных
- Входы сигналов SI, SCK, CS (активный низкий), RESET (активный низкий) и WP (активный низкий) устойчивы к логическим уровням 5 В
- Коммерческий и индустриальный диапазоны температур
Схема подключения
Рис. 2. Схема электрическая принципиальная тестового модуля считывания данных
Несмотря на то, что напряжение питания микросхемы AT45DB161 указано от 2.7 до 3.6 В, микросхема нормально работает при напряжении 5 В. В реальном проекте – используется питание 3 В. Поэтому подключил AT45DB161 на свою макетницу с микроконтроллером ATMega162 с 5-ти вольтовым питанием. Все тесты прошли исключительно хорошо: от самых простых до более сложных – воспроизведение звука с использованием ШИМ- модуляции. Микросхема AT45DB161 использовалась в корпусе SOIC, в котором отсутствует отдельный вывод BYSE, что видно на схеме принципиальной (см. рисунок 2) и было учтено при написании библиотеки.
Структура файловой системы
Первая страница (528 байт) отводится для хранения системной информации о файловой структуре устройства.
Первые 11 байт — это строка *AT45DB161#. Строка является идентификационной записью, которая показывает, что устройство отформатировано и готово к работе. В 12-ом байте содержится число, показывающее количество файлов на устройстве.
Далее идут 8-ми байтовые структуры, выполняющие функцию описателей файлов:
- в первых 2-х байтах адрес 1-ой страницы файла
- следующие 2 байта содержат количество страниц в файле
- последние 4 байта структуры — размер файла в байтах
Функции библиотеки
1. Инициализация файловой системы AT45DB161. unsigned char InitialFlash();
Возвращает значения:
0 — инициализировано.
1 — устройство отсутствует в системе.
2 — устройство не форматировано.
* Комментарий автора.
Внимание! При 6 В быстро выгорает, по крайней мере так было у меня.
2. Форматирование файловой системы AT45DB161 void FormatFlash();
3. Закрыть файл void CloseFile();
4. Открыть файл unsigned char OpenFile(char mode, unsigned char nfile);
Параметр mode:
r — Открыть файл в режиме чтения.
w — Открыть файл в режиме записи.
Параметр nfile:
В режиме чтения указывает индекс (номер) файла. В режиме записи не имеет значения, следует указать 0.
Возвращает значения:
0 — ошибка при открытии файла.
N(1…62) — индекс успешно открытого файла..
После успешного открытия файла будут доступны глобальные переменные статуса файла:
код:
/*
0 — Файл закрыт
1 — Файл открыт в режиме записи
2 — Файл открыт в режиме чтения
*/
unsigned char at45_file_mode = 0;
// Счетчик страниц при записи
unsigned int at45_cpwrite = 0;
// Номер текущей страницы
unsigned int at45_npage = 0;
// Индекс открытого файла
unsigned char at45_currfile = 0;
// Размер открытого файла/счетчик байт откр. файла при записи
unsigned long at45_cbfile = 0;
// Счетчик байт открытого файла при чтении
unsigned long at45_countb = 0;
// К-во страниц в файле
unsigned int at45_kpage = 0;
// Счетчик байт записанных/считанных в/из буфер
unsigned int at45_buffer_counter = 0;
5. Считать из файла count байт в буфер dest unsigned int ReadFile(char * dest, unsigned int count);
dest — Указатель на буфер чтения.
count — Количество байт для считывания.
Возвращает значения:
N — количество считанных байт.
6. Записать в файл count байт из буфера source. unsigned int WriteFile(char * source, unsigned int count);
source — Указатель на буфер записи.
count — Количество байт для записи.
7. Читать файл побайтно unsigned char ReadByte(unsigned char * flag);
flag — Указатель на переменную типа unsigned char. При чтении первого байта должен из вызывающей функции установлен в 0. При успешном чтении байта внутри функции ReadByte устанавливается в 1. При ошибке чтения или достижении конца файла внутри функции ReadByte устанавливается в 2.
Несмотря на то, что функция выглядит несколько неуклюже, она очень удобна при побайтном считывании по прерыванию.
Применение библиотеки
Для того, чтобы использовать библиотеку в проект ПО следует включить файлы: <at45db161.c> и <at45db161.h>. В файле <at45db161.h> следует скорректировать 2 настройки:
Первая:
код:
// Здесь следует определить пин порта мк. для CS AT45DB161!!!
#define DF_CHIP_SELECT PORTC.0
В строке 7 указать бит порта вывода который Вы будете использовать в качестве сигнала CS микросхемы AT45DB161:
Вторая:
Переопределить настройки интерфейса SPI в строке 38:
код:
// Включить SPI.
// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 4000.000 kHz
// SPI Clock Phase: Cycle Start
// SPI Clock Polarity: High
// SPI Data Order: MSB First
#define SPI_ON SPCR=0x5c
Простой пример применения библиотеки:
код:
temp = InitialFlash();
if(temp) {
if(temp == 1) {
// И зацикливаемся — ус-во не обнаружено в системе
while(1);
}
// ИНАЧЕ УСТРОЙСТВО ОБНАРУЖЕНО НО НЕ ФОРМАТИРОВАННО!
// ФОРМАТИРУЕМ FLASH
FormatFlash();
}
// Записали первый файл:
OpenFile(‘w’, 0);
memset(Buff, 0, 128);
for(ic = 0;ic<256;ic++) Buff[ic] = ic;
WriteFile(Buff, 256);
WriteFile(Buff, 256);
WriteFile(Buff, 256);
WriteFile(Buff, 256);
WriteFile(Buff, 256);
CloseFile();
// Записали второй файл:
OpenFile('w', 0);
memset(Buff, 2, 128);
//for(ic = 0;ic<256;ic++) Buff[ic] = ic;
WriteFile(Buff, 128);
WriteFile(Buff, 55);
CloseFile();
// Записали третий файл:
OpenFile('w', 0);
memset(Buff, 3, 128);
//for(ic = 0;ic<256;ic++) Buff[ic] = ic;
WriteFile(Buff, 128);
WriteFile(Buff, 23);
CloseFile();
// Считали третий файл:
If (OpenFile(‘r’, 3)) {
do {
memset(Buff, 0, 528);
ic = ReadFile(Buff, 64);
} while(ic);
CloseFile();
}
//Считали второй файл:
if(OpenFile(‘r’, 2)) {
do {
memset(Buff, 0, 528);
ic = ReadFile(Buff, 64);
} while(ic);
CloseFile();
}
// Считали первый файл:
if(OpenFile(‘r’, 1)) {
memset(Buff, 0, 528);
do {
ic = ReadFile(Buff, 64);
} while(ic);
CloseFile();
}
Заключение
Как видите, использование библиотеки последовательного доступа значительно упрощает разработку целого ряда устройств с голосовым сопровождением на основе Flash- памяти.
** Важное замечание.
При считывании последнего блока данных из файла в буфер заносится действительное оставшееся количество байтов, а их количество указывается в возвращаемом функцией значении.
*** Комментарий автора.
Программа, которая умеет открывать файлы мультимедиа типа WAV, идентифицировать их, на соответствии требованиям закачки (частота дискретизации, количество каналов и т.д.) и пересылать их в микроконтроллерную систему.
Рассматриваемые в данной статье исходники библиотеки файловой системы последовательного доступа полностью приведены в виде ресурсов в теме «Журнал клуба программистов. Пятый выпуск» или непосредственно в архиве с журналом.
Ресурсы
- Ссылка на скачивание библиотеки LIB_AT45
http://movilavn.narod.ru/LIB_AT45.rar - Проект для микроконтроллера ATMega162 — загрузка файлов в AT45DB161
http://movilavn.narod.ru/AT45LOAD.rar - Проект для ПК (Builder C++ 6). LoadAT45DB***
http://movilavn.narod.ru/LoadAT45DB.rar - Модули и проекты, использованные в статье
http://programmersclub.ru/pro/pro5.pdf
Статья из пятого выпуска журнала «ПРОграммист».
Скачать этот номер можно по ссылке.
Ознакомиться со всеми номерами журнала.
26th
Рассылка. Выпуск 73
От ведущего.
Доброй ночи читатели рассылки. Сегодняшняя рассылка получилась очень содержательной, много тем с форума, статьи с журнала “ПРОграммист”. Подходит к концу жаркое лето, многие форумчане возвращаются с отпусков и общение в нашем клубе становится более насыщенным.
Новые интересные статьи клуба программистов.
Статьи на сайте клуба постоянно пополняются. Поэтому это постоянная и основная рубрика рассылки. Так же здесь обзор топиков форума и блога программистов.
Регистры и смещение
В этой теме форумчане делятся своими знаниями и объясняют что такое регистры и смещение, память компьютера.
Тема на форуме
Динамическое меню на сайте с помощью php
Реализация динамического вложенного меню на php (пункты меню хранятся в файле).
Тема на форуме
Олимпийские игры для роботов стартовали в Китае
Роботы из разных стран соревнуются между собой в футболе, прыжках в высоту, баскетболе, боксе и даже в танцах и игре на барабанах. В Технологическом университете города Харбин в Китае проходят первые в истории Олимпийские игры среди человекоподобных роботов. Размеры спортсменов варьируются от 20 см до полуметра. Большинство роботов собраны вручную, из простых деталей.
Полупрозрачность в Delphi
И так, как сделать окошко в дельфи прозрачным с красивыми тенями и другой мутью.
Тема на форуме
Как в ListView показывать/прятать колонки?
Тема на форуме
Беспроводная сеть масштаба микрорайона. Часть 1
Общаясь с друзьями и знакомыми, работающими в области ИТ, не раз приходилось слышать заявление, что Wi-Fi подходит только для сетей масштаба квартиры или небольшого офиса. В качестве аргументов приводились малая дальность, зависимость от погодных условий, ненадежность оборудования. Примерно такое же мнение бытует о том, что для провайдерских сетей не подходит платформа Windows. Аргументы: высокая ресурсоемкость, ненадежность и вообще неспособность работать в качестве системы биллинга.
Как развернуть flash-приложение во весь экран?
Тема на форуме
Определить нажата правая клавиша мыши?
Событие OnMouseDown у формы, проверяя таким макаром:
код:
Как узнать количество строк в memo?
У новичков может возникнуть такой вопрос.
код:
Нумерация строк начинается с нуля.
Тема на форуме
Пример установки разрешения 1152х864 под Windows. asm
Тема на форуме
Получить идентификатор процесса и узнать полуный путь до файла этого процесса. c/c++
Пишу небольшую программу, мне нужно чтобы она искала заданный мною выполняемый процесс. Подскажите какая это функция может сделать, быть может это win api функция?
Тема на форуме
Как в WebBrowser выбрать из списка и нажать на кнопку?
Тема на форуме
Как отключить загрузку картинок в Firefox?
Тема на форуме
Делаем динамические тени на OPENGL. Часть 1
Здравствуйте. В этой статье я хочу рассмотреть создание движка динамического освещения с помощью графической библиотеки OpenGL. Писаться движок будет на Delphi, но это не мешает переписать его на любой другой язык, так как главное, рассматриваемое в статье, это алгоритмы…
Создание логотипа для журнала ПРОграммист
Предлагаю здесь выкладывать работы, которые претендуют на то, чтобы стать логотипом журнала ПРОграммист. Я знаю, что здесь есть много креативных людей. Не лучший ли это случай проявить свою фантазию и дизайнерские навыки?
Внимание!
Логотип будет размещаться в левом верхнем углу, там где надпись “ПРОграммист” на каждой странице
Следовательно, исходить нужно из этих предпосылок, т.е. не делать мелких деталей.
Кроме того, нужен логотип-баннер (для обмена ссылками) журнала
Его тоже можно здесь выкладывать.
Тема на форуме
Энкодер датчика pdf на плис. Часть 2
Итак, сегодня мы с вами продолжим наш материал по промышленной автоматизации, рассмотрим реализацию алгоритма энкодера на ПЛИС, особенности прошивки модулей Faswell UNIOxx-5 и создадим тестовую утилиту визуализации состояния шифратора приращений.
Библиотека файловой системы AT45DB161
При разработке микроконтроллерных устройств с внешней памятью типа AT45DBxx приходится сталкиваться с ситуацией, когда блоки данных (файлы) записываются редко, обычно при обновлении ПО устройства, а иногда вообще только один раз – при изготовлении устройства. В таких случаях нет необходимости в использовании файловой системы дискового типа, таких как FAT…
Исскуство изменеия GTA
Здравствуйте, любители гейминга. В данной статье, я хочу показать, как делаются плагины для всем известной GTA. Начнем мы самого простого – это программирование плагинов на Delphi для Grand theft Auto ViceCity. А поняв принцип их работы, никакого труда не составит написать плагин и для других серий GTA…
На сайте клуба есть рубрики пост-обзор и топик-обзор клуба программистов.
Немного юмора.
***
Работа пpогpаммиста и шамана имеет много общего – оба боpмpчyт непонятные слова, совеpшают непонятные действия и не могyт объяснить, как оно pаботает.
***
Доктор ставит хакеру диагноз:
— Итак, дорогой, вам осталось жить 30 дней.
— Извините, доктор, а где можно скачать crack?
***
Для ухода за пожилым программистом требуется приятная женщина, говорящая на BASIC, PASCAL и C++.
***
Письмо в службу технической поддержки: “У МеНя мИгАеТ ИнДиКаТоР cApS LoCk, кАк эТо лЕчИтСя?”
***
Одна барышня звонила на какую-то фирму и ругалась, что они ей какой-то не такой софт подсунули, что он не инсталлируется, хотя она все, мол, делает в соответствии с инструкцией (а софт ентот с дискет ставился). Ну, послали спеца из фирмы, продавшей этот софт, на месте разобраться – what’s, собственно, up…
Приехал он, а барышня ему и говорит:
— Вот у вас в инструкции написано – “вставьте дискету №1″, ну, я вставила, потом написано “вставить дискету №2″, ну, – говорит, – я ее вставила, потом – “дискету №3″, ну, вставила я ее (с трудом, правда), но вот дискета №4 уже просто в дисковод не лезет!!!
***
Объявлено об объединении “Микрософт” и “Линукс”. Эмблемой новой системы выбран пингвин, выпадающий в окно.
Посетите раздел юмора на форуме, который обновляется постоянно
25th
Авг
КАСКАДНЫЕ ТАБЛИЦЫ СТИЛЕЙ CSS
Каскадные таблицы стилей или CSS (Cascading Style Sheets) были революцией, потрясшей WWW. Если до этого Web-дизайнер не знал, как будет выглядеть его творение в разных программах Web-обозревателей, то теперь он может контролировать все: от начертания шрифта до положения картинки на странице.
Предположим, вам нужно изменить цвет текста в HTML-документе с черного на синий. Вы помещаете его в пару тегов <FONT> и </FONT> следующего вида:
<P> <FONT color=»blue»> Это синий текст</FONT> </P>
А теперь представим, что вы внесли определение внешнего вида текста в другое место документа:
P.bluetext { color: blue }
Эта строка обозначает, что мы определили для текста, находящегося внутри тега <P> и помеченного стилевым классом bluetext, синий цвет шрифта. Такая конструкция HTML называется определением стиля или просто стилем.
В результате в HTML-тексте у нас остануться только теги логического форматирования текста:
<P> Это синий текст</P>
Здесь мы пометили нужный текст с помощью атрибута class, присвоив ему значение bluetext. Атрибут class задает имя стилевого класса для тега, и его поддерживают все теги.
Вы можете переназначить цвета текста для всех тегов <P> . В этом случае мы не задаем имя стилевого класса:
P { color: blue }
Или вы можете задать форматирование для стилевого класса, не привязанного ни к какому тегу:
.bluetext{ color: blue }
И теперь вы можете присваивать стилевой класс тексту, заключенному в любые теги:
<H1> Это синий цвет</H1>
<CENTER> Это синий цвет</CENTER>
Это <B> жирный синий</B> текст
Вы можете дать специальное форматирование тегу только в том случае, если он заключен внутрь другого тега:
H7 B { color: blue }
И теперь:
<H7> <B> Этот</B> текст будет синим</H7>
<P> А <B> этот</B> — не будет!</P>
Более того, вы можете встроить определение стиля прямо в тег:
<P style=»color: blue»> Это синий текст</P>
Это достигается при помощи атрибута style, который также поддерживают все теги HTML.
И еще один способ привязать стиль к какому-либо тегу — использовать атрибут id, задающий уникальное имя элемента HTML.
#headerofdocument { font-size: 20pt }
Здесь мы задали размер шрифта 20 пунктов.
<H1 id=»headerofdocument»> Это заголовок документа</H1>
Вы можете задавать несколько атрибутов в определении стиля. В этом случае они разделяются точкой с запятой:
P { color: blue; fotn-size: 9ptl; text-align: center }
Определение стилей, вынесенные в заголовок HTML-документа, составляют таблицу стилей. Таблица стилей заключается в теги <STYLE> и </STYLE> :
<Style [type=»text/css»]>
. . .
</STYLE>
Тег <STYLE> может содержать необязательный атрибут type, содержащий обязательное значение text/css.
Таблицу стилей можно вынести в отдельный файл и использовать сразу в нескольких документах. В этом случае в заголовке HTML-документа необходимо разместить тег <LINK> , указывающий на эту таблицу стилей:
<LINK rel=»stylesheet» href=»http://programmersclub.ru/{Адрес файла таблицы стилей}»>
Назад к оглавлению
Programming articles
Создание сайтов на шаблонах
Множество вариантов работы с графикой на канве
Шифруем файл с помощью другого файла
Перехват API функций — Основы
Как сделать действительно хороший сайт
Создание почтового клиента в Delphi 7
Применение паскаля для
решения геометрических задач
Управление windows с помощью Delphi
Создание wap сайта
Операционная система unix, термины и понятия
SQL враг или друг
Возникновение и первая редакция ОС UNIX
Оптимизация проекта в Delphi
Ресурсы, зачем нужны ресурсы
Термины программистов 20 века
Советы по созданию собственного сайта с нуля
Шифруем файл с помощью пароля
Фракталы — геометрия природы
Crypt — Delphi программа для шифрования
Рассылка, зачем она нужна и как ее организовать?
Учебник по C++ для начинающих программистов
Уроки для изучения ассемблера
Загадочный тип PCHAR
Средства по созданию сайтов
Операторы преобразования
классов is и as
Borland Developer studio 2006. Всё в одном
Создание базы данных в Delphi, без сторонних БД
Software engineering articles
25th
УРОК 22. ЧАСТНЫЕ И ОБЩИЕ ДАННЫЕ
В уроке 21 вы создали свои первые классы в C++. При этом вы включали метку public в определение класса, чтобы обеспечить программе доступ к каждому элементу класса. Из данного урока вы узнаете, как атрибутыpublic и private управляют доступом к элементам класса со стороны программы. Вы узнаете, что ваши программы могут обратиться к общим (public) элементам из любой функции. С другой стороны, ваша программа может обращаться к частным (private) элементам только в функциях данного класса. Этот урок подробно исследует частные и общие элементы. К концу данного урока вы освоите следующие основные концепции:
- Чтобы управлять тем, как ваши программы обращаются к элементам класса, C++ позволяет вам определять элементы как частные или общие.
- Частные элементы дают возможность классу скрыть информацию, которую программе не требуется знать.
- Класс, использующий частные элементы, обеспечивает интерфейсные функции, которые обращаются к частным элементам класса.
Как уже вкратце обсуждалось в уроке 21, вы должны поместить в определение класса столько информации об объекте, сколько считаете необходимым. При этом объекты становятся самообеспеченными, что может повысить возможность их повторного использования несколькими программами.
25th
История появления и развития интернета
Закройте дверь
перед всеми ошибками,
и истина не сможет войти.
Рабиндранат Тагор
Своим зарождением Интернет обязан Министерству обороны США и его секретному исследованию, проводимому в 1969 году с целью тестирования методов, позволяющих компьютерным сетям выжить во время военных действий с помощью динамической перемаршрутизации сообщений. Первой такой сетью была ARPAnet, объединившая три сети в Калифорнии с сетью в штате Юта по набору правил, названных Интернет-протоколом (Internet Protocol или, сокращенно, IP).
В 1972 был открыт доступ для университетов и исследовательских организаций, в результате чего сеть стала объединять 50 университетов и исследовательских организаций, имевших контракты с Министерством обороны США.
В 1973 сеть выросла до международных масштабов, объединив сети, находящиеся в Англии и Норвегии. Десятилетие спустя IP был расширен за счет набора коммуникационных протоколов, поддерживающих как локальные, так и глобальные сети. Так появился TCP/IP. Вскоре после этого, National Science Foundation (NSF) открыла NSFnet с целью связать 5 суперкомпьютерных центров. Одновременно с внедрением протокола TCP/IP новая сеть вскоре заменила ARPAnet в качестве «хребта» (backbone) Интернета.
Ну а как же Интернет стал столь популярен и развит, а толчок к этому, а также к превращению его в среду для ведения бизнеса дало появление World Wide Web (Всемирная Паутина, WWW, 3W, вэ-вэ-вэ, три даблъю) — системы гипертекста (hypertext), которая сделала путешествие по сети Интернет быстрым и интуитивно понятным.
А вот идея связывания документов через гипертекст впервые была предложена и продвигалась Тедом Нельсоном (Ted Nelson) в 1960-е годы, однако уровень существующих в то время компьютерных технологий не позволял воплотить ее в жизнь, хотя кто знает, чем бы всё закончилось, если бы эта идея нашла применение?!
Основы того, что мы сегодня понимаем под WWW, заложил в 1980-е годы Тим Бернерс-Ли (Tim Berners-Lee) в процессе работ по созданию системы гипертекста в Европейской лаборатории физики элементарных частиц (European Laboratary for Particle Physics, Европейский центр ядерных исследований).
В результате этих работ в 1990 научному сообществу был представлен первый текстовый браузер (browser), позволяющий просматривать связанные гиперссылками (hyperlinks) текстовые файлы on-line. Доступ к этому браузеру широкой публике был предоставлен в 1991, однако распространение его вне научных кругов шло медленно.
Новым историческим этапом в развитии Интернет обязан выходу первой Unix-версии графического браузера Mosaic в 1993 году, разработанного в 1992 Марком Андресеном (Marc Andreessen), студентом, стажировавшимся в Национальном центре суперкомпьютерных приложений (National Center for Supercomputing Applications, NCSA), США.
С 1994, после выхода версий браузера Mosaic для операционных систем Windows и Macintosh, а вскоре вслед за этим — браузеров Netscape Navigator и Microsoft Internet Explorer, берет начало взрывообразное распространение популярности WWW, и как следствие Интернета, среди широкой публики сначала в США, а затем и по всему миру.
В 1995 NSF передала ответственность за Интернет в частный сектор, и с этого времени Интернет существует в том виде, каким мы знаем его сегодня.
Автор статьи ZEVS
Обсудить статью на форуме
Programming articles
Создание сайтов на шаблонах
Множество вариантов работы с графикой на канве
Шифруем файл с помощью другого файла
Перехват API функций — Основы
Как сделать действительно хороший сайт
Создание почтового клиента в Delphi 7
Применение паскаля для
решения геометрических задач
Управление windows с помощью Delphi
Создание wap сайта
Операционная система unix, термины и понятия
SQL враг или друг
Возникновение и первая редакция ОС UNIX
Оптимизация проекта в Delphi
Ресурсы, зачем нужны ресурсы
Термины программистов 20 века
Советы по созданию собственного сайта с нуля
Шифруем файл с помощью пароля
Фракталы — геометрия природы
Crypt — Delphi программа для шифрования
Рассылка, зачем она нужна и как ее организовать?
Учебник по C++ для начинающих программистов
Уроки для изучения ассемблера
Загадочный тип PCHAR
Средства по созданию сайтов
Операторы преобразования
классов is и as
Borland Developer studio 2006. Всё в одном
Создание базы данных в Delphi, без сторонних БД
Software engineering articles
25th
УРОК 34 ФАЙЛОВЫЕ ОПЕРАЦИИ В/В В C++
По мере усложнения ваших программ они будут сохранять и получать информацию, используя файлы. Если вы знакомы с файловыми манипуляциями в языке С, вы сможете использовать подобные методы и в C++. Кроме того, как вы узнаете из этого урока, C++ предоставляет набор классов файловых потоков, с помощью которых можно очень легко выполнять операции ввода и вывода (В/В) с файлами. К концу данного урока вы освоите следующие основные концепции:
- Используя выходной файловый поток, вы можете писать информацию в файл с помощью оператора вставки (<<).
- Используя входной файловый поток, вы можете читать хранимую в файле информацию с помощью оператора извлечения (>>).
- Для открытия и закрытия файла вы используете методы файловых классов.
- Для чтения и записи файловых данных вы можете использовать операторы вставки и извлечения, а также некоторые методы файловых классов.
Многие программы, которые вы создадите в будущем, будут интенсивно использовать файлы. Выберите время для экспериментов с программами, представленными в данном уроке. И вы обнаружите, что в C++ выполнять файловые операции очень просто.
25th
ПАНЕЛЬ ЗАДАЧ. ПУСК
ПАНЕЛЬ ЗАДАЧ. ПУСК.
Начнём с общего. Как скрыть и показать Панель задач:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowWindow(FindWindow(‘Shell_TrayWnd’, nil), SW_HIDE); // Скрыть
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ShowWindow(FindWindow(‘Shell_TrayWnd’, nil), SW_SHOW); // Показать
end;
Теперь сделаем иконку рядом с часами:
public
procedure IconCallBackMessage( var Mess : TMessage ); message WM_USER+ 100;
end;
implementation
uses ShellAPI;
procedure TForm1.IconCallBackMessage( var Mess : TMessage );
var
sEventLog : String;
begin
case Mess.lParam of
// Сделайте здесь все что вы хотите. Например, вызов контекстного меню при нажатии правой кнопки мыши.
WM_LBUTTONDBLCLK : sEventLog := ‘Двойной щелчок левой кнопкой’;
WM_LBUTTONDOWN : sEventLog := ‘Нажатие левой кнопки мыши’;
WM_LBUTTONUP : sEventLog := ‘Отжатие левой кнопки мыши’;
WM_MBUTTONDBLCLK : sEventLog := ‘Двойной щелчок мышью’;
WM_MBUTTONDOWN : sEventLog := ‘Нажатие кнопки мыши’;
WM_MBUTTONUP : sEventLog := ‘Отжатие кнопки мыши’;
WM_MOUSEMOVE : sEventLog := ‘перемещение мыши’;
WM_MOUSEWHEEL : sEventLog := ‘Вращение колесика мыши’;
WM_RBUTTONDBLCLK : sEventLog := ‘Двойной щелчок правой кнопкой’;
WM_RBUTTONDOWN : sEventLog := ‘Нажатие правой кнопки мыши’;
WM_RBUTTONUP : sEventLog := ‘Отжатие правой кнопки мыши’;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var nid : TNotifyIconData;
begin
Load_Form.Visible:=false;
with nid do
begin
cbSize := SizeOf( TNotifyIconData );
Wnd := Form1.Handle;
uID := 1;
uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
uCallbackMessage := WM_USER + 100;
hIcon := Application.Icon.Handle; // Иконка приложения 16 на 16 пикселей
szTip := ‘Имя программы’;
end;
Shell_NotifyIcon( NIM_ADD, @nid );
end;
И при закрытии удаляем иконку.
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var nid : TNotifyIconData;
begin
//это важно для того чтобы не удалить чужую иконку J
with nid do
begin
cbSize := SizeOf( TNotifyIconData );
Wnd := Form1.Handle;
uID := 1;
uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
uCallbackMessage := WM_USER + 100;
hIcon := Application.Icon.Handle; // Иконка приложения 16 на 16 пикселей
szTip := ‘Имя программы’;
end;
Shell_NotifyIcon( NIM_DELETE, @nid );
end;
С иконкой мы расправились переходим у Пуску. Для начала работы надо открыть Пуск с помощью этой функции:
procedure TForm1.Button1Click(Sender: TObject);
begin
SendMessage(Self.Handle, WM_SYSCOMMAND, SC_TASKLIST, 0);
end;
Так же можно поменять активность Пуск’а:
procedure TForm1.Button1Click(Sender: TObject);
begin
EnableWindow(FindWindowEx(FindWindow(‘Shell_TrayWnd’, nil), 0, ‘Button’, nil), false);
// заблокировать
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
EnableWindow(FindWindowEx(FindWindow(‘Shell_TrayWnd’, nil), 0, ‘Button’, nil), true);
// разблокировать
end;
Programming articles
Создание сайтов на шаблонах
Множество вариантов работы с графикой на канве
Шифруем файл с помощью другого файла
Перехват API функций — Основы
Как сделать действительно хороший сайт
Создание почтового клиента в Delphi 7
Применение паскаля для
решения геометрических задач
Управление windows с помощью Delphi
Создание wap сайта
Операционная система unix, термины и понятия
SQL враг или друг
Возникновение и первая редакция ОС UNIX
Оптимизация проекта в Delphi
Ресурсы, зачем нужны ресурсы
Термины программистов 20 века
Советы по созданию собственного сайта с нуля
Шифруем файл с помощью пароля
Фракталы — геометрия природы
Crypt — Delphi программа для шифрования
Рассылка, зачем она нужна и как ее организовать?
Учебник по C++ для начинающих программистов
Уроки для изучения ассемблера
Загадочный тип PCHAR
Средства по созданию сайтов
Операторы преобразования
классов is и as
Borland Developer studio 2006. Всё в одном
Создание базы данных в Delphi, без сторонних БД
Software engineering articles
25th
РАСКРУТКА САЙТОВ Продвижение, раскрутка и улучшение сайтов
Наша слава лишь
мнением народным создается.
Шекспир
Рад, что вы решили прочитать именно мою статью, т.к. подобной информации уже так много, что просто «глаза разбегаются». В данном материале я буду, в большинстве случаев, опираться на личный опыт, не оставляя без внимания, и эксперименты других, возможно даже, более бывалых людей.
25th
ОСНОВЫ DELPHI R
Тип | Имя | Описание |
функция | RadToDeg | конвертирует радианы в градусы |
функция | Random | генерирует число или число с плавающей точкой |
процедура | Randomize | генератор случайных величин |
функция | RandomRange | генерирует число в пределах введённого диапазона |
процедура | Read | читает данные из двоичного или текстового файла |
процедура | ReadLn | чмтает полную строку данных из текстового файла |
процедура | ReallocMem | изменяет размер выделенный под переменную |
функция | RecodeDate | изменяет дату переменной TDateTime |
функция | RecodeTime | изменяет время переменной TDateTime |
функция | Rect | прямоугольник с указанием 2 точек или 4 координат |
функция | RemoveDir | позволяет удалить директорию |
процедура | Rename | позволяет переименовать файл |
функция | RenameFile | позволяет переименовать файл или директорию |
Programming articles
Создание сайтов на шаблонах
Множество вариантов работы с графикой на канве
Шифруем файл с помощью другого файла
Перехват API функций — Основы
Как сделать действительно хороший сайт
Создание почтового клиента в Delphi 7
Применение паскаля для
решения геометрических задач
Управление windows с помощью Delphi
Создание wap сайта
Операционная система unix, термины и понятия
SQL враг или друг
Возникновение и первая редакция ОС UNIX
Оптимизация проекта в Delphi
Ресурсы, зачем нужны ресурсы
Термины программистов 20 века
Советы по созданию собственного сайта с нуля
Шифруем файл с помощью пароля
Фракталы — геометрия природы
Crypt — Delphi программа для шифрования
Рассылка, зачем она нужна и как ее организовать?
Учебник по C++ для начинающих программистов
Уроки для изучения ассемблера
Загадочный тип PCHAR
Средства по созданию сайтов
Операторы преобразования
классов is и as
Borland Developer studio 2006. Всё в одном
Создание базы данных в Delphi, без сторонних БД
Software engineering articles
25th
ИЗ ВВЕДЕННОЙ С КЛАВИАТУРЫ СИМВОЛЬНОЙ СТРОКИ ВСЕ ТОЧКИ И ПОДСЧИТАТЬ ДЛИНУ ОТРЕДАКТИРОВАННОЙ СТРОКИ
Programming articles
Создание сайтов на шаблонах
Множество вариантов работы с графикой на канве
Шифруем файл с помощью другого файла
Перехват API функций — Основы
Как сделать действительно хороший сайт
Создание почтового клиента в Delphi 7
Применение паскаля для
решения геометрических задач
Управление windows с помощью Delphi
Создание wap сайта
Операционная система unix, термины и понятия
SQL враг или друг
Возникновение и первая редакция ОС UNIX
Оптимизация проекта в Delphi
Ресурсы, зачем нужны ресурсы
Термины программистов 20 века
Советы по созданию собственного сайта с нуля
Шифруем файл с помощью пароля
Фракталы — геометрия природы
Crypt — Delphi программа для шифрования
Рассылка, зачем она нужна и как ее организовать?
Учебник по C++ для начинающих программистов
Уроки для изучения ассемблера
Загадочный тип PCHAR
Средства по созданию сайтов
Операторы преобразования
классов is и as
Borland Developer studio 2006. Всё в одном
Создание базы данных в Delphi, без сторонних БД
Software engineering articles
Облако меток
реестр ассемблер timer TBitMap SaveToFile ShellExecute программы массив советы word MySQL SQL ListView pos random компоненты дата LoadFromFile form база данных сеть html php RichEdit indy строки Win Api tstringlist Image мысли макросы Edit ListBox office C/C++ memo графика StringGrid поиск canvas файл Pascal форма Файлы интернет Microsoft Office Excel excel winapi журнал ПРОграммист DelphiКупить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту

пеллетные котлы

Пеллетный котел Emtas

Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)