Конфликт двух программ при обращении к текстовому файлу - VB
Формулировка задачи:
Доброго времени суток.
Постараюсь кратко, но емко…
Для управления роботом пишу на Visual Basic 6.0 программу, которая при нажатии клавиши «стрелка вперед» в текстовом файле меняет строку PORT11=0:NC на PORT11=128:NC. С задержкой 0,5 секунд к этому же текстовому файлу обращается другая программа и включает/отключает исполнительный механизм (пока это лампочка).
В первом варианте программы при нажатии «стрелка вперед» в текстовом файле меняет строку PORT11=0:NC на PORT11=128:NC. При нажатии «пробел» строки меняются обратно. В этой схеме все работает, но удобнее было бы, что бы строка менялась, пока удерживается «стрелка вперед» и возвращалась обратно при её отпускании.
Я написал и такой код, он представлен ниже. Код работает, в файле при нажатии меняется с 0 на 128, при отпускании меняется обратно на 0. Но стоит подключить вторую программу которая обращается к этому же файлу и включает/отключает исполнительный механизм, как начинаются проблемы.
При секундном нажатии все работает, лампочки мигают.
При длительном удержании появляется ошибка от моей скомпилированной программы: «Run-time error ’70’: Permission denied», иногда вторая программа ругается: «Cannot open file d:\MP.loc». Видимо в этот момент моя программа работает с файлом и не пускает вторую.
Подскажите, пожалуйста, как уладить конфликт?
Возможно, в коде, что-либо надо изменить?
Листинг программы
- Dim textline As String
- Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
- If KeyCode = vbKeyUp Then
- textline = Space(FileLen("d:\ MP.loc"))
- fo = FreeFile
- Open "d:\ MP.loc" For Input As #fo
- textline = Input(LOF(fo), #fo)
- Close #fo
- textline = Replace(textline, "PORT11=0:NC", "PORT11=128:NC")
- FileNum = FreeFile
- Open "d: \MP.loc" For Output As FileNum
- Print #FileNum, textline
- Close #FileNum
- End If
- End Sub
- Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
- If KeyCode = vbKeyUp Then
- textline = Space(FileLen("d:\ MP.loc"))
- fo = FreeFile
- Open "d:\ MP.loc" For Input As #fo
- textline = Input(LOF(fo), #fo)
- Close #fo
- textline = Replace(textline, "PORT11=128:NC", "PORT11=0:NC")
- FileNum = FreeFile
- Open "d:\MP.loc" For Output As FileNum
- Print #FileNum, textline
- Close #FileNum
- End If
- End Sub
Решение задачи: «Конфликт двух программ при обращении к текстовому файлу»
textual
Листинг программы
- ' Открываем файл для последовательной записи.
- ' Причём другие процессы также могут записывать или читать этот файл.
- Open "TESTFILE" For Output Shared As #1
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д