Верифікація ПОСЛІДОВНОГО ПОРТА
(курсова робота)
АНОТАЦІЯ
Опис програми містить загальний опис алгоритмів головної програми та процедур запису і зчитування повідомлень на рівні блок-схем, а також більш детальний опис розробленої програми на рівні програмного коду.
ЗМІСТ
ВСТУП
1. Опис процедур запису і зчитування повідомлень
1.1 Опис процедури запису повідомлення Write_Message
1.2 Опис процедури зчитування повідомлення Read_Message
2. Опис процедури відображення стану регістрів
3. ОПИС ЕКРАННИХ ФОРМ ПРОГРАМИ
Висновки
Список використаної літератури
ВСТУП
Метою розробленої програми є ознайомлення з принципами і форматами прийому та передачі даних через послідовний порт. Оскільки аналізувати стан бітів даних при реальній передачі через послідовний порт є досить складною задачею, тому доцільно використати програмне моделювання обміну даними.
Програма створена в середовищі Delphi і дозволяє моделювати процеси запису та зчитування даних, при цьому процес обміну інформацією відбувається не з послідовним портом, а з файлами. Процедура виводу даних повинна записувати інформацію у текстовий файл, а процедура вводу – зчитувати дані з файлу.
1. Опис процедур запису і зчитування повідомлень
1.1 Опис процедури запису повідомлення Write_Message
Розглянемо блок – схему алгоритму процедури Write_Message (рис. 1.1) для кодування повідомлень. Після зчитування символів з форми визначаються їх коди (масив mCod_bit). Далі коди символів mCod_bit перетворюються у масив бітів mBit. Значення кожного біту з масиву mBit перетворюються в аналогову напругу сигналу mU, а значення напруги записуються в текстовий файл.
Рис.1.1. Блок-схема процедури Write_Message
Розглянемо процес запису повідомлення у файл на рівні програмного коду. Спочатку зчитується з форми текст повідомлення
Str:=Edit1.Text;
та опції СОМ-порта
case Form5.RadioGroup2.ItemIndex of //Визначення довжини слова
0:DovjSlova:=7;
1:DovjSlova:=8;
end;
case Form5.RadioGroup3.ItemIndex of //Визначення к-сті стопових бітів
0:KilStopBit:=1;
1:KilStopBit:=2;
end;
Далі в циклі знаходяться коди розміром 1 байт (цілі числа від 0 до 255) для всіх символів, які записуються у масив mCod
for i:=1 to length(Str) do
begin
mCod[i]:=ord(Str[i]);
Edit3.Text:=Edit3.Text+IntToStr(mCod[i])+' ';
end;
Отримані коди символів відображаються на формі в компоненті Edit3. Код кожного символа перетворюється у двійкове представлення за допомогою процедури наступного коду програми, який перетворює байт у масив з 8 біт. Отримане бітове представлення записується у масив mCod_bit.
repeat
n:=Data div 2;
mCod_bit[i,ii]:=Data mod 2;
Data:=n;
dec(ii);
until Data<2;
mCod_bit[i,ii]:=Data;
Найскладніша частина процедури – перетворити бітове представлення символів у послідовне повідомлення. Згідно з форматом послідовної передачі даних перед кожним байтом даних потрібно вставити біти паузи (1-10 бітів) і старт-біт, а після бітів даних (кодів символів з масиву mCod_bit) – біт контролю і стоп-біт. Довжина інформаційного слова, кількість стопових бітів, парність та швидкість передачі даних встановлюється у пункті меню “Опції СОМ-порта”( Рис. 1.2).
Рис. 1.2. Форма опцій СОМ-порта
for i:=1 to length(Str) do
begin
iii:=random(9)+1; //Діапазон бітів паузи: 1-10
ii:=iii+DovjSlova;
Data:=mCod[i];
Parnist:=0;
repeat //Перетворення у 2-ву СЧ
n:=Data div 2;
mCod_bit[i,ii]:=Data mod 2;
if mCod_bit[i,ii]=1 then //Підрахунок одиниць
Parnist:=Parnist+1;
Data:=n;
dec(ii);
until Data<2;
mCod_bit[i,ii]:=Data;
if mCod_bit[i,ii]=1 then //Підрахунок одиниць
Parnist:=Parnist+1;
n:=iii+DovjSlova+KilStopBit;
if Form5.RadioGroup5.ItemIndex<>0 then //Якщо є біт парності,то n+1
inc(n);
ii:=0;
repeat
if ii<iii then
mCod_bit[i,ii]:=1; //Запис бітів паузи
if ii=iii then
mCod_bit[i,ii]:=0; //Запис біту старту
if ii=(n-KilStopBit) then //Запис біту парності
begin
case Form5.RadioGroup5.ItemIndex of
1:begin //непарна
if (Parnist mod 2)<>0 then
mCod_bit[i,ii]:=0
else mCod_bit[i,ii]:=1;
end;
2:begin //парна
if (Parnist mod 2)=0 then
mCod_bit[i,ii]:=0
else mCod_bit[i,ii]:=1;
end;
3:mCod_bit[i,ii]:=1; //постійно 1
4:mCod_bit[i,ii]:=0; //постійно 0
end;
end;
if ii=(n-KilStopBit)+1 then //Запис бітів стопу
begin
for j:=1 to KilStopBit do
begin
mCod_bit[i,ii]:=1;
inc(ii);
end;
end;
inc(ii);
until ii>n;
end;
Відповідно до рівнів напруги для логічних 0 та 1 на основі масиву mBit потрібно отримати масив напруг mU та побудувати графік залежності напруги від номеру біту на основі масиву mU (компонент DBChart). ............