Страница: 1 |
Open "C:\TEST.TXT" For Binary As #1 ' <<< Тут ошибки произойти не может (c)win2000 Open "lpt1" For Binary As #2 <<< тут у меня слетает, допиши код. Видать у меня порт не установлен, а вообще твой код работать будет под всеми виндами, я тебе говорю т.к. сам не раз сталкивался с таким вопросом. Советую лшь проверять установлен-ли порт, что бы не было ошибок как у меня. Конечно, я опечатался: "ЗДЕСЬ МОЖЕТ РУГНУТЬСЯ" должно стоять напротив Open "lpt1" For Binary As #2 А наличие порта я проверяю, обязательно. Итак, под XP пашет. Спасибо огромное! Буду ждать, пока будут результаты по NT и 2000... PS: Я сам не пробовал, но где-то в Сети видел заметку, что вместо Open "LPT1" можно (или нужно?) писАть Open "LPT1.DOS". Так что если у кого тест с моим кодом не пройдёт (будет ошибка), то попробуйте пожалуйста вариант с LPT1.DOS. По-моему (но опять-таки, не уверен), эта заметка касалась NT. Ещё раз всем спасибо! Кстати, код может отработать и без ошибок (допустим), но просто в итоге ничего в порт не попадёт, т.к. вместо этого просто создастся (в текущей директории) файл с именем "lpt1". Поэтому просьба: добавьте ещё в начало кода установку текущей директории в C:\ и проверяйте, please, что не появилось файла C:\lpt1. Установка директории: Спасибо! PS: Приятель принёс грустную весть: под 2000-ми код не работает - прога "виснет". Порт LPT1 у него свободен (принтера на нём нет). К моему последнему сообщению: в форуме Relib меня поправили: чтобы не морочиться с файлом C:\lpt1, лучше просто писАть Open "lpt1:" вместо Open "lpt1", - т.е. добавлять двоеточие. Т.к. двоеточие - недопустимый для имени файла символ, то программа или именно В ПОРТ будет писАть данные, или не будет работать вообще. Прикольно! Знач. так! Если пот сушествует, сначала проверь его на занетость... У меня когда порт занят (мониторинг) он не пашет, ругается только номером ошибки... А когда мониторинг и пр. отключаеш и порт 100% освобождается, то всё кул!!! 2Миха: А чё пишет? На XP всё пашет!!! Страница: 1 |
Вопрос: Протестируйте пожалуйста этот код под NT, 2000, XP
Добавлено: 02.04.03 13:23
Автор вопроса: Comanche
Протестируйте пожалуйста этот код под NT, 2000, XP.
Под Win98 он работает. Он посылает файл C:\Test.txt в порт LPT1
аналогично тому, как это делает DOS-команда copy.
Нужно создать проект с формой Form1 и кнопкой Command1 на ней.
Вместо файла C:\TEST.TXT можно использовать любой другой.
Перед запуском, вероятно, лучше отключить от LPT1 ваш принтер.
Есть предположение, что "NT-подобные" Винды (NT/2000/XP) не позволят
выполнить команду Open "C:\TEST.TXT" For Binary As #1.
Sub Command1_Click()
Const MaxSize = 8192 'max buffer size
Dim Chunk As String 'buffer to hold data
Dim numLoops As Long 'number of 8k loops
Dim LeftOver As Integer 'amount of file left
Dim i As Integer 'counter for loops
Command1.Enabled = False
Me.Caption = "Открываю порт LPT1..."
'open our datafile and printer port
Open "C:\TEST.TXT" For Binary As #1 ' <<< ЗДЕСЬ МОЖЕТ РУГНУТЬСЯ NT/2000/XP
Open "lpt1" For Binary As #2
'calculate size of file and amount left over
Me.Caption = "Посылаю C:\TEST.TXT в порт LPT1..."
numLoops = LOF(1) \ MaxSize
LeftOver = LOF(1) Mod MaxSize
'initialize variables and loop
Chunk = Space$(MaxSize)
For i = 1 To numLoops
Get #1, , Chunk
Put #2, , Chunk
DoEvents
Next
'grab what's leftover
Chunk = Space$(LeftOver)
Get #1, , Chunk
Put #2, , Chunk
DoEvents
Me.Caption = "Закрываю порт LPT1..."
'close all our open files
Close #2
Close #1
Unload Me
End Sub
Заранее всем спасибо!
Ответы
Всего ответов: 12
Номер ответа: 1
Автор ответа:
Stick
Вопросов: 45
Ответов: 49
Web-сайт:
Профиль | | #1
Добавлено: 02.04.03 13:31
Номер ответа: 2
Автор ответа:
P
ICQ: 346632205
Вопросов: 5
Ответов: 86
Профиль | | #2
Добавлено: 02.04.03 13:39
А у меня под XP всё пашет отлично
Номер ответа: 3
Автор ответа:
Stick
Вопросов: 45
Ответов: 49
Web-сайт:
Профиль | | #3
Добавлено: 02.04.03 14:11
Номер ответа: 4
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #4
Добавлено: 02.04.03 14:25
Номер ответа: 5
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #5
Добавлено: 02.04.03 18:45
ChDrive "C"
ChDir "C:\"
Номер ответа: 6
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #6
Добавлено: 02.04.03 20:45
Номер ответа: 7
Автор ответа:
Millenium
ICQ: 629966
Вопросов: 118
Ответов: 903
Web-сайт:
Профиль | | #7
Добавлено: 03.04.03 10:43
В НТ это надо делать в первую очередь!!!
А потом уже можеш посылать не тока бианрй но и что душе угодно!!!
Номер ответа: 8
Автор ответа:
Millenium
ICQ: 629966
Вопросов: 118
Ответов: 903
Web-сайт:
Профиль | | #8
Добавлено: 03.04.03 10:44
ПРоверь порт на занятость!!!
Номер ответа: 9
Автор ответа:
Миха
ICQ: 394243
Вопросов: 20
Ответов: 151
Web-сайт:
Профиль | | #9
Добавлено: 16.04.03 17:25
А не работает.(win2000 server).
Номер ответа: 10
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #10
Добавлено: 16.04.03 18:16
Номер ответа: 11
Автор ответа:
Неясов_Андрей
ICQ: 674522
Вопросов: 17
Ответов: 21
Web-сайт:
Профиль | | #11
Добавлено: 17.04.03 13:16
Номер ответа: 12
Автор ответа:
Миха
ICQ: 394243
Вопросов: 20
Ответов: 151
Web-сайт:
Профиль | | #12
Добавлено: 17.04.03 20:33
Под win2000 server чего-то про порт пишет , а в w2000 pro работает вроде бы без глюков.