Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Разное » помогите научиться писать программы под Win


помогите научиться писать программы под Win

Сообщений 1 страница 30 из 65

1

всем доброго дня!
может кому то покажется моя просьба тупой - звиняйте!...

о наболевшем:
много лет писал под ДОС, состыковывал компьютер и самодельные железки
прошло некоторое время и я устарел со своим ДОСом :)

не могу освоить написание программ под Windows. Пробовал учить VB (писал на QB - думал, что будет проще освоить)- не могу понять вообще идеологии
Дальше Hello word дело не идет - просто не понимаю

написал одну простенькую программу на Liberty basic - но он имеет весьма скромный набор команд и какой-то он "не такой" :)

может кто подскажет чего

Сразу говорю: "Си - не приемлю за странный синтаксис"
программы-конструкторы, в который "программа" собирается из готовых блоков, мне не нравятся: на все случаи жизни "кубиков" не напасёшься! :)

Пробовал учить и PureBasic - всё та же проблема... :(

может есть что простое, для старых "досовцев-спектрумтистов" ? :)
чтобы простой синтаксис и возможность написать "окошечки" на экране - народ на них подсел
Даже какие-то приблуды для DOS-овского QB качал, чтобы 1024 мог делать, но как-то не пошел он для меня

такие вот, товарищи, проблемы

0

2

Программирование под Win (линь, мак и т. д.) отличается от программирования под DOS.
Win является многозадачной операционной системой и программа должна превильно с ней взаимодействовать.

А в чём именно возникает сложность?

0

3

да во всём
для чего надо редактор - я понял: чтобы интерфейс рисовать
Что мне не надо, как в ДОСе опрашивать события, я понял: тут всё по событиям

но общей идеи программирования так и не возникло

про то, чем отличается программирование в ДОС и Win, я читал в классной книжке (правда о Си)

Вот и думаю...
тут хочу сделать многоканальный таймер, управляющий удаленными до 30 м устройствами.
Железо - не проблема, опыт есть

Есть комп, к нему некое устройство-буфер, через которое поступает питание и сигналы управления на удаленные (до 16) устройства
Надо на экране нарисовать эти 16 объектов, и написать прогу:
щелкаешь по объекту, вводишь /выбираешь время работы
на этот объект через устройство-буфер поступает команда на включение нагрузки (1 канал)
  На  удаленном устройстве есть индикатор, на индикаторе отображается оставшееся время работы

через каждую минуту комп на каждое из устройств отсылает оставшееся время работы (т.е., удалённое устройство просто "защелкивает" принятое время)

Если время закончилось - на удаленное устройство посылается команда на отключение нагрузки

на чем советуете еще раз опробывать научиться программировать компы?:)

И ЕЩЕ:
ПО должно быть бесплатным! Хотя бы для дома! :idea:

крякать, хакать, патчить, лечить, кормить таблетками и ключами - не стану! вот такой я дурной  :crazy:   :playful:

ps
в ДОС я это написал и отладил в железе за месяц (в 2004 году, без какого-либо опыта вообще!)
А вот тут - напряг...

Отредактировано Александр Д. (2010-10-04 20:07:35)

0

4

Александр Д. написал(а):

Надо на экране нарисовать эти 16 объектов, и написать прогу:
щелкаешь по объекту, вводишь выбираешь время работы

Я думаю что для начала лучше не рисовать, а использовать обычные кнопки - так будет проще. Когда появится опыт, можно сделать интерфейс более навороченым.

Александр Д. написал(а):

через каждую минуту комп на каждое из устройств отсылает оставшееся время работы (т.е., удалённое устройство просто "защелкивает" принятое время)

Т. е. к компу будут подключены 16 устройств. Куда?
К USB?

Александр Д. написал(а):

на чем советуете еще раз опробывать научиться программировать компы

А какой из языков больше понравился и показался более понятным? Вот его и попробуйте использовать.

Александр Д. написал(а):

крякать, хакать, патчить, лечить, кормить таблетками и ключами - не стану! вот такой я дурной

А если разработчики вообще не позаботились о защите своего ПО?
Т. е. платная полная версия не нуждается в лечени, она сорвешенно здорова и её просто нужно установить на комп и пользоватся.

0

5

