Модераторы: PILOT, ManiaK, Mazzi

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Присоеденить железо к компу, Изучение основ. С чего начинать? 
V
    Опции темы
new_web
Дата 4.2.2008, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 1.2.2008

Репутация: нет
Всего: нет



И что тогда делать? у меня есть VC5, но он устарел, да и ключа нет...
Но, ведь как-то же должно работать в билдере, ведь как-то приложения, созданные в билдере обращаются к портам, пусть даже через виндовс как-то...
А нет нигде такого компонента для билдера. чтобы вставил в форму. в инспекторе прописал адрес там, чтобы реагировал на изменения сигнала, и так дальше?
Может, стоит написать такой компонент? Мне это не под силу. но, Вы, господа опытные програмисты. и програмисты эксперты могли бы что-то придумать, наверное, вам делов то, что два пальца...

cardinal, а как я контроллер подключу к компу, если ХР не позволяет напрямую обратиться к портам, с контроллером идёт драйвер какой-то, или, там совсем иной принцип какой-то?

А кто-то пробовал на windows 98 такое попробовать? у меня есть старенький компик, но, вряд-ли он билдер потянет, а создать ехе не получается -  линкер еррор! smile 
Что делать? Есть же выход из ситуации?
PM MAIL   Вверх
cardinal
Дата 4.2.2008, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



Цитата(new_web @  4.2.2008,  18:35 Найти цитируемый пост)
cardinal, а как я контроллер подключу к компу, если ХР не позволяет напрямую обратиться к портам, с контроллером идёт драйвер какой-то, или, там совсем иной принцип какой-то?

RS-232: сдандартное решение в VB
USB: взяв FT232RL и драйвер, который можно скачать на сайте производителя ты превратишь USB в RS-232, то есть программа на компе даже не изменится, хотя ты будешь пользоваться USB шнуром... smile 


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
xvr
Дата 4.2.2008, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(new_web @ 4.2.2008,  19:35)
И что тогда делать? у меня есть VC5, но он устарел, да и ключа нет...

Я же уже писал - напустить implib из Borland'а на inpout32.dll из комплекта, она сделает INPOUT32.LIB для Bulder'а
Цитата

Но, ведь как-то же должно работать в билдере, ведь как-то приложения, созданные в билдере обращаются к портам, пусть даже через виндовс как-то...
Windows к портам не пускает - ни напрямую, ни через драйвер (свой). Поэтому все обращаются к портам через свои драйвера, и имя им легион  smile  
Цитата

А нет нигде такого компонента для билдера. чтобы вставил в форму. в инспекторе прописал адрес там, чтобы реагировал на изменения сигнала, и так дальше?
Наверное есть. Однако немедленную реакцию на произвольный сигнал сделать невозможно - нужно прерывание от этого сигнала, а у принтерного порта на прерывание заведен только один входной сигнал. Так что каждый делает что-то под свои нужды и не думаю, что кто-то сделал нечто универсальное.
Цитата

Может, стоит написать такой компонент? Мне это не под силу. но, Вы, господа опытные програмисты. и програмисты эксперты могли бы что-то придумать, наверное, вам делов то, что два пальца...
Может и стоит, только у тех, кто это может сделать обычно свободного времени не бывает   smile 
Цитата

cardinal, а как я контроллер подключу к компу, если ХР не позволяет напрямую обратиться к портам, с контроллером идёт драйвер какой-то, или, там совсем иной принцип какой-то?
Либо драйвер, либо целый SDK
Цитата

А кто-то пробовал на windows 98 такое попробовать? у меня есть старенький компик, но, вряд-ли он билдер потянет, а создать ехе не получается -  линкер еррор! smile 
Для Win98 можно напрямую в порты писать

Цитата

Что делать? Есть же выход из ситуации?
Есть, причем их много и все разные  smile 
PM MAIL   Вверх
Den64
Дата 4.2.2008, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 6.4.2006
Где: Курск

Репутация: 1
Всего: 2



Из WinXP к LPT обращался обычно используя функции CreaceFile, WriteFile. (в билдере)

Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   char bufer = 0xFF; // значение которое будет передано
   int count;
   HANDLE h = CreateFile(Edit1->Text.c_str(),                //имя порта
                     GENERIC_READ|GENERIC_WRITE, //чтение и запись
                     0,                          //
                     NULL,                       //
                     OPEN_EXISTING,              //открыть если есть
                     FILE_ATTRIBUTE_NORMAL,      //
                     0);                         //
  Edit2->Text = (int)h;
  WriteFile(h, //
                  bufer,  //что передать
                  1,   //сколько передать
                  &count,       //сколько передано
                  NULL);   //
  CloseHandle(h);
}



Писал тут, непроверял. Это под билдер.
Должно быть 2 эдита Edit1 и Edit2.
И кнопка по событию от которой FF передать в порт.
Светодиодом проверять на втором выводе ЛПТ. (или на 3, 4, ... 9.)

В Edit1 записать имя порта LPT. Если порт найден и откроется в Edit2 будет какоето значение, если неоткроется то -1. Значит порта нет в системе (смотри диспечер устройств) или ни правильно написано имя порта.

Добавлено @ 23:16
Результат напиши. Интересно что получица.  smile 

Это сообщение отредактировал(а) Den64 - 4.2.2008, 23:18
--------------------
Инагда пишу звуками.
PM WWW ICQ   Вверх
xvr
Дата 4.2.2008, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(Den64 @ 4.2.2008,  23:10)
Из WinXP к LPT обращался обычно используя функции CreaceFile, WriteFile. (в билдере)

Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   char bufer = 0xFF; // значение которое будет передано
   int count;
   HANDLE h = CreateFile(Edit1->Text.c_str(),                //имя порта
                     GENERIC_READ|GENERIC_WRITE, //чтение и запись
                     0,                          //
                     NULL,                       //
                     OPEN_EXISTING,              //открыть если есть
                     FILE_ATTRIBUTE_NORMAL,      //
                     0);                         //
  Edit2->Text = (int)h;
  WriteFile(h, //
                  bufer,  //что передать
                  1,   //сколько передать
                  &count,       //сколько передано
                  NULL);   //
  CloseHandle(h);
}



Писал тут, непроверял. Это под билдер.
Должно быть 2 эдита Edit1 и Edit2.
И кнопка по событию от которой FF передать в порт.
Диодом проверять на втором выводе ЛПТ. (или на 3, 4, ... 9.)

Не будет работать  smile Windows расчитывает найти на LPT порту принтер, а у него обмен синхронный, т.е. запрос/ответ (ноги порта STB/ACK, насколько я помню мнемоники). Без ответа обмена не получится.

PM MAIL   Вверх
Den64
Дата 4.2.2008, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 6.4.2006
Где: Курск

Репутация: 1
Всего: 2



Цитата(xvr @  4.2.2008,  23:16 Найти цитируемый пост)
Не будет работать  

Щас проверю..
--------------------
Инагда пишу звуками.
PM WWW ICQ   Вверх
Den64
Дата 5.2.2008, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 6.4.2006
Где: Курск

Репутация: 1
Всего: 2



В 14 строчке перед буфер забыл поставить &. Без неё некомпилит.

Начал проверять, LPT1 открывает нормально. Затем на функции WriteFile виснет.

Когдато делел такую хрень в институте на научную работу smile . Работала.

Можно спросить на ветке форума системное программирование в чём проблема..
--------------------
Инагда пишу звуками.
PM WWW ICQ   Вверх
xvr
Дата 5.2.2008, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(Den64 @ 5.2.2008,  00:01)
В 14 строчке перед буфер забыл поставить &. Без неё некомпилит.

Начал проверять, LPT1 открывает нормально. Затем на функции WriteFile виснет.

Когдато делел такую хрень в институте на научную работу smile . Работала.

Можно спросить на ветке форума системное программирование в чём проблема..

Проблема именно в этом - нет ответа от принтера. Можно сэмулировать принтер - замкнуть пару выводов (каких именно и как сейчас не скажу), выводить в D0-D7 будет, вводить - нет, и дополнительные выходы тоже использовать не удастся - нет в WriteFile такой функциональности  smile 
PM MAIL   Вверх
new_web
Дата 6.2.2008, 07:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 1.2.2008

Репутация: нет
Всего: нет



Господа. был в офлайн. много пропустил.
Цитата(xvr @  4.2.2008,  22:35 Найти цитируемый пост)
Я же уже писал - напустить implib из Borland'а на inpout32.dll из комплекта, она сделает INPOUT32.LIB для Bulder'а

Простите. нк увидел в первый раз. Можете подсказать, как конктретно делать это? Я ведь новичёк всё-таки. Даже не думал, что мой вопрос вызовет такой интерес.

Спасибо за детальные ответы!

Но вопрос остался нерешённым, или как? получилось у кого-то?

Счас попробую сам понять. скомпилировать, дай-бог - запустить....
Не обязательно, тогда. наверное LPT мучать, может USB  будет попроще. хотя. о чём я разсуждаю, мне. по всей вероятности. надо ещё подучиться. чтобы понимать ответы на свои вопросы.
Ещё раз спасибо. что  приняли активное участие в обсуждении этого топика!

Но. вопрос. я так понял. пока не решён!

PM MAIL   Вверх
xvr
Дата 6.2.2008, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(new_web @ 6.2.2008,  07:24)
Господа. был в офлайн. много пропустил.
Цитата(xvr @  4.2.2008,  22:35 Найти цитируемый пост)
Я же уже писал - напустить implib из Borland'а на inpout32.dll из комплекта, она сделает INPOUT32.LIB для Bulder'а

Простите. нк увидел в первый раз. Можете подсказать, как конктретно делать это? Я ведь новичёк всё-таки. Даже не думал, что мой вопрос вызовет такой интерес.


1) Открываешь консоль (Пуск->Программы->Стандартные->Коммандная строка)
2) Идешь в директорию, где у тебя лежит inpout32.dll (комманда cd путь...)
3) Набираешь implib inpout32.lib inpout32.dll
Цитата

Не обязательно, тогда. наверное LPT мучать, может USB  будет попроще. хотя. о чём я разсуждаю, мне. по всей вероятности. надо ещё подучиться. чтобы понимать ответы на свои вопросы.
Зажигание лампочки на LPT потребует 1 транзистора, резистор и лампочку, зажигание того же через USB потребует как минимум все то же плюс 1 м/сх с обвязкой.
Кстати, если делать самому, то лучше брать FT245 - из нее получится LPT порт, а у него ног для зажигания лампочек больше, чем у RS232  smile 
PM MAIL   Вверх
new_web
Дата 6.2.2008, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 1.2.2008

Репутация: нет
Всего: нет



Цитата(xvr @  6.2.2008,  09:01 Найти цитируемый пост)
1) Открываешь консоль (Пуск->Программы->Стандартные->Коммандная строка)2) Идешь в директорию, где у тебя лежит inpout32.dll (комманда cd путь...)3) Набираешь implib inpout32.lib inpout32.dll


Сделал. Изменил. Скомпилировал. В предвкушении праздника запускаю и

[Linker Error] Unresolved external '__stdcall Out32(short, short)' referenced from E:\CPLUSPLUS\CONTROLS\UNIT1.OBJ

что тут не так?
Код

//---------------------------------------------------------------------------
#include "iostream.h"
#include "conio.h"
#include "stdlib.h"
#include "h.h"
#include <vcl.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
 int Address=888;
 cout<<"Test LPT port in Windows NT."<<endl;
 cout<<"Press '1' to activate and '0' to disactivate lightdiod."<<endl;
 cout<<"To exit press 'e'."<<endl;
 cout<<" "<<endl;

        switch(getch())
        {
            case '0':    cout<<"Disactivate...."<<endl;
                        Out32(Address, 0);
                        break;                      
                
            case '1':    cout<<"Activate...."<<endl;
                        Out32(Address, 1);
                        break;
            case 'e': exit(1);
        }


   getch();


        return 0;
}
//---------------------------------------------------------------------------



В этом коде я убрал while(1)// компилятор предупреждал о недостижимом коде. а пример брал с http://www.pcports.ru/articles/2.php
он. для VC++ 6

Подкиньте работающий код на билдере плиз. 
Ведь так мало до мечты осталось!
 smile 


Цитата(xvr @  6.2.2008,  09:01 Найти цитируемый пост)
Зажигание лампочки на LPT потребует 1 транзистора, резистор и лампочку......,

Наверное. я где-то в самом начале слишком много внимания акцентировал на лампочке, имея ввиду лишь получить выход на порте. увидеть это с помощью светодиода. я знаю, как потом с помощью оптопары подключить лампочку, 10 лампочек, 100 лампочек.
Паяльник работает, у меня программа не работает. Компилируется, но не запускается, чувствую, что тут разницав диалектах билдера и VC++ 6 или...?

PM MAIL   Вверх
Den64
Дата 6.2.2008, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 6.4.2006
Где: Курск

Репутация: 1
Всего: 2



Поищи на ветке системное программирование, наверняка подобная задача решена.. 
--------------------
Инагда пишу звуками.
PM WWW ICQ   Вверх
xvr
Дата 6.2.2008, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(new_web @ 6.2.2008,  10:22)
Цитата(xvr @  6.2.2008,  09:01 Найти цитируемый пост)
1) Открываешь консоль (Пуск->Программы->Стандартные->Коммандная строка)2) Идешь в директорию, где у тебя лежит inpout32.dll (комманда cd путь...)3) Набираешь implib inpout32.lib inpout32.dll


Сделал. Изменил. Скомпилировал. В предвкушении праздника запускаю и

[Linker Error] Unresolved external '__stdcall Out32(short, short)' referenced from E:\CPLUSPLUS\CONTROLS\UNIT1.OBJ

что тут не так?

Замени в программе #include "h.h" на
Код

extern "C" {
#include "h.h"
}

PM MAIL   Вверх
new_web
Дата 6.2.2008, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 1.2.2008

Репутация: нет
Всего: нет



Цитата(xvr @  6.2.2008,  18:34 Найти цитируемый пост)
Замени в программе #include "h.h" накод C++
Код

extern "C" {#include "h.h"}



Не работает, к сожалению - компилируется но, всё таже ошибка!
[Linker Error] Unresolved external 'Out32' referenced from E:\CPLUSPLUS\CONTROLS\UNIT1.OBJ

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

Это сообщение отредактировал(а) new_web - 6.2.2008, 23:08
PM MAIL   Вверх
xvr
Дата 6.2.2008, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(new_web @ 6.2.2008,  21:52)
Цитата(xvr @  6.2.2008,  18:34 Найти цитируемый пост)
Замени в программе #include "h.h" накод C++1:2:3:extern "C" {#include "h.h"}


Не работает, к сожалению - компилируется но, всё таже ошибка!
[Linker Error] Unresolved external 'Out32' referenced from E:\CPLUSPLUS\CONTROLS\UNIT1.OBJ

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

Это уже другая ошибка. Позови implib с ключем -a: implib -a inpout32.lib inpout32.dll
PM MAIL   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.0977 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.