Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 29.12.2013
Сообщений: 39

LPT порт в winapi под winXP

29.12.2013, 14:06. Показов 3245. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте ПРОГРАММИСТЫ ! Подскажите пожайлуста (а то я целых два дня потратил так и не разобрался) где доступно можно понять как в winapi под WinXP включить!выключит выхода LPT1 (0378) в моей програмке и доделать мой код.
Спасибо огромное.

C++
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
#include <windows.h>
 
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
char szClassName[ ] = "WindowsApp", 
stroka1[ ] = "Relay  1", stroka2[ ] = "Relay  2", stroka3[ ] = "Relay  3",  stroka4[ ] = "Relay  4", 
stroka5[ ] = "Relay  5", stroka6[ ] = "Relay  6",  stroka7[ ] = "Relay  7", stroka8[ ] = "Relay  8", 
v1[ ] = "0", v2[ ] = "0", v3[ ] = "0", v4[ ] = "0", v5[ ] = "0", v6[ ] = "0", v7[ ] = "0", v8[ ] = "0";
int r1,r2,r3,r4,r5,r6,r7,r8;
int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)
{
    HWND hwnd;              
    MSG messages;  
    WNDCLASSEX wincl; 
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;
    wincl.style = CS_DBLCLKS; 
    wincl.cbSize = sizeof (WNDCLASSEX);
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL; 
    wincl.cbClsExtra = 0;  
    wincl.cbWndExtra = 0; 
    wincl.hbrBackground = GetSysColorBrush(COLOR_3DFACE) ;
    if (!RegisterClassEx (&wincl))
        return 0;
    hwnd = CreateWindowEx (
           0,     
           szClassName, 
           "1",  
           WS_OVERLAPPEDWINDOW,
           CW_USEDEFAULT,
           CW_USEDEFAULT, 
           400,  
           300, 
           HWND_DESKTOP,  
           NULL,  
           hThisInstance,  
           NULL  
           );
    ShowWindow (hwnd, nFunsterStil);
    while (GetMessage (&messages, NULL, 0, 0))
    {
        TranslateMessage(&messages);
        DispatchMessage(&messages);
    }
    return messages.wParam;
}
 
