Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/12: Рейтинг темы: голосов - 12, средняя оценка - 4.83
0 / 0 / 1
Регистрация: 01.04.2010
Сообщений: 6
1

Работа с LPT

01.04.2010, 18:29. Показов 2145. Ответов 1
Метки нет (Все метки)

Уважаемые форумчане здравствуйте!
Сразу к делу.
Нужно по LPT передать файл по байтно программа кампилится но во время работы выдает ошибку

Project xxxx raised exception class EAcessViolation with message 'AcessViolation at address 000000B1. Read of address 000000B1'.Process stopped. Use Step or Run to continue.

при отладке первый байт в порт передается а второй нет при чем не зависимо от куда брать данные хоть статические, хоть переменные, хоть в цикле, хоть просто два обращение подряд, задержка тоже не помогает.


При обращении напрямую к функциям out32 и Inp32 при линовке выдает ошибку. Unresolved external 'Out32' referenced from F:\PROJECTS\CF4.OBJ
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
#include "stdlib.h"
 extern "C"
{
 _stdcall Inp32(short PortAddr);
 _stdcall Out32(short PortAddress, short data);
 }
 
void __fastcall TForm1::LoadClick(TObject *Sender)
{
        AnsiString Name=Edit1->Text;
        FILE*f_param;
        f_param=fopen(Name.c_str(),"rb");
        if (f_param==0){
              ShowMessage(AnsiString("Файла ")+Name+AnsiString(" нет!!!"));
        }
        else{
 
             int i=0, aut_data=0;
             int*array_file;
             array_file=(int*)malloc(1572864);
             if(array_file==NULL){
                     MessageBox(NULL,"Error Memo","Error malloc",MB_OK);
                     exit;
             };
             while (!feof(f_param)){
                array_file[i]=fgetc(f_param);
                i++;
             }
             array_file=(int*)realloc(array_file,i+1);
             if(array_file==NULL){
                     MessageBox(NULL,"Error Memo ","Error realloc",MB_OK);
                     exit;
             };
             fclose(f_param);
 
             HINSTANCE hLib;// указатель на dll
             typedef void (_import * Output(int, int) ); // определяем тип для задания типа указателя :)
             Output *my_out; // Собственно, указатель нужного типа
             typedef short (_import * Input(int) );
             Input *my_in;
 
             hLib=LoadLibrary ("inpout32.dll");  // Грузим длл-ку
             if(hLib==NULL){
                  ShowMessage(AnsiString("Error Load inpout32.dll не работает "));
             }
             else{
                  my_out=(Output*) GetProcAddress (hLib, "Out32"); // указатель на функцию ввода в порт
                  if (!my_out){
                        MessageBox(NULL,"Error Load my_out","Error",MB_OK);
                        FreeLibrary(hLib);
                  }
                  else{
                        my_in=(Input*) GetProcAddress (hLib, "Inp32");   // указатель на функцию вывода из порт
                        if (my_in==NULL){
                             MessageBox(NULL,"Error Load my_in","Error",MB_OK);
                        }
                        else{
                                //сдесь код предачи данных в цикле
                            for(aut_data+=6;aut_data<i;aut_data++){
                               //Sleep(250);
                               Out32(888, array_file[aut_data]);
                            }
                        }
                  }
 
            }
            free(array_file);
        }
 
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.04.2010, 18:29
Ответы с готовыми решениями:

Работа с LPT-портом из ВСВ 6
Произвольные чтение и запись в LPT-порт. Builder не видит практически ни одной функции из DOS.H;...

Работа с LPT портом в С++Builder
Народ помагите разобратся как работать в билдере с lpt портом :umnik:

Передача функции число в hex формате (работа с LPT)
Мне необходимо в порт передать адрес флеш памяти по-байтно все работает, а вот хотелось бы одним...

Работа с LPT
Всем привет !! У меня такая проблимка мне надо написать программу которая будет выщитывать...

1
0 / 0 / 1
Регистрация: 01.04.2010
Сообщений: 6
03.04.2010, 09:07  [ТС] 2
Не знает ни кто или просто вопрос глупый?
Может направление подскажите хоть.
Вот еще до кучи наводящий вопрос при нажатии кнопки ок в этом окне при помеченой галочкой кликалке "Посмотреть типа процессор" Открывается окно на нем цпею написано так понимаю там асеблерный код идет при нажатии на F8 так вот ка с ним работать с чего начать?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2010, 09:07

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Работа с LPT портом
Доброго времени суток. Имеется матричный принтер. Для вывода текста использую рулонную бумагу. При...

Работа с LPT портом
Здравствуйте, не могу разобраться(нагуглить) инфо по работе с lpt портом. Нужно отправлять данные,...

Работа с LPT портом.
Добрый день. Необходимо написать программу которая бы поочередно посылала импульсы на 2 (D0) 3(D1)...

Работа с LPT портом
Добрый день форумчане, столкнулся с проблемой. Печатающее устройство получает информацию через...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.