我正在努力使用QBASIC阅读设备回复。问题是在输出数据之前等待Newline或Chr $(13)的等待,但是我的设备回复没有CHR $(13)(示例:" OK"),因此QBasic Hang等待Newline。
即使没有newline,我如何获得答复或读取comport?这可能吗?
[edit]
CLS
OPEN "com2:9600,n,8,1,BIN,cs,ds,rs" FOR RANDOM AS #1
param$ ="Some data"
PRINT #1, param$
DO WHILE b$ <> "*CLOSE*"
INPUT #1, b$
PRINT b$
LOOP
那是我的代码,但是在该代码中,它无法读取*CLOSE*
,因为*CLOSE*
之后没有newline。
和另一件事设备在回复之前延迟5秒。
您可以举一个代码的示例吗?我怀疑您正在使用INPUT#n
,但也许您应该使用INPUT$(x)
。我在这里找到了一个示例,请参见下面的代码
a$ = ""
DO
IF LOC(1) THEN a$ = a$ + INPUT$(1, 1)
LOOP UNTIL INSTR(a$, "OK")
此代码示例演示了基本中的调制解调器。
REM Reset modem source:
CLS
OPEN "COM2:9600,N,8,1,BIN,CS,DS,RS" FOR RANDOM AS #1
Reset$ = "ATZ" + CHR$(13) + CHR$(10)
PRINT #1, Reset$;
Inp$ = ""
DO
IF LOC(1) THEN
Inp$ = Inp$ + INPUT$(1, 1)
IF INSTR(Inp$, "OK") THEN
PRINT "Modem reset."
EXIT DO
END IF
END IF
LOOP
END