#define LPT1 1
#define bt1 2
#define bt2 3
#define bt3 4
#define bt4 5
#define bt5 6
#define bt6 7
#define bt7 8
#define bt8 9
#define btn1 10
#define btn2 11
HWND bt11,bt22,bt33,bt44,bt55,bt66,bt77,bt88,btn11,btn22;
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message) 
    {
         case WM_CREATE: {
             CreateWindow("STATIC", "All Relays", WS_VISIBLE | WS_CHILD,
             25,10,140,15, hwnd, (HMENU) 1, NULL, NULL); 
             CreateWindow("STATIC", stroka1, WS_VISIBLE | WS_CHILD,
             25,55,140,15, hwnd, (HMENU) 1, NULL, NULL); 
             CreateWindow("STATIC", stroka2, WS_VISIBLE | WS_CHILD,
             25,80,140,15, hwnd, (HMENU) 1, NULL, NULL); 
             CreateWindow("STATIC", stroka3, WS_VISIBLE | WS_CHILD,
             25,105,140,15, hwnd, (HMENU) 1, NULL, NULL); 
             CreateWindow("STATIC", stroka4, WS_VISIBLE | WS_CHILD,
             25,130,140,15, hwnd, (HMENU) 1, NULL, NULL); 
             CreateWindow("STATIC", stroka5, WS_VISIBLE | WS_CHILD,
             25,155,140,15, hwnd, (HMENU) 1, NULL, NULL); 
             CreateWindow("STATIC", stroka6, WS_VISIBLE | WS_CHILD,
             25,180,140,15, hwnd, (HMENU) 1, NULL, NULL); 
             CreateWindow("STATIC", stroka7, WS_VISIBLE | WS_CHILD,
             25,205,140,15, hwnd, (HMENU) 1, NULL, NULL); 
             CreateWindow("STATIC", stroka8, WS_VISIBLE | WS_CHILD,
             25,230,140,15, hwnd, (HMENU) 1, NULL, NULL);  
             
        bt11 = CreateWindow("button", "ON / OFF", WS_VISIBLE | WS_CHILD,
             195,55,80,15, hwnd, (HMENU) bt1, NULL, NULL); 
        bt22 = CreateWindow("button", "ON / OFF", WS_VISIBLE | WS_CHILD,
             195,80,80,15, hwnd, (HMENU) bt2, NULL, NULL); 
        bt33 = CreateWindow("button", "ON / OFF", WS_VISIBLE | WS_CHILD,
             195,105,80,15, hwnd, (HMENU) bt3, NULL, NULL); 
        bt44 = CreateWindow("button", "ON / OFF", WS_VISIBLE | WS_CHILD,
             195,130,80,15, hwnd, (HMENU) bt4, NULL, NULL);    
        bt55 = CreateWindow("button", "ON / OFF", WS_VISIBLE | WS_CHILD,
             195,155,80,15, hwnd, (HMENU) bt5, NULL, NULL); 
        bt66 = CreateWindow("button", "ON / OFF", WS_VISIBLE | WS_CHILD,
             195,180,80,15, hwnd, (HMENU) bt6, NULL, NULL); 
        bt77 = CreateWindow("button", "ON / OFF", WS_VISIBLE | WS_CHILD,
             195,205,80,15, hwnd, (HMENU) bt7, NULL, NULL); 
        bt88 = CreateWindow("button", "ON / OFF", WS_VISIBLE | WS_CHILD,
             195,230,80,15, hwnd, (HMENU) bt8, NULL, NULL); 
        btn11 = CreateWindow("button", "ON", WS_VISIBLE | WS_CHILD,
             195,10,35,15, hwnd, (HMENU) btn1, NULL, NULL); 
        btn22 = CreateWindow("button", "OFF", WS_VISIBLE | WS_CHILD,
             240,10,35,15, hwnd, (HMENU) btn2, NULL, NULL); 
       
             CreateWindow("STATIC", v1, WS_VISIBLE | WS_CHILD,
             325,55,40,15, hwnd, (HMENU) 1, NULL, NULL); 
             CreateWindow("STATIC", v2, WS_VISIBLE | WS_CHILD,
             325,80,40,15, hwnd, (HMENU) 1, NULL, NULL); 
             CreateWindow("STATIC", v3, WS_VISIBLE | WS_CHILD,
             325,105,40,15, hwnd, (HMENU) 1, NULL, NULL); 
             CreateWindow("STATIC", v4, WS_VISIBLE | WS_CHILD,
             325,130,40,15, hwnd, (HMENU) 1, NULL, NULL); 
             CreateWindow("STATIC", v5, WS_VISIBLE | WS_CHILD,
             325,155,40,15, hwnd, (HMENU) 1, NULL, NULL); 
             CreateWindow("STATIC", v6, WS_VISIBLE | WS_CHILD,
             325,180,40,15, hwnd, (HMENU) 1, NULL, NULL); 
             CreateWindow("STATIC", v7, WS_VISIBLE | WS_CHILD,
             325,205,40,15, hwnd, (HMENU) 1, NULL, NULL); 
             CreateWindow("STATIC", v8, WS_VISIBLE | WS_CHILD,
             325,230,40,15, hwnd, (HMENU) 1, NULL, NULL); 
             
             break;
             } 
        case WM_COMMAND: {
             
             if (LOWORD(wParam) == bt1) { if (r1 == 0) {r1 = 1;} else {r1 = 0;}};
             if (LOWORD(wParam) == bt2) { if (r2 == 0) {r2 = 1;} else {r2 = 0;}};
             if (LOWORD(wParam) == bt3) { if (r3 == 0) {r3 = 1;} else {r3 = 0;}};
             if (LOWORD(wParam) == bt4) { if (r4 == 0) {r4 = 1;} else {r4 = 0;}};
             if (LOWORD(wParam) == bt5) { if (r5 == 0) {r5 = 1;} else {r5 = 0;}};
             if (LOWORD(wParam) == bt6) { if (r6 == 0) {r6 = 1;} else {r6 = 0; }};
             if (LOWORD(wParam) == bt7) { if (r7 == 0) {r7 = 1;} else {r7 = 0; }};
             if (LOWORD(wParam) == bt8) { if (r8 == 0) {r8 = 1;} else {r8 = 0; }};
             if (LOWORD(wParam) == btn1) { r1=1;r2=1;r3=1;r4=1;r5=1;r6=1;r7=1;r8=1;};
             if (LOWORD(wParam) == btn2) { r1=0;r2=0;r3=0;r4=0;r5=0;r6=0;r7=0;r8=0;};
             
             itoa(r1,v1,2); CreateWindow("STATIC", v1, WS_VISIBLE | WS_CHILD,
             325,55,40,15, hwnd, (HMENU) 1, NULL, NULL); 
             itoa(r2,v2,2); CreateWindow("STATIC", v2, WS_VISIBLE | WS_CHILD,
             325,80,40,15, hwnd, (HMENU) 1, NULL, NULL); 
             itoa(r3,v3,2); CreateWindow("STATIC", v3, WS_VISIBLE | WS_CHILD,
             325,105,40,15, hwnd, (HMENU) 1, NULL, NULL); 
             itoa(r4,v4,2); CreateWindow("STATIC", v4, WS_VISIBLE | WS_CHILD,
             325,130,40,15, hwnd, (HMENU) 1, NULL, NULL);
             itoa(r5,v5,2); CreateWindow("STATIC", v5, WS_VISIBLE | WS_CHILD,
             325,155,40,15, hwnd, (HMENU) 1, NULL, NULL); 
             itoa(r6,v6,2); CreateWindow("STATIC", v6, WS_VISIBLE | WS_CHILD,
             325,180,40,15, hwnd, (HMENU) 1, NULL, NULL); 
             itoa(r7,v7,2); CreateWindow("STATIC", v7, WS_VISIBLE | WS_CHILD,
             325,205,40,15, hwnd, (HMENU) 1, NULL, NULL); 
             itoa(r8,v8,2); CreateWindow("STATIC", v8, WS_VISIBLE | WS_CHILD,
             325,230,40,15, hwnd, (HMENU) 1, NULL, NULL); 
            
            break;
             }
        case WM_DESTROY:
            PostQuitMessage (0); 
            break;
        default:    
            return DefWindowProc (hwnd, message, wParam, lParam);
    }
    return 0;
}
Добавлено через 13 часов 18 минут
Подскажите по порядку что и где вставить чтобы открыть стандартный драйвер LPT порта и потом изменять состояние выходов. И вообще можно ли одновременно (например пять портов управлять в завмсимости от других трех портов). Спасибо большое если не пожалеете пару минут и ответите мне полному чайнику, но очень надо для моего сына хочу сделать робота. Железо уже собрал и с готовыми прогами проверял всё работает, но хочется немного самому понять как управлять портом.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.12.2013, 14:06
Ответы с готовыми решениями:

Можно ли в WinApi под WinXp приконнектится к IID_IWebBrowser2 уже запущенного IE ?
Ну то есть хочется получить доступ к уже запущенному процессу InternetExplorer, чтоб можно было гулять по страницам и тд... ? ...

Вывод на LPT-порт под ХР
На компе при посылке печати на LPT-принтер (использовались и матричные, и лезерные) сразу выскакивает сообщение на тему &quot;Невозможно...

Управление LPT в WinXP
Здравствуете. Никак не могу добиться работы LPT в WinXP. Может кто-то решал подобную задачу и подскажет... Пробую управлять через...

10
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
29.12.2013, 19:28
Начиная с NT доступ к портам через драйвер. Для прямого доступа к LPT используйте inpout32 или 64.dll, giveio.sys, ioport.dll и прочие.

Пример >> Подгрузка библиотеки, основные ошибки и их решения
0
1 / 1 / 0
Регистрация: 29.12.2013
Сообщений: 39
29.12.2013, 20:38  [ТС]
Спасибо большое что откликнулись на мой вопрос, но я прошу прощения за своё полное невежество в С++ но изучать все азы программирования и все тонкости языка у меня не хватит ума и сил. Поэтому я ещё раз извеняюсь но очень хотелось бы увидеть идин полный, законченный пример работающего кода. Эти все *.sys и *.dll всегда или уже есть в системе или их можно скачать и поместить в нужное место. Я скачал много *.exe файлов и все без дополнительных драйвкров включают и выключают мои рэлюшки, но мне надо просто понятный готовы код С++. Спасибо за понимание.
0
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
29.12.2013, 21:19
Я скачал много *.exe файлов и все без дополнительных драйвкров включают и выключают мои рэлюшки
если вы под Win9x - поверю, но вы разместили тему в разделе winXP , так что не надо ля-ля, прямой доступ идет через драйвер, так или иначе, к примеру выгрузкой драйвера из ресурсов и его регистрации (sys/dll) прямо в процессе работы и последующего его удаления. Ссылку в тему на чудо-программы. И почитайте сие http://logix4u.net/parallel-po... 982000ntxp

