| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Borland C++ builder main loop http://mcu-bg.com/mcu_site/viewtopic.php?f=16&t=10296 |
Страница 1 от 1 |
| Автор: | slav4o.com [ Чет Юли 05, 2012 4:39 pm ] |
| Заглавие: | Borland C++ builder main loop |
Здравейте. Напоследък малко по-сериозно се захванах с това нещо. Става дума за C++ Builder 4 но предполагам и за другите версии е същото. Та къде се намира на това нещо main() функцията където да цикли постоянно докато не се спре програмата ? |
|
| Автор: | amdatlon [ Чет Юли 05, 2012 8:39 pm ] |
| Заглавие: | Re: Borland C++ builder main loop |
Чакай малко сега, имаш в пред вид за РС (Windows/Linux/...) -програмиране ли? Ако е така, там стоят малко по различно нещата, програмата не цикли в някакъв безкраен цикъл, както при микроконтролерите. А чака докато се появи накакво събития-натискане на бутон, цъкане с мишка, придвижване с мишка, поява на прекъсване от вън и т.н.т. Тогава всяко събитие се обработва от съответна функция. Като свърши функцията, пак си чака следващото събитие. Дано да съм ти разбрал правилно въпроса де |
|
| Автор: | slav4o.com [ Пет Юли 06, 2012 4:07 am ] |
| Заглавие: | Re: Borland C++ builder main loop |
Ами да правилно ми го обясни дори, ама как тогава да накарам да се задейства когато получи нещо по RS232 като изобщо не *бава за такива неща |
|
| Автор: | ike [ Пет Юли 06, 2012 5:59 pm ] |
| Заглавие: | Re: Borland C++ builder main loop |
Прегледай winapi -то http://msdn.microsoft.com/en-us/library ... ial_topic4 http://www.wrongbananas.net/cpp/2006.09 ... loops.html http://www.tetraedre.com/advanced/serial2.php |
|
| Автор: | amdatlon [ Пет Юли 06, 2012 8:26 pm ] | |||||||||
| Заглавие: | Re: Borland C++ builder main loop | |||||||||
Да точно това което колегата "ike" ти е посочил, трябва да разучиш. Не съм в час със С++, мога да ти дам пример само за делфи, пак е със WinApi ф-ии. Примерно натискаш един бутон и стартираш кода по долу. Един вид тази ф-я WaitCommEvent си се джитка докато не попучи нещо по порта и тогава ти връща отговор. После ти трябва да прочетеш полученото с ReadFile. Но има и настройки на порта преди тези операции.
|
||||||||||
| Автор: | slav4o.com [ Съб Юли 07, 2012 12:18 am ] |
| Заглавие: | Re: Borland C++ builder main loop |
Идеята ми е както си седи програмата и като дойде нещо по ком-а да се изпише, без да се натискат бутони. Да имам една функция като тия void __fastcall TForm1::Button1Click {} само, че да е void __fastcall TForm1::RS232DataReady {} но сега ще чета да видим какво ще излезе. |
|
| Автор: | ike [ Съб Юли 07, 2012 10:03 am ] |
| Заглавие: | Re: Borland C++ builder main loop |
Сложи един таймер и от него можеш да проверяваш на всеки 500мС дали има нещо ново. |
|
| Автор: | slav4o.com [ Съб Юли 07, 2012 5:59 pm ] |
| Заглавие: | Re: Borland C++ builder main loop |
Мда аз точно това и щях да направя, но къде да я сложа тая проверка, като процесора отива някъде да смята, а това което аз мога да добавя в програмата са някакви софтуерни прекъсвания. п.с. малко по-късно : Aaaaa стана има таймер функция, върши идеална работа. Благодаря много. Там вътре написах проверката на COM-а |
|
| Автор: | syscop [ Съб Юли 07, 2012 8:38 pm ] |
| Заглавие: | Re: Borland C++ builder main loop |
Ако съм разбрал добре какво искаш да правиш елегантното решение е да изнесеш цялата комуникация в отделна нишка. Да ползваш таймер не е най-добрата реализация - не можеш да определиш точно на колко време да правиш проверка(и). |
|
| Автор: | amdatlon [ Съб Юли 07, 2012 8:46 pm ] | |||||||||
| Заглавие: | Re: Borland C++ builder main loop | |||||||||
Е точно де, WaitCommEvent ( то името си показва) чака за поява на събитие по КОМ порта. Бутона го дадох за пример, че чрез него веднъж стартираш тази функция и програмата си чака докато се появи нещо. Може и без бутон, примерно още при стартиране на приложението да се пуска ф-ята. Но за да стане добре трябва да се направи отделна нишка за тази функция, тъй като приложението ще блокира ( върти безкраен цикъл) докато не дойде нещо по порта. А като е в две нишки - (едната е на основната програма ) ще може с някои хватки да прекъснеш чакането , или да си вършиш други работи. Не обяснявам добре, особено ако не си го правил ще ти се стори мъгла ЕДИТ: ааа писали сме по едно и също време с "syscop" за нишките |
||||||||||
| Автор: | slav4o.com [ Нед Юли 08, 2012 6:12 am ] |
| Заглавие: | Re: Borland C++ builder main loop |
Ами в тия статии пише за treads, ама аз не знаех, че изобщо съществували такива неща. Бая четене ще трябва. Не са ми ясни доста основни неща. Явно тия програми работят по друг начин. Все пак нали може да са запуснати няколко наведнъж, явно че не е както при дос или микроконтролер. |
|
| Автор: | amdatlon [ Нед Юли 08, 2012 1:18 pm ] |
| Заглавие: | Re: Borland C++ builder main loop |
Аа не се притеснявай, никой не се е родил научен На мен също са ми малко мъгла тия нишки, особено ако са повече, и преди да ми се наложи да правя нещо с тях нищо пък не ми говореше. Но нуждата учи. Ако искаш може първо да го направиш едно нишково, т.е. да нямаш нишки ( еднолинейна програма). Пускаш си чакането на данни от ком порта и програмата зависва така. Когато го докараш до работещо приложение ( нищо че "зависва") може да пробваш да го принесеш в друга "нишка". Или с други думи това си изпълнение на две(или повече) отделни програми паралелно. Но ако сега започваш с Windows програмирането , доста ще ти е трудно да се хвърлиш на многозадачността. Започни с простички линейни програми, за да може да свикнеш с начина на действие. |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|