home *** CD-ROM | disk | FTP | other *** search
/ FreeWare Collection 2 / FreeSoftwareCollection2pd199x-jp.img / fbasic / scanner / gts_32.bas < prev   
BASIC Source File  |  1990-06-14  |  5KB  |  149 lines

  1. 10 '**************************
  2. 20 '* F-BASIC386         << SCANNER PROGRAM >>       *
  3. 30 '*   COLOR IMAGE SCANNER  *  32K.COLOR 9600bps  * *
  4. 40 '*   GT-1000(GT-1000mode GT-3000Vmode), GT-4000   *
  5. 50 '*     COPYRIGHT FUJITSU LIMITED 1989             *
  6. 60 '*                                                *
  7. 70 '*   (AUTHOR) : HIDENORI-ISHIKIRIYAMA.            *
  8. 80 '*   (DATE.W) : 1989. 7.13                        *
  9. 90 '**************************
  10. 100 '
  11. 110 CLS
  12. 120 SCREEN@ 1
  13. 130 COLOR 6 : LOCATE 31,8 : PRINT "画像処理中 !!" : COLOR 7
  14. 140 DEFLNG A-Y
  15. 150 DEFDBL Z
  16. 160 DIM CH(161),KAI(2)
  17. 170 CC=0
  18. 180 KAI(0)=1024 : KAI(1)=32 : KAI(2)=1
  19. 190 OPEN "I",#2,"COM0:"
  20. 200 OPEN "O",#1,"COM0:"
  21. 210 ESC$=CHR$(27)
  22. 220 STX$=CHR$(2)
  23. 230 ACK$=CHR$(6)
  24. 240 CAN$=CHR$(24)
  25. 250 '
  26. 260 ' コマンドパラメータ設定
  27. 270 '
  28. 280 COL=1 :                   ' 色指定       Cコマンド
  29. 290 DFO=5 :                   ' データフォーマット Dコマンド
  30. 300 MID=0 :                   ' 中間調処理          Bコマンド
  31. 310 SZOMX=100 : SZOMY=100 :   ' ズーム設定          Hコマンド
  32. 320 R1=100 : R2=100 :         ' 解像度設定          Rコマンド
  33. 330 NOU=1 :                   ' 濃度補正      Zコマンド
  34. 340 '
  35. 350                           ' 読み取り可能範囲
  36. 360       ' MAX=8*(INT((2.96!*R1*SZOMX/100+.1!)/8))   :'''GT-1000 mode
  37. 370       ' MAY=INT(4.2!*R2*SZOMY/100+.1!)
  38. 380 MAX=8*(INT((4*R1*SZOMX/100+.1!)/8))               :'''GT-3000V mode
  39. 390 MAY=INT(6.4!*R2*SZOMY/100+.1!)
  40. 400       ' MAX=8*(INT((8.56!*R1*SZOMX/100+.1!)/8))   :'''GT-4000
  41. 410       ' MAY=11.6!*R2*SZOMY/100
  42. 420 '
  43. 430 XST=0 : YST=0 :           ' 読み取り開始位置   Aコマンド
  44. 440 XEN=MAX-1 : YEN=MAY-1 :   ' 読み取り終了位置         
  45. 450 IF XEN>319 THEN XEN=319   ' 最大 (0,0)-(319,239) チェック
  46. 460 IF YEN>239 THEN YEN=239
  47. 470 '
  48. 480 DIM GD$(3,YEN,4)
  49. 490 '
  50. 500 'コマンド実行
  51. 510 '
  52. 520 SCOM$=ESC$+"C"
  53. 530  PAR$=CHR$(COL) : GOSUB *SENDDATA
  54. 540 SCOM$=ESC$+"D"
  55. 550  PAR$=CHR$(DFO) : GOSUB *SENDDATA
  56. 560 SCOM$=ESC$+"B"
  57. 570  PAR$=CHR$(MID) : GOSUB *SENDDATA
  58. 580 SCOM$=ESC$+"H"
  59. 590  PAR$=CHR$(SZOMX)+CHR$(SZOMY) : GOSUB *SENDDATA
  60. 600 SCOM$=ESC$+"R"
  61. 610  PAR$=CHR$(R1 MOD 256)+CHR$(R1 \ 256)+CHR$(R2 MOD 256)+CHR$(R2 \ 256)
  62. 620  GOSUB *SENDDATA
  63. 630 SCOM$=ESC$+"A"
  64. 640  PAR$=CHR$(XST MOD 256)+CHR$(XST \ 256)+CHR$(YST MOD 256)
  65. 650  PAR$=PAR$+CHR$(YST \ 256)+CHR$((XEN+1) MOD 256)+CHR$((XEN+1) \ 256)
  66. 660  PAR$=PAR$+CHR$((YEN+1) MOD 256)+CHR$((YEN+1) \ 256)
  67. 670  GOSUB *SENDDATA
  68. 680 SCOM$=ESC$+"Z"
  69. 690  PAR$=CHR$(NOU) : GOSUB *SENDDATA
  70. 700 '
  71. 710 PRINT #1,ESC$+"G";
  72. 720 '
  73. 730 ' MAIN
  74. 740 '
  75. 750 '     データREAD
  76. 760 '
  77. 770 FOR COL=0 TO 2
  78. 780   FOR L=YST TO YEN
  79. 790     *WAIT
  80. 800      HD$=INPUT$(1,#2) : IF HD$<>STX$ THEN *WAIT
  81. 810      ST$=INPUT$(1,#2)
  82. 820       IF (ASC(ST$) AND &H40)<>0 THEN GOSUB *SENDA : GOTO *WAIT
  83. 830      ST$=INPUT$(2,#2)
  84. 840      FOR ST=1 TO ((XEN-1) \ 200)+1
  85. 850        RED=200
  86. 860        IF ST=((XEN-1) \ 200)+1 THEN RED=((XEN-1) MOD 200)+2
  87. 870        GD$(COL,L,ST)=INPUT$(RED,#2)
  88. 880 ::::::::: IF INKEY$=ESC$ THEN GOSUB *SENDC : END :::::::::: ESC
  89. 890      NEXT ST
  90. 900     IF L<>YEN THEN GOSUB *SENDA 
  91. 910   NEXT L
  92. 920 NEXT COL
  93. 930 PRINT #1,ESC$;"@";:DUMMY$=INPUT$(1,#2)
  94. 940 CLOSE
  95. 950 '
  96. 960 '     データ変換
  97. 970 '
  98. 980 FOR COL=0 TO 2
  99. 990   FOR L=YST TO YEN
  100. 1000     FOR ST=1 TO ((XEN-1) \ 200)+1
  101. 1010       GD$=GD$(COL,L,ST)
  102. 1020       FOR BY=1 TO LEN(GD$) STEP 2
  103. 1030         CH(CC)=(ASC(MID$(GD$,BY,1))/8)*KAI(COL)
  104. 1040         CH(CC)=CH(CC)+(ASC(MID$(GD$,BY+1,1))/8)*KAI(COL)*65536
  105. 1050         CC=CC+1
  106. 1060       NEXT BY
  107. 1070     NEXT ST
  108. 1080   PUT@A (XST,L)-(XEN,L),CH,OR
  109. 1090   CC=0
  110. 1100   NEXT L
  111. 1110 NEXT COL
  112. 1120 CLS 4
  113. 1130 END
  114. 1140 '
  115. 1150 '
  116. 1160 'SUB.
  117. 1170 '
  118. 1180  *SENDDATA
  119. 1190   PRINT #1,SCOM$;
  120. 1200   A$=INPUT$(1,#2):IF A$ <> ACK$ THEN *ERR
  121. 1210   PRINT #1,PAR$;
  122. 1220   A$=INPUT$(1,#2):IF A$ <> ACK$ THEN *ERR
  123. 1230  RETURN
  124. 1240 '
  125. 1250  *SENDA
  126. 1260   PRINT #1,ACK$;
  127. 1270  RETURN
  128. 1280 '
  129. 1290  *SENDC
  130. 1300   PRINT #1,CAN$;
  131. 1310  RETURN
  132. 1320 '
  133. 1330  *ERR
  134. 1340   CLS
  135. 1350   PRINT "ERROR !"
  136. 1360   PRINT RIGHT$(SCOM$,1);"コマンド ERROR !"
  137. 1370  END
  138. 1380 '
  139. 1390 '
  140. 1400 ' このプログラムはカラーイメージスキャナ GT-4000・GT-1000
  141. 1410 ' で使用できます。
  142. 1420 ' 360-410行の式から使用する機種・モードにあったものを選択
  143. 1430 ' して下さい。  (転送速度は9600bpsに設定して実行して下さい。)
  144. 1440 '
  145. 1450 ' 読み込みを途中で終了するときは[ESC]キーを押して下さい。
  146. 1460 '
  147. 1470 '** 読み取りサイズや、解像度などは280-440行で変更できます。
  148. 1480 '
  149.