Есть правда метод доступа-дерганья...
через DeviceIO(), но его столь редко встречаю в подобного рода программах, сомневаюсь что вам попался именно этот вариант.


бы увидеть идин полный, законченный пример работающего кода
...понятного готового кода без понимания процесса не бывает. Поэтому рекомендую ознакомиться:
Непосредственно в PDF-ники включены ресурсы к материалам с готовыми программами, исходниками и библиотеками. Вызовы библиотек для Си отличаются только синтаксисом и аналогичны представленной выше ссылке, по которой, кстати, если бы вы были чутка внимательнее, есть готовый-преготовый код, даже проект. Надеюсь, ферштеен.
0
1 / 1 / 0
Регистрация: 29.12.2013
Сообщений: 39
29.12.2013, 22:19  [ТС]
Вот один простой примет LptPortControl.exe который скачал ничего больше ни делал ни каких драйверов не устанавливал запустил и управляю моими 8 выходами, видимо использует уже имеющийся в системе inpout32.

http://www.s-jaekel.de/softwar... t_control/

Но пожайлуста если не сильно трудно вставте один простой готовый примерчик как загрузить эту библиотеку и включить, выключить один из 8 выходов. Один раз сделайте эту тему завершённой и понятной для всех полных чайников. И больше никаких вопросов не будет. Данке
0
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
30.12.2013, 00:35
Можно вопрос? Вы реально этого не видите?


Один раз сделайте эту тему завершённой
один раз прочитайте и не плодите сущностей, та тема полностью завершена. Каждому пояснять? Для этого и дается ссылка на существующие работы и темы.
Вложения
Тип файла: rar sp.rar (472.9 Кб, 49 просмотров)
0
1 / 1 / 0
Регистрация: 29.12.2013
Сообщений: 39
31.12.2013, 03:07  [ТС]
Спасибо большое, за намёки как доделать мою програмку, но разобраться я к сожалению так и не смог, не понимаю неужели нельзя в головном файле подгрузить библиотеку и тутже включить по нажатию кнопки соответствующий выход (не создавая при этом кучу других файлов). В моём примере просто добавить где нужно пару строчек и больше ничего. Если я вас действительно так нагружаю (таким простым для вас вопросом) тогда мне очень жаль, что не смогли помочь очередному чайнику доделать свой проект доконца.
0
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
31.12.2013, 11:21
Cтранно, в теме выше именно так как вы хотите и делается

Delphi
1
2
3
4
5
6
7
8
9
var 
 
  function Inp32(PortAdr: word): byte; stdcall; external 'inpout32.dll';
  function Out32(PortAdr: word; Data: byte): byte; stdcall; external 'inpout32.dll';
 
...
 
// включаем 
Out32($378,5);
Вот и все. Готовый пример управления ШД.
0
1 / 1 / 0
Регистрация: 29.12.2013
Сообщений: 39
08.01.2014, 23:11  [ТС]
Спасибо большое за все подсказки мне очень помоголо и я всётаки добился результата.
Это рабочий, проверенный и полный код для всех остальных таких же нуждающихся.

C++
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
#include <windows.h>
typedef short (_stdcall *inpfuncPtr)(short portaddr);
typedef void (_stdcall *oupfuncPtr)(short portaddr, short datum);
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
char szClassName[ ] = "WindowsApp"; 
int sum,s1,s2,r1,r2,r3,r4,r5,r6,r7,r8;
void code_Out(int i_Summe);
     inpfuncPtr inp32fp;
     oupfuncPtr oup32fp;
     short Inp32 (short portaddr){return (inp32fp)(portaddr);}
     void Out32 (short portaddr, short datum){(oup32fp)(portaddr,datum);} 
