PC1500连接CE158后,就可以通过RS-232串行口与PC进行通讯,现在出现了这样的问题:
PC端使用XP系统,使用XP自带的超级终端与PC-1500通讯,但PC1500从PC下载的BASIC代码总出现问题,具体的症状如下:
BASIC每行代码都有一个行号,比如10、123、333、567、999、1000、1111,只要行号含有3位相同的数字,比如:111、999、7999这样的,PC1500从PC下载到本地内存后,必定出错。在PC上将BASIC行号改成非3位相同的数字,则PC1500下载后没问题。
照理说如果传输过程中有误码或者错误,其它传输中的字符也应该出现这样的错误,但是没有,只有行号出错。
换过终端通讯软件,但很多都不能正常工作,还不如XP自带的超级终端好用,检查过线缆的物理连接,应该没问题。
RS232的物理连接方法是参照下面这个图自己做的
PC1500端用于传输的命令:
OUTSTAT0
SETCOM110,8,N,1
SETDEVCI
CLOADa
奇怪的问题原因在哪里?哪位朋友可以帮忙解释一下?非常感谢!
--------------------
11月9日更新
更换了终端通讯软件为SecureCRT,传送类似
111 A=888
222 PRINT A
333 PRINT "000 2222 3333333 9999"
这样的3位相同连续ASCII字符+空格的似乎是没问题问题了,但出现了新的问题,PC1500从PC下载一个正常的BAS文件时,总是在固定的一行出错,错误代码 ERROR 67
下面是出现ERROR 67问题的整段BASIC代码的样本,下载完第60行时,PC1500就会提示出错,错误代码 ERROR 67,这段代码之前在PC1500上是能够正常运行的。
第60行的代码:
出现ERROR 67的情况不仅出现在SerureCRT上,在使用XP自带的超级终端时也会出现一模一样的问题,现在还想不出来是为什么。
- 1 DATA "185C7F5C18","1C3E7C3E1C","0C4F734F0C","183C7E3C18"
- 10 " "CLEAR :RESTORE :DIM C(7),S(7),G$(4):H=5:RANDOM
- 15 FOR I=1TO 4:READ G$(I):NEXT I
- 17 WAIT 0:CLS :CURSOR 9:PRINT "Piles Jr."
- 20 FOR I=0TO 5
- 25 "RAND"WAIT 0:C=RND 13:S=RND 4
- 30 FOR J=0TO 5
- 40 IF C=C(J)AND S=S(J)THEN GOTO "RAND"
- 50 NEXT J
- 60 C(I)=C:S(I)=S:NEXT I
- 70 "HERE"GOSUB "DISP":GOSUB "SEL":GOTO 100
- 75 "DISP"CLS :WAIT 0:FOR I=0TO H
- 76 T$=STR$ (C(I)):IF C(I)=11LET T$="J"
- 77 IF C(I)=12LET T$="Q"
- 78 IF C(I)=13LET T$="K"
- 79 IF C(I)=1LET T$="A"
- 80 CURSOR (I*4+1):PRINT T$;:GPRINT G$(S(I));:NEXT I:RETURN
- 85 GOSUB "SEL":GOTO 100
- 90 "SEL"A$=INKEY$ :IF (ASC (A$)<17OR ASC (A$)>24)GOTO 90
- 95 RETURN
- 100 S1=(ASC (A$)-17):BEEP 1,16,20
- 101 IF S1=7GOSUB "QUIT"
- 110 GOSUB "SEL":S2=(ASC (A$)-17):BEEP 1,16,20
- 111 IF S2=7GOSUB "QUIT"
- 120 WAIT :IF (C(S1)<>C(S2))AND (S(S1)<>S(S2))CLS :PAUSE "TT":GOTO "HERE"
- 130 WAIT :IF (S1-S2)<>3AND (S1-S2)<>1CLS :PAUSE "That is not a legal move":GOTO "HERE"
- 200 C(S2)=C(S1):S(S2)=S(S1)
- 210 C(S1)=0:S(S1)=0
- 220 FOR I=S1TO H-1
- 230 C(I)=C(I+1):S(I)=S(I+1)
- 240 NEXT I
- 500 H=H-1:IF H=0BEEP 5:CLS :CURSOR 8:PAUSE "You won!!!"
- 550 GOTO "HERE"
- 1001 "QUIT"CLS :PRINT "Quit game? (Y) (N)":GOSUB "SEL"
- 1010 IF ASC (A$)=21GOTO "SURE"
- 1020 IF ASC (A$)=22RETURN
- 1050 "SURE"CLS :PRINT "Play again? (Y) (N)"
- 1060 GOSUB "SEL"
- 1070 IF ASC (A$)=21GOTO " "
- 1080 IF ASC (A$)=22END
- 1999 RETURN
还有一些信息在楼下的帖子里,也请一并阅读。
2014.11.12更新:耗费精力和时间太大,暂时先不捣鼓了,对所有帮忙的朋友表示衷心的感谢!
[ 此帖被8139在2014-11-12 22:20重新编辑 ]