seagateF3
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору ЖД 7200.11 ,moose. Нашел скрипт для чтения СА(автор ,предположительно,некий гуру по F3 -Moltke). Скрипт вроде работает,что-то читает ))Добавил скорости до 115200,больше адаптер не поддерживает(F3T>B115200).Стало гораздо веселее с чтением файлов. На выходе файлы типа 00.ххх.BIN(голова+лог.цилиндр). Как их сопоставить с FID ? Например ,мне нужен файл nrgl,как его определить ? скрипт: Код: /* REXX */ ZocCls CALL ZocTimeout 60 ZocSuppressOutput 1 /* 1=запрет вывода на экран */ CALL ZocSend "^M" CALL ZocWait ">" CALL ZocSend "/2^M" CALL ZocWait "2>" ZocSend "R,1^M" /* Эта строка нужна если при нач. выводе N буфф. не выводится строка default Rd Buf */ ZocWait "2>" CALL ZocReceiveBuf 2048 CALL ZocSend "?" CALL ZocDelay 0.3 CALL ZocSend "^M" CALL ZocWait "2>" abst= ZocReceiveBuf(0) call SearchString 1,"Default" call ATOB substr(word(abst,K-8),1,6) RD_BUFF=reslt ZocSuppressOutput 0 ZocSend "A0^M" ZocWait "2>" ZocSuppressOutput 1 HEAD="00" LCYL=0 BULK=201 /* трэков=обработка пакетом */ NEXT: HEAD= ZocAsk("Please enter phys HEAD+LCYL(SA.OFFSET)", substr(HEAD,1,1)||","||d2x(LCYL,03)) IF HEAD= "##CANCEL##" THEN DO SIGNAL BYE END LCYL=substr(HEAD,3,3) HEAD=substr(HEAD,1,2) x1: CALL ZocReceiveBuf 2048 ZocSuppressOutput 0 CALL ZocSend "x1^M" CALL ZocWait "2>" ZocSuppressOutput 1 abst= ZocReceiveBuf(0) call SearchString 1,HEAD T=K call SearchString T, "Zn" T=K call SearchString T ,"00" CYL=word(abst,K+1) SecT=word(abst,K+2) call ATOB SecT SPT=reslt call ATOB LCYL LCYL=reslt call ATOB CYL dec_cyl=reslt+LCYL CYL= d2x(dec_cyl,8) FILE="D:\_dumps\0"||substr(HEAD,1,1)||"."||d2x(LCYL,03)||".BIN" IF STREAM(file, "C", "QUERY EXISTS")\="" THEN DO ADDRESS CMD DEL file END CALL STREAM file,"C","OPEN WRITE" ZocSend "s"||CYL||","||HEAD||"22^M" /* HEAD=0, или 1, ... */ ZocWait "2>" ZocSend "r,0,"||SecT||"^M" ZocWait "2>" Z=0 DO I=RD_BUFF TO RD_BUFF+SPT-1 BY 1 CALL ZocReceiveBuf 2048 w=D2X(I,04) ZocNotify "HD:"||"0"||substr(HEAD,1,1)||" CYL:"||CYL||" Sec:"||d2x(Z,04) ZocSend "B"||w||","||w||"^M" ZocWait "2>" abst= ZocReceiveBuf(0) BINSTRING="" DO K=29 TO words(abst)-1 BINSTRING=BINSTRING||substr(word(abst,K),1,2) END CALL CHAROUT file,X2C(BINSTRING) Z=Z+1 END CALL STREAM file,"C","CLOSE" LCYL=LCYL+1 BULK=BULK-1 IF BULK\=0 THEN DO LCYL=D2X(LCYL,03) SIGNAL x1 END LCYL=0 BULK=201 SIGNAL NEXT BYE: say "BYE!" EXIT ATOB: arg param p=0 reslt=0 param=reverse(PARAM) DO I=1 TO length(param) AI=x2d(substr(PARAM,I,1)) reslt=reslt+AI*(16**P) P=P+1 END RETURN SearchString: /* arg(1)= начало поиска. arg(2)=что искать */ DO K=arg(1) TO words(abst) IF word(abst,K)=arg(2) THEN DO leave END END RETURN |
| Всего записей: 339 | Зарегистр. 06-01-2018 | Отправлено: 12:10 12-02-2018 | Исправлено: seagateF3, 12:15 12-02-2018 |
|