Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Чтение из порта LPT / 7 сообщений из 7, страница 1 из 1
24.10.2005, 15:18:34
    #33340548
talgat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из порта LPT
В паскале при чтении порта в цикле Writeln(port[$378]) всегда цифра 4, хотя замыкаю D1 на GND. D1-D8 это входные данные ?
...
Рейтинг: 0 / 0
24.10.2005, 15:20:01
    #33340550
Tov. Drujba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из порта LPT
А что, в нете разводку LPT сложно найти?
...
Рейтинг: 0 / 0
24.10.2005, 15:23:53
    #33340564
talgat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из порта LPT
Tov. DrujbaА что, в нете разводку LPT сложно найти?
Корочу конкретно ножку 2
...
Рейтинг: 0 / 0
24.10.2005, 15:30:34
    #33340594
talgat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из порта LPT
Физически это должно быть правильно.На D1-D8 высокие лог.уровни и при замыкании на GND состояние должно изменится. Я думаю может неправильно к порту обращаюсь ? Порт LPT свободный (Принтера НЕТ)
...
Рейтинг: 0 / 0
24.10.2005, 16:02:06
    #33340687
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из порта LPT
talgatВ паскале при чтении порта в цикле Writeln(port[$378]) всегда цифра 4, хотя замыкаю D1 на GND. D1-D8 это входные данные ?

данные на порту LPT это ВЫХОДНЫЕ данные... Их можно использовать как входные в моделях компов с некоторых пор... Другими словами, для чтения из порта у Вас сам порт должен поддерживать ДВУНАПРАВЛЕННЫЙ (увидеть просто на железе - либо сразу контроллер лапками выходит, либо двунаправленный шинник стоит, или просто буффер-защёлка) обмен данными и ничем этот функционал НЕ должен быть запрещён (BIOS, OS). Вот тоды Вы сможете "пощупать" порт.

Обычно, что бы программа "работала как танк" делают ввод НЕ на шине данных а на вспомогательных пинах LPT порта. Их там 5 штук должно быть... Ну и распределяют обычно 4 данные и один строб. Кидают байт по 4 бита...


удачи Вам
(круглый)
...
Рейтинг: 0 / 0
24.10.2005, 16:48:10
    #33340848
talgat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из порта LPT
Использовал 12 пин. Заработало. Правда вместо port пришлось использовать portw. Спасибо
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
04.04.2009, 09:16:55
    #35911919
anubys
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из порта LPT
Вот нашел эту тему, наверное она наиболее подходящая. Вообщем, есть программа, которая читает данные с LPT порта, используюя бибилиотеку Inpout32.dll. Проблема в следующем: если на одном компьютере я при чтении я получаю одни числа, то на другом - другие (причем все они различаются на 7 в десятичной системе). Пины при этом замыкаются идентично. С чем это может быть связано?
Вот на всякий случай текст программы:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
using namespace std;
 void _stdcall Out32(short PortAddress, short data);

     typedef short _stdcall (*inpfuncPtr)(short portaddr);
     typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum);

int main(void)
{
     HINSTANCE hLib;
     inpfuncPtr inp32;
     oupfuncPtr oup32;

     short x;
     int i;

     /* Load the library */
     hLib = LoadLibrary("inpout32.dll");

     if (hLib == NULL) {
          printf("LoadLibrary Failed.\n");
          return - 1 ;
     }

     /* get the address of the function */

     inp32 = (inpfuncPtr) GetProcAddress(hLib, "Inp32");

     if (inp32 == NULL) {
          printf("GetProcAddress for Inp32 Failed.\n");
          return - 1 ;
     }


     oup32 = (oupfuncPtr) GetProcAddress(hLib, "Out32");

     if (oup32 == NULL) {
          printf("GetProcAddress for Oup32 Failed.\n");
          return - 1 ;
     }

     short var;
      (oup32)(0X37A,  4 );
 	while( 1 )
 	{
                (oup32)(0X37A,  4 );
                var=(inp32)(0x379);
                printf ("%d\n", var);
                if (var== 127 - 7 )           //all off
                {
                        (oup32)(0X37A,  4 );
                }
                if (var== 63 - 7 )           // 1  on
                {
                        (oup32)(0X37A,  4 );
                        Sleep( 1000 );
                        (oup32)(0x37A,  8 );
                        Sleep( 1000 );
                        (oup32)(0x37A,  4 );
                        Sleep( 1000 );
                }
                if (var== 255 - 7 )           // 2  on
                {
                        (oup32)(0X37A,  0 );
                        Sleep( 1000 );
                        (oup32)(0x37A,  15 );
                        Sleep( 1000 );
                }
                if (var== 95 - 7 )           // 3  on
                {
                        (oup32)(0X37A,  4 );
                        Sleep( 300 );
                        (oup32)(0x37A,  8 );
                        Sleep( 300 );
                        (oup32)(0x37A,  4 );
                        Sleep( 300 );
                }
                if (var== 111 - 7 )           // 4  on
                {
                        (oup32)(0X37A,  4 );
                        Sleep( 300 );
                        (oup32)(0x37A,  8 );
                        Sleep( 300 );
                        (oup32)(0x37A,  4 );
                        Sleep( 300 );
                        (oup32)(0X37A,  0 );
                        Sleep( 300 );
                        (oup32)(0x37A,  15 );
                        Sleep( 300 );

                }
                if (var== 119 - 7 )           // 5  on
                {
                        (oup32)(0X37A,  0 );
                        Sleep( 300 );
                        (oup32)(0x37A,  8 );
                        Sleep( 300 );
                        (oup32)(0X37A,  0 );
                        Sleep( 300 );
                        (oup32)(0x37A,  8 );
                        Sleep( 300 );
                        (oup32)(0X37A,  4 );
                        Sleep( 300 );
                        (oup32)(0x37A,  15 );
                        Sleep( 300 );
                        (oup32)(0X37A,  4 );
                        Sleep( 300 );
                        (oup32)(0x37A,  15 );
                        Sleep( 300 );
                }
                if (var== 191 - 7 )
                {
                        break;
                }
 	}
     FreeLibrary(hLib);;
     return  0 ;
}
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Чтение из порта LPT / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]