Visual studio ';错误的文件模式';使用VB6打开对串行(COM)端口的读/写语句时出错
我尝试将一个旧的QBasic程序(用于从串行设备(COM端口)读取)迁移到Visual Basic 6 我使用此代码(此原始代码也适用于VB6): 这在QBasic上运行良好(发送'SND1'会从设备中获取数据),但VB6在Visual studio ';错误的文件模式';使用VB6打开对串行(COM)端口的读/写语句时出错,visual-studio,serial-port,basic,qbasic,Visual Studio,Serial Port,Basic,Qbasic,我尝试将一个旧的QBasic程序(用于从串行设备(COM端口)读取)迁移到Visual Basic 6 我使用此代码(此原始代码也适用于VB6): 这在QBasic上运行良好(发送'SND1'会从设备中获取数据),但VB6在打印-命令中会出现错误:“坏文件模式”(错误54) 如果我将随机的更改为输出的,打印-命令工作,但是行输入-命令会给出相同的错误(当然) 更新: “模式”(请参阅:)的唯一选项是追加、二进制、输入、输出或随机。请尝试: OPEN "COM1:2400,E,7,2,CS,DS,
打印
-命令中会出现错误:“坏文件模式”(错误54)
如果我将随机的更改为输出
的,打印
-命令工作,但是行输入
-命令会给出相同的错误(当然)
更新:
“模式”(请参阅:)的唯一选项是追加、二进制、输入、输出或随机。请尝试:
OPEN "COM1:2400,E,7,2,CS,DS,CD" FOR OUTPUT AS #1
PRINT #1, "SND1"
CLOSE #1
OPEN "COM1:2400,E,7,2,CS,DS,CD" FOR INPUT AS #1
LINE INPUT #1, P$
本剪贴画描述了如何使用GET/PUT访问在QB中随机打开的文件:
OPEN "COM1:9600,N,8,1,BIN,CS0,DS0" FOR RANDOM AS #1
DO
IF LOC(1) THEN
GET 1, , x
PRINT CHR$(x);
END IF
x$ = INKEY$
IF LEN(x$) THEN
IF x$ = CHR$(27) THEN END
x = ASC(x$)
PUT 1, , x
END IF
LOOP
END
你不能打开COM1端口进行读写吗?只提供选项:Append、Binary、Input、Output或RANDOM您可以执行Input | Output或'ing吗?不,这不是正确的语法,请参阅:您需要使用GET和PUT来打开随机文件。好吧,我无法测试它,但我的“希望”是在第一次打开时可以进行写入。我们关闭它,然后打开它进行写作。全猜!现在我在行输入
处得到一个错误(“输入超过文件末尾”)。可能与通信协议有关,我必须先弄清楚线路输入不意味着它需要/等待CRLF吗?
OPEN "COM1:9600,N,8,1,BIN,CS0,DS0" FOR RANDOM AS #1
DO
IF LOC(1) THEN
GET 1, , x
PRINT CHR$(x);
END IF
x$ = INKEY$
IF LEN(x$) THEN
IF x$ = CHR$(27) THEN END
x = ASC(x$)
PUT 1, , x
END IF
LOOP
END