Попробую предложить свой вариант. На сайте мелкомягких качаешь бесплатный VBNET - express
http://www.microsoft.com/express/Downlo … sual-Basic или http://www.microsoft.com/express/Downlo … ual-Basic.
Можно конечно и C#, но если синтаксис не устраивает, то первое. Где-то читал, что бейсик программистов калечит.
Неправда! Начинал тоже в бейсике под ДОС, потом VB6, VBA. Жизнь заставила перейти на VBNET. Потом SQL, ASPNET, HTML, JS, и наконец C#.
Не могу сказать что стал крутым спецом во всех этих языках, но при необходимости работаю на всех. Хотя предпочтение отдаю VBNET.
Свои кнопочки накидаешь за 5 минут. Попутно найди книжечки по VBNET, например на Натахаусе.
Будут вопросы, пиши.

0

6

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

0

7

Вот что нашёл в инете про языки, использующие .NET Framework
Здесь сравнивается управляемый код, (выполняемый на виртуальной машине, коей является .NET Framework) с неуправляемым кодом.

I) Язык C# и С++ это разные линейки, это как сравнивать корабль и самолет. С++ неуправляемый язык. Сравнивать надо java и C# или в край С++.NET. А так это дурость.

II) С# это управляемый язык (то есть выполняющейся в некой вирт машине) - по сути управляемые языки это расширенные скриптовые языки и не более. Отсюда как и скриптам присущи следующая философия достоинств и недостатков (ниже выводы будут справедливы и для скриптовых языков):

Достоинство:
1) Скорость разработки, и простота для определенных круга задач (не всех, всех не возможно, но в случае C# или java - многих, не спорю).
2) Кроссплатформенность, это вообще главная цель управляемых языков и скриптов - добиться переносимости. С# - тут проигрывает тем что кроме win его больше нет. А как же mono? Ну это детище энтузиастов которым понравилась концепция предложенная МС, или скорее надеющихся что МС может купит их продукт за миллионы...
Просто МС не сделал это, не потому что у них "война" с линупсами и маками, а потому что им нужно было свою инет технологию пихнуть вместе с вин-сервером.
ИМХО: уж поверьте серверный рынок не чуть не менее жирней чем десктопный.

Это был гвоздь в гроб номер 1, официальной кроссплатформенности НЕТ!!!

PS в случае неуправляемых языков, кроссплатформенность достигается "кросс-либами".

3) Удобство, например сбор мусора, да система из вирт машины может контролировать сборку мусора, многие хаят С++ который этого не умеет - это поверьте очередные ламеры. Кто понимает концепцию неуправляемых языков поймут что их не кто не сопровождает во время выполнениями (за исключением некоторых элементов - полифоризма, виртуальных функций в С++ и еще там чего то для меня сложного).

4) Скорость хоть и меньше (и будет всегда меньше в управляемых), но потеря скорости для ПК не критична.

Недостатки:
1) Зависимость от виртмашины, если с неуправляемыми тут понятно, то с управляемыми нужно ставить машину, которая ппц как не мало весит (про то что в москве инет быстрый и безлимитный мы все слышали...).

2) Функциональность, так как программа выполняется в какой то среде, а среда рассчитана на кроссплатформенность этого кода, то даже наверно математически можно вывести что язык без вирт машины будет по сути не чем ограничен, чем скажем тот же С#, или java, которые все равно дальше своей вирт не плюнут (ну или с дикой абстракцией и инвалидностью).

3) И сюда же впишу снова потери производительности, так как на десктопах это пофиг, но есть и другие отрасли, где она важна очень (даже в ПК)!

4) Низкоуровневое программирование - недоступно!!!

Основные гвозди в гроб C# и VB.NET:
1) Нет кроссплатформенности, по сравнению с java.
2) Гигантская вирт машина по сравнению с java.
3) Лицензии, тысячи их... (с) Да и платное там все, МС тоже не дураки .
4) Там какая то ж..па совместимости с версиями, отсюда набор юного разработчика растет с каждой версией. По сравнению с java.
5) Это продукт МС, тут ветер повернет ровно так, как это будет нужно МС. Случай с MFC и с ASP (до ASP.NET) доказывает всю убогость этого.
6) Основной еще гвоздь от которого меня выворачивает - (могу ошибаться, прочел это давно в вики) что программу на С# можно легко декомпилировать (НЕ деассемблировать) вплоть до восстановление имен переменных. Это какое то гадство уже чтоли...

0

8

Пётр
Т. е. к компу будут подключены 16 устройств. Куда? К USB?
да, к USB
Но через преобразователь. Поэтому можно считать что к COM

А какой из языков больше понравился и показался более понятным? Вот его и попробуйте использовать.
паскаль, бейсик

А если разработчики вообще не позаботились о защите своего ПО?
Вы уронили кошелёк, а кто-то поднял
Ну и хрен с ним, что в кошельке ваши визитки и понятно, кто владелец! - ВЫ ЖЕ НЕ ЗАЩИТИЛИ СВОЙ КОШЕЛЁК! ;)
Это воровство. но не будем об этом

Думаю будет не лишним предупредить что созданые проги будут требовать для своей работы библиотеку .NET Framework
Понял, но это не критично
даже если и комп поставлю другой, то установить Net - не проблема

Вот что нашёл в инете про языки, использующие .NET Framework
...

Почти ничего не понял... Не мой уровень  :dontknow:

radan
На сайте мелкомягких качаешь бесплатный VBNET - express
пока не реально... Интернет у меня сейчас "экономный" (Социальный - 128 кБит/с)
Там, думаю, мегабайт 400. Как минимум... Знаю я этих МелкоМягких: всё на рющечках, да на картиночках...Поэтому и весит всё под гигабайты...

0

9

Александр Д. написал(а):

Но через преобразователь. Поэтому можно считать что к COM

Т. е. нужно подключится к 16 COM портам и работать с ними.
Раз в минуту слать команды устройствам (таймер юзаем).

В этом лучае, лучше использовать не кнопки, а таблицу (можно редактируемую, но это сложнее), в которой будет отображатся данные об общем времени и уже отсчитаном и о состоянии устройства (есть ли связь с ним).
При клике по пункту таблицы, появится окно редактирования данных.
Вот похожий проект http://purebasic.info/phpBB2/viewtopic.php?t=718

+1

10

не, порт COM - один
я же написал:
Есть комп, к нему некое устройство-буфер, через которое поступает питание и сигналы управления на удаленные (до 16) устройства

ссылку посмотрю, спасибо

0

11

Александр Д. написал(а):

не, порт COM - один

Тогда вполне возможно что тот проект, (ссылку на который дал выше) подойдёт без его модификации.

0

12

пробую понять методом анализа кода (я так всё учил: и ассм, и бейсик, и паскаль)
убивают длиннющие вызовы с точками :tired:

но, как принято говорить у программеров: проще написать свою прогу, чем разобраться в чужой :)

ps
блин... дык, пуребейсик - платный, 79 евро просят, как я понял

Отредактировано Александр Д. (2010-10-04 23:47:33)

0

13

Александр Д. написал(а):

убивают длиннющие вызовы с точками

А можно пример кода?
Может всё не так страшно.

Александр Д. написал(а):

дык, пуребейсик - платный, 79 евро просят

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

PS.
Винда, FastAVR и BASCOM у вас лицензионные?

0

14

не по теме:

винда - да
каспер - да
Fast - демо (есть и ключ, но мне хватало)
Bascom - демо. Писал прогу, вылез за 4 кб, слил ломанную версию. Но тут порылся в cfg и включил оптимизацию. Прога уменьшилась значительно!
опять пользуюсь демо версией

из не лицензионного - Word 2000, но я бы его купил, если бы продавался.
Звонил в MS, мне там навязывали версию 2007, которую я и за деньги не возьму:
1. тупой интерфейс,
2. несовместимость форматов, а издатели и редакции просят "чистый" RTF или DOC

нашел Freebasic
завтра зачитаю инструкцию и посмотрю примеры

0

15

Александр Д. написал(а):

нашел Freebasic

Программировать на чистом API....
Долго и нудно..

0

16

качаю какой-то мануал к нему
посмотрю...

одним местом чувствую: придется мне осваивать LibertyBasic.... там _привычнее_ :(
но не всё там хорошо и нравится... один "графический язык" чего стоит - слёзы!

ps
блин, как сделать, чтобы подпись цеплялась только там, где я захочу?!
в профиле не нашел...

Отредактировано Александр Д. (2010-10-05 00:35:19)

0

17

Александр Д. написал(а):

одним местом чувствую: придется мне осваивать LibertyBasic

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

Отредактировано Пётр (2010-10-05 00:42:23)

0

18

да, там цеплял какой-то файл, переименовывал...
уже не помню - года 2 назад было, если не больше...

0

19

Александр Д. написал(а):

одним местом чувствую: придется мне осваивать LibertyBasic....

И как успехи?

0

20

с ШИМ воюю :( пока безуспешно...

0

21

Кстати,я довольно успешно использую Delpfi, очень даже удобно.Не охота рассматривать другие платформы, так можно и до эссемлера дойти.А по теме, попробуй каждое уст-во(из 16-ти) включить парраллельно по шине RS-485(его ещё профибасом называют), а к компу подключи RS-485-RS-232 и работай, как с простым COM устройством.Только при формировании пакета данных обозначь от кокого именно пришло.Да, а лучше пусть они все ждут команды от компа, а затем ,в зовисимости от того к кому комп обращается, будут отдавать данные и снова в ожидание.

0

22

Mrshilov написал(а):

Liberty Basic

Это вроде интерпретатор?
Или я ошибаюсь?

0

23

я думаю, что да - нужна их dll для всех проектов

0

24

Mrshilov написал(а):

Возможностей Liberty Basic для данного применения должно хватить. COM-порт он поддерживает. И еще для него есть "конструктор".

а зачем эта программа? что-то я не понял. Как оболочка для написания графического интерфейса?..

0

25

Mrshilov написал(а):

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

Может тогда посмотреть на PureBasic?

0

26

я его вообще не понял :(

0

27

Александр Д. написал(а):

я его вообще не понял

Начинать нужно с основ.
Там нет ничего слишком сложного, но нужно знать основы языка.

0

28

Mrshilov написал(а):

А вообще может есть смысл пошерстить программы типа Multimedia Builder

Они заточены на создание авторанов для дисков. Боюсь в других областях могут быть те или иные ограничения!
Не уверен что с их помощью можно будет работать с LPT, COM и USB портами.

0

29

Посмотрел.
Плагин для LPT (PB_LPT.exe) написан на PureBasic  :D
Убедится очень просто - скачиваем проект http://mmbuilder.ru/_fr/11/lpt.mbd и запускаем его (Project -> Run), после чего открываем временную (TEMP) папку пользователя, ищем там папку MMBPlayer и смотрим что внутри. Там окажутся 2 файла: PB_LPT.exe и PB_LPT.pb.
В последнем находится такой текст:

Код:
#Name="PB_LPT - Управление LPT портом."

Count=CountProgramParameters()
If Count<>2
 MessageRequester(#Name, "Некорректное число параметров коммандной строки!"+Chr(10)+"Должно быть 2, а их "+Str(Count)+Chr(10)+Chr(10)+"Первый параметр - адрес LPT порта (2 байта) в десятичной системе счисления."+Chr(10)+"Второй параметр - код (1 байт), отправляемый в порт в десятичной системе счисления", #MB_OK|#MB_ICONWARNING)
 End
EndIf

Port.s=RemoveString(ProgramParameter(),Chr(34))
Pin.s=RemoveString(ProgramParameter(),Chr(34))

PortW=Val(Port)
If (PortW<>888 And PortW<>632 And PortW<>956) Or Len(Port)<>3
 MessageRequester(#Name, "Неправильный адрес порта - "+Chr(34)+Port+Chr(34)+""+Chr(10)+"Должен быть 888 для LPT1 или"+Chr(10)+"632 для LPT2 или 956 для LPT3", #MB_OK|#MB_ICONWARNING)
 End
EndIf

PinC=Val(Pin)
If PinC<0 And PinC>255
 MessageRequester(#Name, "Передаваемый байт (второй аргумент коммандной строки)"+Chr(10)+"должен быть в виде целого положительного числа "+Chr(10)+"в пределах 0...255!", #MB_OK|#MB_ICONWARNING)
 End
EndIf

If IO_IsDriverInstalled()=0
 MessageRequester(#Name, "Не удалось активировать драйвер."+Chr(10)+"Перезапустите программу.", #MB_OK|#MB_ICONERROR)
 End
EndIf

IO_PortOut(PortW, PinC)
Delay(100)
End

Плагин для USB по сути не является таковым.
Он просто работает с джойстиком через DirectX 7, а джойстик можно подключить как через USB, так и через Game-порт. С другими устройствами кроме джойстика, он работать не будет. :no:

И кроме того, я так понял что WinAPI тоже не поддерживаются?

0

30

Чёт я не понял, что надо COM или LPT.Там вкорне всё разное.

0


Вы здесь » Программирование ATMEL в BASCOM. » Разное » помогите научиться писать программы под Win