int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)
{
     HINSTANCE hLib;
     hLib = LoadLibrary("inpout32.dll");
     inp32fp = (inpfuncPtr) GetProcAddress(hLib, "Inp32");
     oup32fp = (oupfuncPtr) GetProcAddress(hLib, "Out32");
 
    HWND hwnd;    
    MSG messages;  
    WNDCLASSEX wincl; 
 
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure; 
    wincl.style = CS_DBLCLKS; 
    wincl.cbSize = sizeof (WNDCLASSEX);
 
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;  
    wincl.cbClsExtra = 0;  
    wincl.cbWndExtra = 0; 
    wincl.hbrBackground = GetSysColorBrush(COLOR_3DFACE) ;
 
    if (!RegisterClassEx (&wincl))
        return 0;
    hwnd = CreateWindowEx (
           0,  
           szClassName,  
           "8 Relais",  
           WS_OVERLAPPEDWINDOW, 
           CW_USEDEFAULT, 
           CW_USEDEFAULT, 
           200,  
           350, 
           HWND_DESKTOP, 
           NULL, 
           hThisInstance, 
           NULL 
           );
    ShowWindow (hwnd, nFunsterStil);
    while (GetMessage (&messages, NULL, 0, 0))
    {   TranslateMessage(&messages);
        DispatchMessage(&messages);
    }
    return messages.wParam;
}
#define bt1 1
#define bt2 2
#define bt3 3
#define bt4 4
#define bt5 5
#define bt6 6
#define bt7 7
#define bt8 8
#define btn1 9
#define btn2 10
HWND bt11,bt22,bt33,bt44,bt55,bt66,bt77,bt88,btn11,btn22;
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)   
    {   case WM_CREATE: {  
        bt11 = CreateWindow("button", "ON / OFF", WS_VISIBLE | WS_CHILD,
             15,55,80,15, hwnd, (HMENU) bt1, NULL, NULL); 
        bt22 = CreateWindow("button", "ON / OFF", WS_VISIBLE | WS_CHILD,
             15,80,80,15, hwnd, (HMENU) bt2, NULL, NULL); 
        bt33 = CreateWindow("button", "ON / OFF", WS_VISIBLE | WS_CHILD,
             15,105,80,15, hwnd, (HMENU) bt3, NULL, NULL); 
        bt44 = CreateWindow("button", "ON / OFF", WS_VISIBLE | WS_CHILD,
             15,130,80,15, hwnd, (HMENU) bt4, NULL, NULL);    
        bt55 = CreateWindow("button", "ON / OFF", WS_VISIBLE | WS_CHILD,
             15,155,80,15, hwnd, (HMENU) bt5, NULL, NULL); 
        bt66 = CreateWindow("button", "ON / OFF", WS_VISIBLE | WS_CHILD,
             15,180,80,15, hwnd, (HMENU) bt6, NULL, NULL); 
        bt77 = CreateWindow("button", "ON / OFF", WS_VISIBLE | WS_CHILD,
             15,205,80,15, hwnd, (HMENU) bt7, NULL, NULL); 
        bt88 = CreateWindow("button", "ON / OFF", WS_VISIBLE | WS_CHILD,
             15,230,80,15, hwnd, (HMENU) bt8, NULL, NULL); 
        btn11 = CreateWindow("button", "ON", WS_VISIBLE | WS_CHILD,
             15,10,35,15, hwnd, (HMENU) btn1, NULL, NULL); 
        btn22 = CreateWindow("button", "OFF", WS_VISIBLE | WS_CHILD,
             60,10,35,15, hwnd, (HMENU) btn2, NULL, NULL);            
             break;
             } 
        case WM_COMMAND: {  
             if (LOWORD(wParam) == bt1) {
             if (r1 == 0) {r1 = 1; CreateWindow("STATIC", "ON", WS_VISIBLE | WS_CHILD,
             125,55,40,15, hwnd, (HMENU) 1, NULL, NULL);}
             else {r1 = 0; CreateWindow("STATIC", "OFF", WS_VISIBLE | WS_CHILD,
             125,55,40,15, hwnd, (HMENU) 1, NULL, NULL);}}
             
             if (LOWORD(wParam) == bt2) {
             if (r2 == 0) {r2 = 2; CreateWindow("STATIC", "ON", WS_VISIBLE | WS_CHILD,
             125,80,40,15, hwnd, (HMENU) 1, NULL, NULL); }
             else {r2 = 0; CreateWindow("STATIC", "OFF", WS_VISIBLE | WS_CHILD,
             125,80,40,15, hwnd, (HMENU) 1, NULL, NULL);}}
             
             if (LOWORD(wParam) == bt3) {
             if (r3 == 0) {r3 = 4; CreateWindow("STATIC", "ON", WS_VISIBLE | WS_CHILD,
             125,105,40,15, hwnd, (HMENU) 1, NULL, NULL); }
             else {r3 = 0; CreateWindow("STATIC", "OFF", WS_VISIBLE | WS_CHILD,
             125,105,40,15, hwnd, (HMENU) 1, NULL, NULL);}}
             
             if (LOWORD(wParam) == bt4) {
             if (r4 == 0) {r4 = 8; CreateWindow("STATIC", "ON", WS_VISIBLE | WS_CHILD,
             125,130,40,15, hwnd, (HMENU) 1, NULL, NULL);}
             else {r4 = 0; CreateWindow("STATIC", "OFF", WS_VISIBLE | WS_CHILD,
             125,130,40,15, hwnd, (HMENU) 1, NULL, NULL);}}
             
             if (LOWORD(wParam) == bt5) {
             if (r5 == 0) {r5 = 16; CreateWindow("STATIC", "ON", WS_VISIBLE | WS_CHILD,
             125,155,40,15, hwnd, (HMENU) 1, NULL, NULL);}
             else {r5 = 0; CreateWindow("STATIC", "OFF", WS_VISIBLE | WS_CHILD,
             125,155,40,15, hwnd, (HMENU) 1, NULL, NULL);}}
             
             if (LOWORD(wParam) == bt6) {
             if (r6 == 0) {r6 = 32; CreateWindow("STATIC", "ON", WS_VISIBLE | WS_CHILD,
             125,180,40,15, hwnd, (HMENU) 1, NULL, NULL);}
             else {r6 = 0; CreateWindow("STATIC", "OFF", WS_VISIBLE | WS_CHILD,
             125,180,40,15, hwnd, (HMENU) 1, NULL, NULL);}}
             
             if (LOWORD(wParam) == bt7) {
             if (r7 == 0) {r7 = 64; CreateWindow("STATIC", "ON", WS_VISIBLE | WS_CHILD,
             125,205,40,15, hwnd, (HMENU) 1, NULL, NULL);}
             else {r7 = 0; CreateWindow("STATIC", "OFF", WS_VISIBLE | WS_CHILD,
             125,205,40,15, hwnd, (HMENU) 1, NULL, NULL);}}
             
             if (LOWORD(wParam) == bt8) {
             if (r8 == 0) {r8 = 128; CreateWindow("STATIC", "ON", WS_VISIBLE | WS_CHILD,
             125,230,40,15, hwnd, (HMENU) 1, NULL, NULL);}
             else {r8 = 0; CreateWindow("STATIC", "OFF", WS_VISIBLE | WS_CHILD,
             125,230,40,15, hwnd, (HMENU) 1, NULL, NULL);}}; 
             
             if (LOWORD(wParam) == btn1) { r1=1;r2=2;r3=4;r4=8;r5=16;r6=32;r7=64;r8=128; 
             CreateWindow("STATIC", "ON", WS_VISIBLE | WS_CHILD,
             125,55,40,15, hwnd, (HMENU) 1, NULL, NULL); 
             CreateWindow("STATIC", "ON", WS_VISIBLE | WS_CHILD,
             125,80,40,15, hwnd, (HMENU) 1, NULL, NULL);  
             CreateWindow("STATIC", "ON", WS_VISIBLE | WS_CHILD,
             125,105,40,15, hwnd, (HMENU) 1, NULL, NULL); 
             CreateWindow("STATIC", "ON", WS_VISIBLE | WS_CHILD,
             125,130,40,15, hwnd, (HMENU) 1, NULL, NULL);
             CreateWindow("STATIC", "ON", WS_VISIBLE | WS_CHILD,
             125,155,40,15, hwnd, (HMENU) 1, NULL, NULL);
             CreateWindow("STATIC", "ON", WS_VISIBLE | WS_CHILD,
             125,180,40,15, hwnd, (HMENU) 1, NULL, NULL);
             CreateWindow("STATIC", "ON", WS_VISIBLE | WS_CHILD,
             125,205,40,15, hwnd, (HMENU) 1, NULL, NULL);
             CreateWindow("STATIC", "ON", WS_VISIBLE | WS_CHILD,
             125,230,40,15, hwnd, (HMENU) 1, NULL, NULL);} 
             
             if (LOWORD(wParam) == btn2) { r1=0;r2=0;r3=0;r4=0;r5=0;r6=0;r7=0;r8=0; 
             CreateWindow("STATIC", "OFF", WS_VISIBLE | WS_CHILD,
             125,55,40,15, hwnd, (HMENU) 1, NULL, NULL); 
             CreateWindow("STATIC", "OFF", WS_VISIBLE | WS_CHILD,
             125,80,40,15, hwnd, (HMENU) 1, NULL, NULL);  
             CreateWindow("STATIC", "OFF", WS_VISIBLE | WS_CHILD,
             125,105,40,15, hwnd, (HMENU) 1, NULL, NULL); 
             CreateWindow("STATIC", "OFF", WS_VISIBLE | WS_CHILD,
             125,130,40,15, hwnd, (HMENU) 1, NULL, NULL);
             CreateWindow("STATIC", "OFF", WS_VISIBLE | WS_CHILD,
             125,155,40,15, hwnd, (HMENU) 1, NULL, NULL);
             CreateWindow("STATIC", "OFF", WS_VISIBLE | WS_CHILD,
             125,180,40,15, hwnd, (HMENU) 1, NULL, NULL);
             CreateWindow("STATIC", "OFF", WS_VISIBLE | WS_CHILD,
             125,205,40,15, hwnd, (HMENU) 1, NULL, NULL);
             CreateWindow("STATIC", "OFF", WS_VISIBLE | WS_CHILD,
             125,230,40,15, hwnd, (HMENU) 1, NULL, NULL);} ;
             
             sum = r1 + r2 + r3 + r4 + r5 + r6 + r7 + r8 ;
             code_Out(sum);
             break;
                   }
        case WM_DESTROY:
            PostQuitMessage (0);
            break;
        default:  
            return DefWindowProc (hwnd, message, wParam, lParam);
    }
return 0;
}
void code_Out(int i_Summe){int x; x=i_Summe; Out32(0x378,x);}
0
1 / 1 / 0
Регистрация: 29.12.2013
Сообщений: 39
18.06.2014, 19:58  [ТС]
Добрый вечер всем. Наконецто вроде доделал мою програмку до полной универсальности. Если кому пригодится то буду рад услышать отзывы и нарецания. Вообще надо было бы ещё доделать её чтобы всё работало и в Win7-32Bit и в Win7-64Bit но я уже не смогу. Если кто оценит труды моей полугодовалой хренотени (с тоски зрения моей жены) и поможет доделать до Win7 то надеюсь что, может многим моя програмка будет очень полезна для создания всяких Роботов через LPT Port компьютера.
Вложения
Тип файла: 7z 12_Outs_Win_XP.7z (212.1 Кб, 27 просмотров)
1
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
18.06.2014, 20:33
...для работы под 64-бит требуется использование 64-версии библиотеки, inpout64.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.06.2014, 20:33
Помогаю со студенческими работами здесь

Виртуальный LPT-порт
Возникла необходимость на ноутбуке использовать LPT-порт. Купил вот такой переходник (см. ниже). В Windows-7 определяется как “Поддержка...

ассемблер в Delphi и LPT порт
есть дллка у меня с названием inpout32.dll, в ней есть 1 процедура и 1 функция, одна для записи в порт другая для чтения из порта. Она...

Управление ШД через LPT порт
Доброго времени суток! Ничего подобного раньше не делал, поэтому прошу помощи:) Задали мне написать программу, которая управляет...

Lpt порт не выводит данные
Доброго времени суток! Я учусь писать драйвера под linux и первый свой интерфейс для общения с внешним миром выбрал LPT-порт. У меня...

Вывод дампа в порт LPT
Стоит задача вывести дамп из файла в принтерный порт. И соответсвенно обратная задача, сохранить дамп в файле, принятый из порта.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru