2014-03-05 17 views
1

我嘗試將舊的QBasic程序從串行設備(COM端口)讀取到Visual Basic 6中。錯誤的文件模式錯誤使用VB6讀取/寫入串行(COM)端口的OPEN語句

我用這個代碼(這個原代碼應該VB6的工作也):

RESET 
OPEN "COM1:2400,E,7,2,CS,DS,CD" FOR RANDOM AS #1 
PRINT #1, "SND1" 
LINE INPUT #1, P$ 

這正常工作與QBasic中(發送「SND1」讓我從設備中的數據),但VB6在給出了一個錯誤PRINT -command:'錯誤文件模式'(錯誤54)。

如果我改變FOR RANDOMFOR OUTPUTPRINT - 命令的作品,但隨後LINE INPUT -command給出了同樣的錯誤(當然)。

UPDATE:

關於 '模式' 的唯一選項(見:http://msdn.microsoft.com/en-us/library/aa266177(v=vs.60).aspx)是追加,二進制,輸入,輸出,或隨機的。

+0

無法打開COM1口** **讀和寫? –

+0

http://msdn.microsoft.com/en-us/library/aa266177(v=vs.60).aspx只給出選項:追加,二進制,輸入,輸出或隨機 – waanders

+0

你可以做輸入|輸出,的OR'ing? –

回答

1

嘗試:

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$ 
+0

在答案中解釋它爲什麼會起作用。 –

+0

好吧,我無法測試它,但我的「希望」是寫作會在首次公開時發生。我們關閉它,然後打開它寫入。總猜測! –

+0

現在我在'LINE INPUT'處得到一個錯誤('輸入文件末尾')。可能與通信協議有關,我想先弄清楚 – waanders

0

這剪斷介紹如何使用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