Магнитные карты и ПК - Гёлль Патрик. Страница 22
Научиться перемещать карты с указанной скоростью даже при минимальной тренировке несложно. Тонкий момент заключается в необходимости очень точно синхронизировать начало записи с началом дорожки. Нам удалось решить эту проблему, используя считывающую головку, расположенную напротив записывающей.
Принцип синхронизации состоит в том, что через устройство перемещается не одна карта, а две, сложенные «рубашка к рубашке». Одну из них назовем кодируемой, а вторую, более тонкую, — картой синхронизации.
Закодированная любыми данными на всю длину дорожки, карта синхронизации после первого же контакта с головкой заставит считывающую схему выдать тактовый импульс. Для того чтобы ПК мог начать запись, большего и не требуется.
Самый простой способ получить необходимую карту синхронизации состоит в том, чтобы ножницами вырезать карту стандартной формы из билета на поезд дальнего следования французских железных дорог.
Рис. 4.9. Получение корты синхронизации с помощью железнодорожного билета
Одна из четырех закодированных дорожек с плотностью записи 210 bpi точно совпадет со считывающей головкой. Она и обеспечит синхронизацию, если половинки нашего «сэндвича» будут правильно сложены и проведены через устройство в нужном направлении.
Другой способ состоит в кодировании тонкой карты или использованного проездного билета. Для этого можно использовать и самодельную карту, полученную из визитной карточки, приклеив ее к обратной стороне магнитной ленты.
При изготовлении карты синхронизации управлять кодером можно с помощью программы MAKESYNC.PAS, при создании которой для получения требуемой скорости управления записывающей головкой был использован Turbo Pascal.
Если возникли непреодолимые трудности с изготовлением карты синхронизации, процесс записи запускается при помощи простого генератора импульсов, выдающего сигнал TTL-уровней с частотой 500-1000 Гц.
program makesync;
uses crt;
var a: integer;
begin
clrscr;
writeln ("Вставить карту в считывающее устройство");
writeln ("и перемещать до появления звукового сигнала");
for а:=0 to 10000 do
begin,
port[634]:=255;
delay(1);
port(634):=0;
delay(1);
end;
sound(880); delay(500); nosound;
end.
(* COPYRIGHT 1996 Patrick GUEULLE *)
Исходному тексту MAKESYNC.PAS соответствует исполняемый файл MAKESYNC.EXE, который можно запускать из командной строки DOS.
Следует обратить внимание, что эта программа была специально написана для подключения кодера к параллельному порту LPT2. Ее надо заменить программой MAKESYNC 1, если возникнет необходимость использовать порт LPT1.
Если необходимо использовать порт LPT1, то предварительно отключается принтер и вместо исполняемого файла MAGWRITE.EXE берется MAGWRITE1.EXE.
Эта программа предназначена строго для кодирования дорожки ISO 2 стандартных карт, следовательно, записывает она с плотностью 75 bpi. Кодирование с плотностью 210 bpi хотя и возможно, но значительно сложнее, а потому рассматриваться не будет.
При желании читатели могут разработать собственные способы кодирования с плотностью 210 bpi. Однако они не могут обвинить нас в том, что мы не преподнесли на блюдечке методы производства, скажем, хорошо имитированных кредитных карт.
Программа ждет данные, предназначенные для кодирования, в форме файла .CAR, который теоретически мог быть считан с некоторой карты для копирования.
На практике намного интересней кодировать произвольно выбранные данные карты, что сразу порождает проблему создания соответствующего файла .CAR.
Программа CREMAG.BAS выполняет функцию, прямо противоположную функции программы DEC5.BAS в том смысле, что она трансформирует цифровые данные в файл .CAR, готовый к записи и включающий нули запуска и заполнения.
10 REM — CREMAG.BAS —
20 KEY OFF: CLS
30 PRINT "Ввести данные, предназначенные для записи,"
40 PRINT "затем нажать ENTER"
50 А$=""
60 INPUT В$
70 IF В$ = "" THEN 100
80 А$=А$+В$
90 GOTO 60
100 C$="0000000000"
110 FOR F=1 ТО LEN(A$)
120 IF MID$(A$,F,1)="0" THEN C$=C$+"00001": GOTO 240
130 IF MID$(A$,F,1)="1" THEN C$=C$+"10000": GOTO 240
140 IF MID$(A$,F,1)="2" THEN C$=C$+"01000": GOTO 240
150 IF MID$(A$,F,1)="3" THEN C$=C$+"11001": GOTO 240
160 IF MID$(A$,F,1)="4" THEN C$=C$+"00100": GOTO 240
170 IF MID$(A$,F,1)="5" THEN C$*C$+"10101": GOTO 240
180 IF MID$(A$,F,1)="6" THEN C$=C$+"01101": GOTO 240
190 IF MID$(A$,F,1)="7" THEN C$=C$+"11100": GOTO 240
200 IF MID$(A$,F,1)="8" THEN C$=C$+"00010": GOTO 240
210 IF MID$(A$,F,1)="9" THEN C$=C$+"10011": GOTO 240
220 IF MID$(A$,F,1)=" {" THEN 370
230 PRINT: PRINT "Данные не действительны (запрещенные СИМВОЛЫ)": ВЕЕР: END
240 NEXT F
250 IF LEN(C$)<=210 THEN 270
260 PRINT: PRINT "Данные слишком длинные (максимум 40 цифровых символов)": END
270 C$="0"+С$
280 IF LEN (C$) =240 THEN 320
290 C$=C$+"0"
300 IF LEN(C$)=240 THEN 320
310 GOTO 270
320 OPEN "carte.car" FOR OUTPUT AS #1
330 FOR F=1 TO LEN(C$)
340 PRINT#1,MID$(C$,F,1)+CHR$(32);
350 NEXT F
360 CLS: PRINT: PRINT "Файл CARTE.CAR готов": BEEP: END
500 IF MID$(A$,F,1)<>T THEN 230
510 GOTO 240
520 REM (c)1996 Patrick GUEULLE