Още веднъж за програмисти на QuickBASIC, PC World, издателство Open Systems
ANSI.SYS: какво е това? ANSI.SYS команди Достъп до ANSI.SYS от комуникационна програма Използване на драйвера ANSI.SYS Работа с COM3 и COM4 портове в QuickBASIC Как да намерите основния мрежов синтаксис и кратко
ANSI.SYS: какво е това?
Драйверът ANSI.SYS е програма, която значително подобрява въвеждането от клавиатурата и извеждането на екрана. ANSI.SYS непрекъснато разглежда информацията, изведена на екрана, и търси в нея специални кодове, които са команди за драйвера. Той разпознава команди и след това ги премахва, така че тези командни кодове да не се показват на екрана на дисплея. ANSI.SYS изпълнява различни функции. Но използвайки го в комуникационни програми, можете да мислите за ANSI.SYS като за драйвер, който чрез интерпретиране на специални символни последователности, наречени ANSI или ESC последователности, може да изчисти целия или част от екрана, да премести курсора на дадена позиция, да промени шрифта и цветовете на фона и да покаже данни на екрана.
Командите на драйвера на ANSI се идентифицират със специален код: първият байт съдържа числото 1BH, в BASIC се записва като CHR$ (27), наречен символ ESC (по-нататък), а вторият байт е 5BH (лява квадратна скоба), в BASIC - CHR $ (91). Тези байтове са последвани от параметрите на командата и накрая самите команди. Параметрите на командата са или числа (под формата на ASCII знаци, интерпретирани като десетични цифри) или низове от ASCII знаци, оградени в кавички, например: "опционален низ". Ако командата има няколко параметъра, те са разделени с точка и запетая. Действителният команден код, който завършва командата на ANSI драйвера, винаги е един знак от азбуката.
ANSI.SYS команди
Когато драйверът получи някоя от командите за преобразуване на входа склавиатура, след което я сканира и заменя знака, получен в резултат на натискане на един от клавишите, с друг знак или дори цяла верига от знаци.
И двата вида от тези команди се предават на ANSI драйвера по един и същи начин - в потока от знаци, показан на екрана на дисплея.
В комуникационните програми най-често се използват 13 ANSI команди, обозначени със символите: H A B C D R n f s u J K m. Обърнете внимание на главните букви! „A“ не е еквивалентно на „a“ (вижте страничната лента „Синтаксис и кратки описания на някои ANSI команди“).
Достъп до ANSI.SYS от комуникационна програма
За достъп до ANSI.SYS трябва да отворите конзолата като файл. (Историческият термин "конзола" в този случай се отнася до мястото, където информацията се извежда в момента. Отворете конзолата като файл - присвоете изход към файл. - бел. ред.) Това ще осигури достъп до драйвера ANSI.SYS, извикването на което трябва да бъде поставено във вашия файл CONFIG.SYS. Отварянето на конзолата става лесно в QuickBASIC. Просто трябва да въведете следната команда:
където filenum е номерът на файла. Например, ако искате да отворите конзолата като файл номер 2, въведете командата:
Следователно, каквото и да напишете във файл номер 2, няма да бъде обработено от QuickBASIC, а от ANSI.SYS.
Използване на драйвера ANSI.SYS
И така, ще контролираме екрана само чрез ANSI.SYS. Трудността е, че драйверът ANSI.SYS и езиковият интерпретатор QuickBASIC не "знаят" нищо един за друг. Ако искате да използвате ANSI.SYS за екранни функции, не използвайте конструкции като LOCATE, PRINT, CLS, COLOR. Вместо това използвайте еквивалентните команди и ги изпратете през ANSI.SYS, като напишете:
където filenum е номерът на файла, който сте отворили преди това, иANSIcommand е специална ANSI команда, която включва всички необходими опции.
Друг важен момент е съхраняването на няколко общи ANSI символа и команди в низови променливи от тип SHARED. (СПОДЕЛЕН означава, че променливите, декларирани по този начин, могат да се използват във всички подпрограми.)
Това ще улесни програмирането и ще ускори изпълнението. Това се прави по следния начин:
Нека дадем няколко примера. Нека приемем отворената конзола като файл номер 2. Да предположим, че искате да промените цвета на шрифта на светлосин на черен фон, преди да отпечатате текст. Можете да използвате оператора COLOR 11, 0. Но самият ANSI.SYS може да направи същото. За да направите това, трябва да въведете следната команда:
където 0 - деактивира всички атрибути; 1 - задава получер шрифт; 36 - задава цвета на шрифта на син; 40 - задава черен фон; m - задава графичното представяне.
Да приемем, че искате да изчистите екрана и да върнете курсора. За да направите това, можете да използвате оператора CLS, но ние ще използваме конструкцията:
Да приемем, че редактирате поле и искате да симулирате едносимволно връщане назад. Би било възможно да се използва последователността от команди в QuickBASIC:
Нека ги заменим с подобни, но за ANSI драйвера:
Трябва да се отбележи, че горната програма работи само с цветни монитори.
Работа с COM3 и COM4 портове в QuickBASIC
В дадения изходен текст се използват повиквания към комуникационните портове COM1 и COM2. Както знаете QuickBASIC може да работи само с тях. Но какво да направите, ако модемът е свързан към COM3 или COM4 порт?
Листинг 2 показва кода на програма, която прави следното:
3. Използвайте изразите OPEN COMx.
Простата програма, показана в листинг 3, прави същото.
По този начин, в зависимост от това дали искате повече функции и сте готови да пожертвате допълнително пространство за това, или сте свикнали да се задоволявате с малко, можете да избирате между програмите, показани в списък 2 или 3.
Как да намерите основната мрежа
Синтаксис и кратко описание на някои ANSI команди
[row;colH - командата премества курсора до позицията, зададена от параметрите row (ред), col (колона). Първоначално всеки параметър е равен на единица. Нито един от тях не връща текущата позиция на курсора.
[#A - командата премества курсора нагоре с броя редове, определени от параметъра #. Първоначално стойността му е равна на единица. Командата се игнорира, ако курсорът е в най-горния ред.
[#B - командата премества курсора надолу с броя редове, определени от параметъра #. Първоначално стойността му е равна на единица. Командата се игнорира, ако курсорът е в най-долния ред.
[#C - командата премества курсора с броя редове, определени от параметъра #. Първоначално стойността му е равна на единица. Командата се игнорира, ако курсорът е в най-дясната колона.
[#D - командата премества курсора с броя редове, определени от параметъра #. Първоначално стойността му е равна на единица. Командата се игнорира, ако курсорът е в най-лявата колона.
[ред;colR - команда за позиция на курсора; генерирани от командата за състояние на устройството. Параметърът row съдържа номера на текущия ред и колоната, в която се намира курсорът.
[6n - команда, която извиква командата за състояние на позицията на курсора.
[row;colf - команда за хоризонтални и вертикални позиции; работи по същия начин като командата за позиция на курсора.
[s - командата записва текущияпараметри на позицията на курсора, т.е. номера на колони и редове; използва се с командата за възстановяване на позицията на курсора.
[u - команда възстановява предварително запазени параметри на позицията.
[2J - командата изчиства екрана и връща курсора в първоначалната му позиция.
[K - командата изчиства съдържанието на реда от текущата позиция на курсора до края на реда.
[#;. ;#m - командата задава графичното представяне и променя цвета на екрана според зададените параметри #. Ето възможните # стойности на параметъра и описание на всеки: