| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm: Общие вопросы > Win 2000 ошибка? |
| Автор: Mephisto 23.2.2004, 19:26 | ||
Почему в вин 2000 и ХР при запуске данного кода выбивает ошибку, хотя в других ничего нет? |
| Автор: Serzh 23.2.2004, 20:45 |
| дык не разрешает нт порты вроде... а с лпт мона и по другому работать. |
| Автор: VAV 24.2.2004, 21:49 |
| А как усётаки в NT,2000,XP с портами работать? |
| Автор: Mephisto 25.2.2004, 15:21 | ||
А как всё таки? |
| Автор: Mephisto 5.4.2004, 17:29 |
| Люди, ну очень нуна. Может кто знает? |
| Автор: oleg1973 5.4.2004, 20:26 |
| делаеш createfile с именем lpt и все, работаеш как с файлом, пишеш тудыть и читаеш оттудыть |
| Автор: Mephisto 20.4.2004, 18:13 |
| У меня устройство работает с лпт. Мне необхоимо тудыть биты передавать. В вынь 98 нет проблем а в 2000 фанарь. |
| Автор: Mephisto 26.4.2004, 17:08 | ||
Есть такое дело. Но, когда создаю такой файл, но нет никакого драйвера принтера, то функция возвращает ошибку. А если принтер установлен, то пишет что принтер не отвечает! А ваще каким образом мона управлять регистрами? Я пользуюсь функцией WriteFile для синхронной передачи. Функцией DeviceIOControl не могу. Какой-то из парамеров не знаю как установить. По-моему второй. Сейчас просто нет при себе исходников. |
| Автор: Jin X 26.4.2004, 21:25 |
| Имелся в виду файл с именем "lpt1", "lpt2" и т.д, какой именно нужен. Вот ещё глянь: http://www.skvozilka.com.ru/Delphi/Doc/hardware.htm |
| Автор: Kagor 26.4.2004, 23:10 | ||
| Ошибся, почему-то подумал, что это форум по C/C++. Добавлено @ 23:17 А вообще может, кому ни будь пригодиться пример по работе с COM портами на C++(должно и в 2k и в Xp работать).
|
| Автор: Mephisto 27.4.2004, 16:49 | ||||
Это хорошо, но как таким образом работать с ЛПТ. С таким синаксисом я выдаю в порт 1 байт, но этот гад выдает этот байт на драйвер, и ставит в очередь на печать. Естественно принтер не отвечает. Позже вылазит ошибка. Функция OUT запрещена, прерывание int 17h также ссылается на драйвер, о результате можете сами догадатся! НО...:
Вот этот код на тасме не выдает ошибки, к моему удивлению, но нифига не делает! Что тоже меня удивляет. Может растолкует мне кто почему? |
| Автор: Kagor 28.4.2004, 19:45 |
| Mephisto В NT(2k, Xp 2k+3) драйвер уровня ядра может напрямую работать с портами, т.е. без дополнительных извратов, так может тебе написать драйвер и работать через него? |
| Автор: Chingachguk 28.4.2004, 21:09 | ||
Интересно, таблицы подстановок запрещено использовать ?... |
| Автор: Kagor 28.4.2004, 22:36 | ||
Chingachguk
|
| Автор: DHK 29.4.2004, 19:14 |
| Примерчик на паскале. Обмен с COM портом. По аналогии сделай с LPT. Работает в 2000, 98, ХР ... uses Crt; Type TBinary = String[8]; Var RSt:Byte; Ch : Char; BinStat, BinDat : TBinary; f:text; Function BBinary(B:Byte):TBinary; Var Bit,I : Byte; TempS : TBinary; Begin TempS:=''; TempS[0]:=Chr(8); Bit:=1; For I:=0 To 7 Do TempS[8-i]:=Chr(Ord('0')+((Bit shl i) And B) shr i); BBinary:=TempS; End; Procedure Init_Com2; var DIni : Byte; begin DIni:= 127; { DLAB set} Port[$3FB] := DIni ; DIni:= $00; Port[$3F9] := DIni ; { High byte divider } DIni:= 12; Port[$3F8] := DIni ; { Low byte divider } DIni:= $00; Port[$3FB] := DIni; { DLAB clear} DIni:= $02; { 0000 0010} Port[$3FB] := DIni; DIni := $00; Port[$3F9] := DIni; DIni :=$0B; {00011011} Port[$3FC]:=DIni; End; Procedure Eror; Begin end; Procedure ReadData; Begin Ch:= Chr(Port[$3F8]); Write(Ch); end; Procedure WriteData; Begin Ch := ReadKey; Port[$278] := Ord(Ch); end; Begin clrscr; Init_Com2; assign(f,'text.txt'); reset(f); RSt:= Port[$3FD]; while not eof(f) do Begin read(f,Ch); Port[$3F8]:=Ord(Ch); BinStat:=Bbinary(Port[$3FD]); delay(10); if BinStat[5] = '0' then ReadData; End; Close(f); Ch:=readkey; End. |
| Автор: Mephisto 6.5.2004, 18:07 | ||
Отсюда мона подробнее? |
| Автор: Kagor 10.5.2004, 01:26 | ||||
jmp http://www.wasm.ru |