Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: www.kamchatka.ru
 Профиль | | #1
Добавлено: 02.04.03 13:31

Open "C:\TEST.TXT" For Binary As #1 ' <<< Тут ошибки произойти не может (c)win2000

Open "lpt1" For Binary As #2 <<< тут у меня слетает, допиши код.

Ответить

Номер ответа: 2
Автор ответа:
 P



ICQ: 346632205 

Вопросов: 5
Ответов: 86
 Профиль | | #2 Добавлено: 02.04.03 13:39
А у меня под XP всё пашет отлично

Ответить

Номер ответа: 3
Автор ответа:
 Stick



Вопросов: 45
Ответов: 49
 Web-сайт: www.kamchatka.ru
 Профиль | | #3
Добавлено: 02.04.03 14:11

Видать у меня порт не установлен, а вообще твой код работать будет под всеми виндами, я тебе говорю т.к. сам не раз сталкивался с таким вопросом. Советую лшь проверять установлен-ли порт, что бы не было ошибок как у меня.

Ответить

Номер ответа: 4
Автор ответа:
 Comanche



Вопросов: 87
Ответов: 459
 Профиль | | #4 Добавлено: 02.04.03 14:25

Конечно, я опечатался: "ЗДЕСЬ МОЖЕТ РУГНУТЬСЯ" должно стоять напротив Open "lpt1" For Binary As #2

А наличие порта я проверяю, обязательно.

Итак, под XP пашет. Спасибо огромное! Буду ждать, пока будут результаты по NT и 2000...

 

PS: Я сам не пробовал, но где-то в Сети видел заметку, что вместо Open "LPT1" можно (или нужно?) писАть Open "LPT1.DOS". Так что если у кого тест с моим кодом не пройдёт (будет ошибка), то попробуйте пожалуйста вариант с LPT1.DOS. По-моему (но опять-таки, не уверен), эта заметка касалась NT.

 

Ещё раз всем спасибо!    

Ответить

Номер ответа: 5
Автор ответа:
 Comanche



Вопросов: 87
Ответов: 459
 Профиль | | #5 Добавлено: 02.04.03 18:45

Кстати, код может отработать и без ошибок (допустим), но просто в итоге ничего в порт не попадёт, т.к. вместо этого просто создастся (в текущей директории) файл с именем "lpt1". Поэтому просьба: добавьте ещё в начало кода установку текущей директории в C:\ и проверяйте, please, что не появилось файла C:\lpt1.

Установка директории:
ChDrive "C"
ChDir "C:\"

Спасибо!

PS: Приятель принёс грустную весть: под 2000-ми код не работает - прога "виснет". Порт LPT1 у него свободен (принтера на нём нет).

 

Ответить

Номер ответа: 6
Автор ответа:
 Comanche



Вопросов: 87
Ответов: 459
 Профиль | | #6 Добавлено: 02.04.03 20:45

К моему последнему сообщению:

в форуме Relib меня поправили: чтобы не морочиться с файлом C:\lpt1, лучше просто писАть Open "lpt1:" вместо Open "lpt1", - т.е. добавлять двоеточие. Т.к. двоеточие - недопустимый для имени файла символ, то программа или именно В ПОРТ будет писАть данные, или не будет работать вообще.

 

Ответить

Номер ответа: 7
Автор ответа:
 Millenium



ICQ: 629966 

Вопросов: 118
Ответов: 903
 Web-сайт: www.aliyev.us
 Профиль | | #7
Добавлено: 03.04.03 10:43

Прикольно!

Знач. так!

Если пот сушествует, сначала проверь его на занетость...
В НТ это надо делать в первую очередь!!!
А потом уже можеш посылать не тока бианрй но и что душе угодно!!!

У меня когда порт занят (мониторинг) он не пашет, ругается только номером ошибки...

А когда мониторинг и пр. отключаеш и порт 100% освобождается, то всё кул!!!

Ответить

Номер ответа: 8
Автор ответа:
 Millenium



ICQ: 629966 

Вопросов: 118
Ответов: 903
 Web-сайт: www.aliyev.us
 Профиль | | #8
Добавлено: 03.04.03 10:44
ПРоверь порт на занятость!!!

Ответить

Номер ответа: 9
Автор ответа:
 Миха



ICQ: 394243 

Вопросов: 20
Ответов: 151
 Web-сайт: www.visualbasic.boom.ru
 Профиль | | #9
Добавлено: 16.04.03 17:25
А не работает.(win2000 server).

Ответить

Номер ответа: 10
Автор ответа:
 Comanche



Вопросов: 87
Ответов: 459
 Профиль | | #10 Добавлено: 16.04.03 18:16

2Миха:

А чё пишет?

Ответить

Номер ответа: 11
Автор ответа:
 Неясов_Андрей



ICQ: 674522 

Вопросов: 17
Ответов: 21
 Web-сайт: fans.saturn-fc.ru
 Профиль | | #11
Добавлено: 17.04.03 13:16

На XP всё пашет!!!

Ответить

Номер ответа: 12
Автор ответа:
 Миха



ICQ: 394243 

Вопросов: 20
Ответов: 151
 Web-сайт: www.visualbasic.boom.ru
 Профиль | | #12
Добавлено: 17.04.03 20:33
Под win2000 server чего-то про порт пишет , а в w2000 pro работает вроде бы без глюков.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам