Visual studio ';错误的文件模式';使用VB6打开对串行(COM)端口的读/写语句时出错

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,

我尝试将一个旧的QBasic程序(用于从串行设备(COM端口)读取)迁移到Visual Basic 6

我使用此代码(此原始代码也适用于VB6):

这在QBasic上运行良好(发送'SND1'会从设备中获取数据),但VB6在
打印
-命令中会出现错误:“坏文件模式”(错误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