Advertisement
dllbridge

LPT_01

Feb 27th, 2025
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.01 KB | None | 0 0
  1. //  Ниже приведён пример программы, которая записывает и читает данные через LPT-порт в режиме EPP/ECP.
  2. //                                                        Для этого используется API Windows.
  3.  
  4. #include <windows.h>
  5. #include   <stdio.h>
  6.  
  7. #define LPT_PORT 0x378                                  // Адрес LPT-порта (888 в десятичном)
  8.  
  9. int main()
  10. {
  11.     HANDLE hLPT;
  12.     char dataToSend = 0x55;                                              // Данные для записи
  13.     char dataReceived;
  14.  
  15.     hLPT = CreateFile("LPT1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
  16.     if (hLPT == INVALID_HANDLE_VALUE)                                   // Открываем LPT-порт
  17.     {
  18.         printf("Ошибка открытия LPT-порта!\n");
  19.         return 1;
  20.     }
  21.  
  22.     if (!WriteFile(hLPT, &dataToSend, 1, NULL, NULL))                 // Запись данных в порт
  23.     {
  24.         printf("Ошибка записи в порт!\n");
  25.         CloseHandle(hLPT);
  26.         return 1;
  27.     }
  28.     printf("Данные записаны: 0x%02X\n", dataToSend);
  29.  
  30.     if (!ReadFile(hLPT, &dataReceived, 1, NULL, NULL))              // Чтение данных из порта
  31.     {
  32.         printf("Ошибка чтения из порта!\n");
  33.         CloseHandle(hLPT);
  34.         return 1;
  35.     }
  36.     printf("Данные прочитаны: 0x%02X\n", dataReceived);
  37.     CloseHandle(hLPT);                                                      // Закрываем порт
  38. return 0;
  39. }
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49. //   Альтернативный подход:
  50. //   Если режим EPP/ECP недоступен, можно использовать библиотеку inpout32 или inpoutx64 для прямого доступа к порту.
  51. //   Эта библиотека позволяет читать и записывать данные в порт даже в стандартном режиме.
  52.  
  53. //   Пример использования inpout32:
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61. #include <windows.h>
  62. #include <stdio.h>
  63. #include "inpout32.h"                    // Подключите заголовочный файл inpout32
  64.  
  65. #define LPT_PORT 0x378                       // Адрес LPT-порта (888 в десятичном)
  66.  
  67. //////////////////////////////////////////////////
  68. int main()
  69. {
  70.  
  71.     char dataToSend = 0x55;                                   // Данные для записи
  72.     char dataReceived;
  73.  
  74.     Out32(LPT_PORT, dataToSend);                           // Запись данных в порт
  75.     printf("Данные записаны: 0x%02X\n", dataToSend);
  76.                                                          // Чтение данных из порта
  77.     dataReceived = Inp32(LPT_PORT + 1);                    // Чтение линий статуса
  78.     printf("Данные прочитаны: 0x%02X\n", dataReceived);
  79.  
  80. return 0;
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement