Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/19: Рейтинг темы: голосов - 19, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 11.03.2012
Сообщений: 4

Возможно ли взаимодействие с Assembler

12.03.2012, 10:24. Показов 4299. Ответов 43
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возможно ли использование в quick.basic.4.5 ассемблер, для считывания сигналов с Parallel Port Connector и USB?
написание драйверов, для внешних устройств?

версия quick.basic.4.5 не интерпретатор.

если есть литература по ассемблеру для quick.basic.4.5, то пожалуйста дайте ссылку.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.03.2012, 10:24
Ответы с готовыми решениями:

Ошибка Invalid PUBLIC definition (взаимодействие Pascal и Assembler)
Invalid PUBLIC definition (move) Как я понял, эта ошибка в печёнках сидит не у одного меня. Перерыл много форумов, но исправить так и не...

Возможно ли взаимодействие Pascal и Excel
Нужно написать следующую программу: Тело бросают с земли вертикально вверх. Входными данными является начальная скорость, а на выходе...

Возможно ли взаимодействие ADO с OLE
Приветствую всех участников форума! Написал в свое время программку работающую с БД на DAO с использованием OLE. А теперь захотел...

43
Эксперт по электронике
6830 / 3254 / 338
Регистрация: 28.10.2011
Сообщений: 12,722
Записей в блоге: 7
26.03.2016, 14:48
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от тактик Посмотреть сообщение
Через другие программы (не бейсик) все изменения регистра Status , регистра Control прекрасно видно
Эта программа тоже видит? Возможно ли взаимодействие с Assembler
К слову, она на бейсике написана.

Цитата Сообщение от тактик Посмотреть сообщение
но мне то нужно в QB
Тогда ставьте DOS и запускайте программу. Должно работать (если конечно причина не в ошибке в программе).

Цитата Сообщение от тактик Посмотреть сообщение
я конечно попробую FreeBasic может наступят изменения
Потребуется не просто запустить код в FreeBasic, но изменить его, приведя в виду Win32/64 и вместо прямой работы с портом, нужно использовать драйвер.
0
 Аватар для vodav
572 / 141 / 37
Регистрация: 12.03.2012
Сообщений: 403
26.03.2016, 15:09
Цитата Сообщение от Жорик8 Посмотреть сообщение
если есть литература по ассемблеру для quick.basic.4.5, то пожалуйста дайте ссылку
http://www.basic.visual2000.ru... sart01.htm
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
27.03.2016, 23:26
я конечно попробую FreeBasic может наступят изменения...
Вы думаете дело в компиляторе. Оба компилятора работают с портами одинаково.
Разве что QB медленнее чем FB, т.к. интерпретатор, а компиляция подвязана на
библиотеку функций, которая тоже работает не быстро. Коммутировать бейсик с
ассемблером в ключе работы с портами для вашей задачи вполне может иметь
мало смысла, там нет каких-то особых абилок, наоборот больше запаривания по
задержкам(порт может не успеть среагировать до подачи в него новых данных).

Колитесь, вы там COVOX что-ли паяете, зачем вам LPT?
Всё что касается старых портов COM, LPT лучше делать из под чистого DOS.
В винде это будет прослойка(костыль) из драйвера, который будет дико тормозить
доступ(вызов функций ядра операция не самая быстрая), под DOS-ом же ничего
этого не нужно, прямая работа с портом.
Если проблема с загрузкой DOS, то загрузочный CD можно сделать из образа дискеты
через NERO, делается очень просто на самом деле(если подсмотреть в конфиг файлы
старых реаниматоров).

Потребуется не просто запустить код в FreeBasic, но изменить его
Чел хочет использовать сборку FB под DOS, но запускать прогу из под WinXP. Хех...
Даже 98-я винда очень паршиво работала в режиме эмуляции DOS, чего уж про XP
говорить.
0
2 / 2 / 0
Регистрация: 07.02.2016
Сообщений: 17
28.03.2016, 20:04
мужики! чтобы было все понятнее объясню. на работе используется для настроек и регулировок древний как говно мамонта комп,памяти в нем 300 мб ,тесты проходят в ХР . использую QB и LPT в качестве альтернативы замене пальцев рук и напряга зрения в повседневной монотонной работе . минимум средств а итог - сижу "курю бамбук" . но для некоторых изделий не хватает четырех штук входящих сигналов(потому что с других регистров почему-то не прочесть ,о чем говорил в предыдущих сообщениях) нужно больше. вы мне предлагаете варианты от которых комп уйдет в "глубокую задумчивость" . а с портом видно что работает но такое ощущение что пытаюсь прочесть не по тем адресам или в биосе чего надо поменять ,или какой то бит устанавливать а потом читать????. ответ где-то рядом ......вот тут то и нужны сторонние мозги . одна голова хорошо а много еще лучше. крайний случай есть простой способ получить больше входных сигналов используя те несчастных четыре работающих входа - это программная коммутация , но уже из принципа становиться интересно - где собака зарыта???.
0
Эксперт по электронике
6830 / 3254 / 338
Регистрация: 28.10.2011
Сообщений: 12,722
Записей в блоге: 7
28.03.2016, 20:29
Цитата Сообщение от тактик Посмотреть сообщение
где собака зарыта???.
Зарыта на поверхности. QB для DOS. Он не предназначен для работы в Windows. Надеюсь это понятно?
Если нужно чтобы работало нормально, ставьте DOS и запускайте программу по ее управлением.
Но возможно у вас в коде ошибка...

Цитата Сообщение от тактик Посмотреть сообщение
вам не приходила в голову мысль в век машин посоветовать людям которые любят ездить на велосипедах посоветовать ездить на машине или летать самолетами
Запуская DOS-программу работающую с железом под WindowsXP, вы хотите перелететь на велосипеде через океан. Либо не пытайтесь через океан переделать (ставьте DOS), или переписывайте программу на ЯП, компилирующий под Windows (в самолете перелетайте через океан).
0
 Аватар для vodav
572 / 141 / 37
Регистрация: 12.03.2012
Сообщений: 403
29.03.2016, 13:13
Для виндов в свое время писали кучу библиотек для псевдопрямой работы с портами. Вот у меня в архиве что-то завалялось. Попробуйте это: https://www.cyberforum.ru/atta... 1459246336
Вложения
Тип файла: zip UserPort.zip (33.0 Кб, 16 просмотров)
0
2 / 2 / 0
Регистрация: 07.02.2016
Сообщений: 17
29.03.2016, 20:32
Цитата Сообщение от locm Посмотреть сообщение
Зарыта на поверхности. QB для DOS. Он не предназначен для работы в Windows.
в полне возможно но он у меня работает под ХР (за мелкими исключениями ) и мне нужно (по потребностям) что бы он работал под ХР. к стати забыл сказать что я запускал вашу программу LPT Status - она прекрасно видит изменения в регистре при подачи сигналов из вне. Вы говорите она написана на бейсике ?? а можете скинуть исходник ,тогда было бы сразу ясно где ,что и почему.
0
Эксперт по электронике
6830 / 3254 / 338
Регистрация: 28.10.2011
Сообщений: 12,722
Записей в блоге: 7
29.03.2016, 21:06
В архиве исходник программы (основной файл LPT_Pins.pb) и драйвера. Диалект бейсика - PureBasic.
PureBasic
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
XIncludeFile "pbdriverio_Framework.pbi"
 
 
Procedure GetLPT1(hDriver)  ; Процедура чтения данных из LPT1
  Byte.a = PortInp(hDriver, $379)  ; Чтение из порта
  SetGadgetText(0, RSet(Bin(Byte), 8, "0")) ; Отображение в окне.
EndProcedure
 
 
hDriver = OpenDriver_PB_IO(@ErrCode)
If hDriver = 0
  MessageRequester("Ошибка доступа к драйверу", "Код ошибки:  "+Str(ErrCode))
EndIf
 
 
; Открываем окно
OpenWindow(0,0,0,130,70,"lpt status", #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_Invisible)  
StringGadget(0, 2, 4, 124, 20, "")
ButtonGadget(9,2,30,128,24,"Прочитать Status LPT 1") ; Экранная кнопка
HideWindow(0,0)   ; Отображение окна на экране
 
Repeat         ; Главный (оконный) цикл программы "Repeat - Until"
  Event=WaitWindowEvent()  ; Идентификатор события
  If Event=#PB_Event_Gadget ; Произошло событие в гаджете
    Gadget=EventGadget()    ; ID гаджета, в котором произошло событие
    If Gadget=9             ; Обнаруден клик по экранной кнопке
      GetLPT1(hDriver)            ; Процедура передачи информации по порт LPT1
    EndIf
  EndIf
Until Event=#PB_Event_CloseWindow ; Когда закрывают окно, цикл будет прерван и прога завершит работу.
 
CloseDriver(hDriver)
Вложения
Тип файла: rar LPT Status_Src.rar (7.9 Кб, 4 просмотров)
0
2 / 2 / 0
Регистрация: 07.02.2016
Сообщений: 17
29.03.2016, 21:36
да ,если бы я был еще знаком этим РВ , хотя с первого взгляда зкомое есть .
вот эта строчка нужная мне - Byte.a = PortInp(hDriver, $379)
у меня в проге - a = INP(&H379) должно работать но не работает
интересно а как это применить у меня ????
0
Эксперт по электронике
6830 / 3254 / 338
Регистрация: 28.10.2011
Сообщений: 12,722
Записей в блоге: 7
29.03.2016, 21:53
Строка
PureBasic
1
Byte.a = PortInp(hDriver, $379)
это вызов процедуры из файла pbdriverio_Framework.pbi.
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
Procedure PortInp(hDriverID, PortAddress.u) ; Чтение байта из порта, адрес которого указан в 'PortAddress'.
  Protected Result, Buffer.i, BytesReturned.i, OutBuff.i
  Result=0 : Buffer=0 : OutBuff=0
  
  If hDriverID
    Buffer=PortAddress
    DeviceIoControl_(hDriverID, #IOCTL_READ_PORT_UCHAR, @Buffer, 2, @OutBuff, 1, @BytesReturned, 0)
    Result=OutBuff
  EndIf
  
  ProcedureReturn Result
EndProcedure
В ней вызывается WinAPI функция DeviceIoControl (описание на русском), позволяющая обмениваться сообщениями с драйвером, в данном случае pbdriverio.sys. Драйвер (его исходник в папке DriverIO) получив сообщение #IOCTL_READ_PORT_UCHAR вызывает процедуру
PureBasic
1
2
3
4
5
6
7
8
9
Procedure.b InPort(Port.u)
  Protected Result.b=0
  EnableASM
  MOV DX, Port
  IN  al,DX
  MOV Result, al
  DisableASM
  ProcedureReturn Result
EndProcedure
Может все это кажется запутанным и слишком усложненным, но таковы правила Windows. Доступ к портам имеют только программы, выполняющиеся на уровне ядра ОС.
0
2 / 2 / 0
Регистрация: 07.02.2016
Сообщений: 17
29.03.2016, 22:20
тое-сть предлагаешь осваивать РВ , а драйвер с QB никак нельзя связать (я с драйверами никогда не связывался-не мой уровень , я техник)
0
Эксперт по электронике
6830 / 3254 / 338
Регистрация: 28.10.2011
Сообщений: 12,722
Записей в блоге: 7
29.03.2016, 22:39
Чтобы связать драйвер с QB-приложением, нужно из него вызывать функции Windows, в частности CreateFile, DeviceIoControl и подобные. Но когда разрабатывали QB, Windows в ее современном виде еще не существовало и в QB нет возможности с ними взаимодействовать. Еще одно препятствие в том что QB-программы, 16-ти битные, а функции Windows, 32 или 64 битные и они взаимодействовать не могут.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
30.03.2016, 02:01
и мне нужно (по потребностям) что бы он работал под ХР.
Помню, тоже хотел помигать диодами клавиатуры, программируя контроллер через порты
строго по спецификации из асмовой книжки, итог - на NTVDM не помигал, хотя показания
очень даже читались... Под DOS-ом в своё время получалось... Делайте выводы...
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
30.03.2016, 06:41
Цитата Сообщение от тактик Посмотреть сообщение
у меня в проге - a = INP(&H379) должно работать но не работает
интересно а как это применить у меня ????
Сделайте усилие над собой и маааленький шажок вперёд в сторону прогресса - перепишите свои строчки с QB на VB6, Вам даже ни чего нового учить не придется, практически всё то же самое, и синтаксис и операторы.
Вот прочитайте бегло на досуге, и не найдёте отличий от своего QB, ну может только пару первых строчек для инициализации библиотеки "inpout32.dll".
0
2 / 2 / 0
Регистрация: 07.02.2016
Сообщений: 17
30.03.2016, 20:57
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Под DOS-ом в своё время получалось... Делайте выводы...
да я прекрасно знаю что под досом все работает, но не могу же я одновременно запускать и дос и виндовс .А винда нужна потому что тестируется аппаратура из под нее. вот такие пироги ...

Добавлено через 28 минут
а сама библиотека "inpout32.dll"где находиться ???
если можно дате ссылку для скачки руссифицированного VB6 или скинте и мы сделаем
Цитата Сообщение от Pro_grammer Посмотреть сообщение
маааленький шажок вперёд в сторону прогресса
0
 Аватар для vlisp
1064 / 985 / 153
Регистрация: 10.08.2015
Сообщений: 5,385
31.03.2016, 23:18
Цитата Сообщение от тактик Посмотреть сообщение
если можно дате ссылку для скачки руссифицированного VB6 или скинте и мы сделаем
Если для работы, то забудьте... как правило компиляторы оставляют в бинарнике свои следы, так что доказать что вы не верблюд, не получится, VB6 не бесплатный и уже давно не продается...
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
01.04.2016, 21:16
Если для работы, то забудьте... как правило компиляторы оставляют в бинарнике свои следы
Если *.dll-ка идёт отдельно(или есть аналог), то можно её функции подгрузить в FB.
И всё будет легально.
0
 Аватар для vlisp
1064 / 985 / 153
Регистрация: 10.08.2015
Сообщений: 5,385
03.04.2016, 00:52
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Если *.dll-ка идёт отдельно
Если почитать лицензионное соглашение, то там прописывается запрет на использование частей продукта, любой файл дистрибутива является частью продукта, так что не пойдет
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
03.04.2016, 01:06
Цитата Сообщение от vlisp Посмотреть сообщение
то там прописывается запрет на использование частей продукта
Процитируйте где так написано. Я вот вижу open source проект:
http://www.highrez.co.uk/downloads/inpout32/

Зачем публиковать проект и запрещать им пользоваться?
0
 Аватар для vlisp
1064 / 985 / 153
Регистрация: 10.08.2015
Сообщений: 5,385
03.04.2016, 02:38
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Я вот вижу open source проект:
Вообще-то я по поводу VB6 высказался
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.04.2016, 02:38
Помогаю со студенческими работами здесь

Возможно ли взаимодействие интегрированной и дискретной видеокарт?
взаимодействие интегрированной и дискретной видеокарт.возможно ли? Не надо включать Caps-Lock

Ошибка в Assembler или, возможно, DOS/
Писал программу на Assembler, для заполнения матрицы по спирали. Exe файл работает правильно, а с com возникла проблема. Выводит...

Взаимодействие между пользователями средствами jquery ajax — возможно?
Возможно ли средствами Jquery ajax реализовать взаимодействие между пользователями? На сайте авторизовались два пользователя, один с...

Если нельзя выполнить вход в систему, возможно ли сетевое взаимодействие с данным ПК
Здравствуйте. Есть ноутбук, не можем войти в систему Windows 8. Возможно ли скинуть с него файлы по сети на другой комп.Через лайв сиди,...

Возможно ли, и если возможно, то как можно получить свой номер телефона?
возможно ли, и если возможно, то как можно получить свой номер телефона? т.е. на эмуляторе это будет +1 (425) 001-0001


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru