Юрий Ревич - Занимательная микроэлектроника

Здесь есть возможность читать онлайн «Юрий Ревич - Занимательная микроэлектроника» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Санкт-Петербург, Год выпуска: 2007, ISBN: 2007, Издательство: БХВ-Петербург, Жанр: sci_radio, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Занимательная микроэлектроника: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Занимательная микроэлектроника»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Книга на практических примерах рассказывает о том как проектировать, отлаживать и изготавливать современные электронные устройства в домашних условиях. Теоретические основы, физические принципы работы электронных схем и различных типов радиоэлектронных компонентов иллюстрируются практическими примерами в виде законченных радиолюбительских конструкций и дополняются советами по технологии изготовления любительской аппаратуры. На доступном уровне излагаются теоретические основы цифровой техники — математическая логика и различные системы счисления. Вторая часть книги полностью посвящена программированию микроконтроллеров, как основы современной электроники. Особое внимание уделяется обмену данными микроэлектронных устройств с персональным компьютером, приводятся примеры программ на Delphi.
Для широкого круга радиолюбителей

Занимательная микроэлектроника — читать онлайн ознакомительный отрывок

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Занимательная микроэлектроника», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

begin

st:=stcom+' does not be present or occupied.';

Application.MessageBox(Pchar(st),'Error',MB_OK);

exit{выход из процедуры — неудача}

end;

end;

ab[1]:=ord('A'); {будем посылать инициализацию модема}

ab[2]:=ord('Т');

ab[3]:=13; {CR}

ab[4]:=10; {LF}

for i:=1 to 4 do Form1.AfComPort1.WriteData(ab[i],1);

{ответ не сразу:}

Form1.Timer1.Enabled:=True;

tall:=0;

while tall<1 do application.ProcessMessages; {пауза в 1 с}

Form1.Timer1.Enabled:=False;

st:=Form1.AfComPort1.ReadString; {ответ модема 10 знаков}

if pos(1 OK',st)<>0 then {модем}

begin

st:=stcom+' занят модемом';

Application.MessageBox(Pchar(st),'Error',MB_OK);

exit;

end else{все нормально, COM открыт}

begin

Form1.Label7.Caption:=stcom+' 96001;

FlagCOM:=True;

end;

end;

Как видим, процедура создания порта много понятнее, чем в случае прямого обращения к API — все через привычную установку свойств компонента. FlagCOMиграет у нас роль индикатора, доступен порт или нет. Если он остался при значении False, то процедуру следует повторить с другим значением в строке stcom(каковую мы задаем с помощью ComboBox, см. далее). При определении модема применен хитрый способ задания паузы — вместо обычного оператора Sleep, который тормозит программу, мы использовали таймер. Чтобы это сработало, надо в обработчике события OnTimer: все время увеличивать переменную tall. Полностью процедура по таймеру приводится далее, т. к. tall нам понадобится не только для этого.

Как только мы обратились к процедуре AfComPort1.open, у нас немедленно будет создан параллельный поток и весь прием пойдет через него. Поэтому, чтобы при определении модема принятые байты не обрабатывались, нужно не забыть добавить в процедуру приема выход по условию FiagCOM=Faise.

Для создания этой процедуры обычным способом — через инспектор объектов — создадим обработчик события AfComPort1DataRecived [17] Написание слова «receive» — настоящая проблема для любого, кто не является носителем английского языка. Каких только вариантов не встретишь на просторах Сети! Как видим, наш чех Петя Вонис также не избежал общей участи. (листинг 18.5).

Листинг 18.5

procedure TForm1.AfComPort1DataRecived(Sender:TObject; Count:Integer);

{чтение очередного байта по сообщению wmCOMPORT}

var i: integer;

begin

if FlagCOM=False then exit; {если модем еще не опрошен}

if count<>0 then{если что-то принято}

begin

AfComPort1.ReadData(ab,count);{читаем буфер в массив}

хn:=xn+count;{число принятых байт}

tall:=0;{обнуляем время}

end;

end;

На самом деле условие count<>0не требуется, оно введено просто ради порядка (иначе бы процедура просто не была бы вызвана). По выходу из процедуры в переменной хnбудет накапливаться количество принятых байтов. Осталось только дописать остальные процедуры (листинг 18.6).

Листинг 18.6

procedure TForm2.Button2Click(Sender:TObject);

begin{запрос}

if FlagCOM=False then exit;

{если порт еще не инициализирован — выход}

AfComPortl.PurgeRX;{очищаем буфер порта на всякий случай}

xb:=$А2;

AfComPort1.WriteData(xb,1);{посылаем команду}

FlagSend:=$А2;{обозначаем посылку запроса времени}

tall:=0;{обнуляем время}

хn:=0;{счетчик принятых байтов}

Timer1.Enabled:=True;{запускаем таймер}

end;

procedure TForm1.FormCreate(Sender:TObject);

begin

{инициализация COM1 при запуске}

stcom:='COM1';

IniCOM;

end;

procedure TForm1.ComboBox1Select(Sender: TObject);

begin

stcom:=ComboBox1.Text;{устанавливаем порт COM1,2,3,4}

IniCOM;

end;

procedure TForm1.FormDestroy(Sender: TObject);

begin

AfComPort1.Close;{закрытие порта}

end;

Теперь нам осталось разобраться с тем, что мы там напринимали. Это позволит сделать установленное нами значение FiagSendи таймер. В таймере переменную tallмы будем увеличивать на единицу, а в процедуре приема мы все время ее обнуляем, так что пока она равна нулю, можно полагать, что прием еще не закончился. Как только она станет больше единицы (прошло более секунды с момента последнего принятого байта или прием вообще не происходил), мы начинаем что-то делать, но только в том случае, если флаг FlagCOMустановлен (T rue), иначе это вообще был не прием, а опрос модема. Сказанное иллюстрирует листинг 18.7.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Занимательная микроэлектроника»

Представляем Вашему вниманию похожие книги на «Занимательная микроэлектроника» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Занимательная микроэлектроника»

Обсуждение, отзывы о книге «Занимательная микроэлектроника» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x