Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Bootloader AVR - "TOMLOADER"

tehaceole 20 Nov 2010 12:47 27477 97
  • #31
    tehaceole

    Level 28  
    mirekk36 - spróbuj zamiast

    foreach (string portt in porty)
                {
    
                    comboBox1.Items.Add(portt);
                    if (portt.Equals(Properties.Settings.Default.port))
                    { jest = true; }
    
    
                }


    wkleić:

    int liczba_portow = porty.Length;
                do
                {
                    bool inny_cos=false;
                    int pomoc=0;
                    for (int koncowka = 0; koncowka < 10; koncowka++)
                    {
                        if (!(porty[liczba_portow - 1].Substring(porty[liczba_portow - 1].Length - 1, 1).Equals(Convert.ToString(koncowka))))
                        {
                            pomoc++;
                        }
                        if (pomoc == 10)
                        { inny_cos = true; }
                    }
                    if (inny_cos == false)
                    {
                        comboBox1.Items.Add(porty[liczba_portow - 1]);
                        if(porty[liczba_portow - 1] == Properties.Settings.Default.port)
                        { jest = true; }
                    }
                    else
                    {
                        comboBox1.Items.Add(porty[liczba_portow - 1].Substring(0, porty[liczba_portow - 1].Length - 2));
                        if (porty[liczba_portow - 1].Substring(0, porty[liczba_portow - 1].Length - 2) == Properties.Settings.Default.port)
                        { jest = true; }
                    }
                    liczba_portow--;
                }
                while (liczba_portow > 0);
    


    To powinno wyeliminować problem, który zaprezentowałeś. W przeciwnym wypadku zacznę zabawę z rejestrem - tak jak podpowiadał już jeden z Kolegów. Powiedz mi tylko, czy ten problem wygląda tak, że po numerze portu zawsze pojawia się TYLKO JEDNA litera?? Jeżeli jest inaczej to ten kawałek kodu nie pomoże :(



    koval_s - hmm...najprościej będzie chyba jak całkowice zlikwiduję opcję wyskakujących komunikatów :) Sam strasznie denerwuję się używając AVR BurnOMat, że co chwilę jakieś cholerstwo mi wyskakuje. Okienka miałem na początku, jednak w trakcie pisania i tak umieściłem wypisywanie wszystkich danych typu podpowiedzi, informacje o błędach itp w zakładce "Informacje". Co sądzisz o pomyśle usunięcia na stałę wyskakujących okienek?

    koval_s - druga kwestia z tym always on top, nie za bardzo rozumiem co masz na myśli... Aktualnie okienko requestera nie wyskakuje już pod oknem aplikacji - o to chyba chodziło? :) Proszę rozwiń tą myśl.
  • #32
    koval_s
    Level 17  
    No nie do końca, AlwaysOnTop to FormStyle := fsStayOnTop, ale tak jakoś uprościłem z Twojego opisu, gdy wcisnę "ZAPROGRAMUJ", pojawi się OpenDialog, wtedy kliknij na swoją aplikację TOMLOADER i chwyta fokus, można nawet robić cokolwiek się chce, tylko nie da się wywołać drugi raz "ZAPROGRAMUJ", fakt działa tak że jest OpenDialog na wierzchu, ale tylko przez chwilę, nawet gdy klikniemy na inną aplikację (chodzi o jakieś okno), to wtedy znika nam TOMLOADER pod spodem, sam chciałeś żebym Ci wyłożył, tak jak pisałem wcześniej że miałem podobny problem z takim czymś i zrezygnowałem, w sumie w sieci gdy szukałem takiego AlwaysOnTop, to znalazłem coś lepszego, że to faktycznie było prawdziwe AlwaysOnTop, nie wiem gdzie, ale było w sieci, nie szukam i nie wytykam błędów, ale jak widzisz przerabiałem ten problem na sobie, dlatego patrzę z boku co wykombinujesz, aby się uporać z tym problemem, a na moje upierdliwości to nie zwracaj uwagi, co do programu to osobiście w 99.9999999% nie używam SpeedButton'ów, bo mysz nie jest najważniejszym i jedynym urządzeniem na świecie podłączonym do PC, istnieje również klawiatura, na której niektórzy (czytaj koval_s) dużo potrafią zrobić, bez czasami kiepskiej jakości myszy, touchpad, touchscreen, trackball, itp., a klawiatura to przeważnie jest, jak piszę program to ma być dla ludzi lubiących wszystkie urządzenia które da się podłączyć do komputera i sterować nimi, tak jak np. w AVR Studio, nie wiem co za "baran" uważa że programowanie, to należy koniecznie uruchamiać poprzez wskazanie wskaźnikiem i klik, a klawiatura pewnie nie jest potrzebna przy komputerze, bo programy się piszą poprzez wyrażanie myśli, koniec cytatów z mojej głowy, pozdrawiam
  • #33
    tehaceole

    Level 28  
    Po kliknięciu na "Zaprogramuj" ustawiam właściwość enabled tego buttona na false. Button pozostaje w tym stanie tak długo, aż nie zakończy się proces programowania lub nie wystąpi jakiś błąd. Gdybym zostawił go aktywnego, to ktoś mógłby po wczytaniu pliku drugi raz kliknąć ten button a wtedy masz babo placek... Pojawiłby się przynajmniej wyjątek z powodu próby dostępu do portu COM, który jest już w użyciu.

    Jeżeli dobrze zrozumiałem to chodzi Ci o to, że:
    - uruchamiam program
    - wciskam "Zaprogramuj"
    - pojawia się open file dialog a tomloader jest pod nim
    - klikam na jakąś inną aplikację
    - tomloader i open file dialog chowają się pod nią
    - teraz klikam na pasek żeby przywołać tomloadera i pojawia mi się tylko jego okno, bez open file dialog

    Czy dobrze zrozumiałem to co chcesz mi przekazać?

    To może nie jest błąd jednak zgodzę się z Tobą, że może irytować... Bo aby móc ponownie dobrać się do openfiledialog muszę zminimalizować okna pozostałych aplikacji. Chyba o to Ci chodzi tak?
  • #34
    koval_s
    Level 17  
    Tak dokładnie o to chodziło, ale nie będę się znowu pastwił na Tobie, że dajesz Enabled := False, to wiedziałem, bo też daję żeby się nie nałożyły zadania, ale sam jak widzisz z tym "zawsze na wierzchu" są tylko problemy, a nie pożytek, pozdrawiam
  • #35
    mirekk36
    Level 42  
    tehaceole --> na razie mogę na szybko tylko powiedzieć, że takich sztuczek z wycinaniem znaków innych niż cyfra już próbowałem jak i wielu ludzi piszących o tym problemie na forach i techsupporcie MS.

    Ale problem jest gorszy bo spójrz sobie na jeden z moich wcześniejszych screenschot'ów

    w menadżerze urządzeń czy w moim programie Delphi widać że jest np port COM8 , tymczasem te procedury w C# wykrywają COM80 ;)

    Tego już nie skorygujesz w taki sposób niestety.

    I zapewniam cię, że to nie jest odosobnione zjawisko tylko u mnie. Nadal nie mogę znaleźć tych linków do forów gdzie było o tym pisane a wtedy głębiej się tym bawiłem. Proszę bardzo poniżej masz jak wygląda binarny (złapany w DEBUGERZE) odczyt w Delphi dla:

    portu COM1:
    Bootloader AVR - "TOMLOADER"

    a tu dla portu COM8:
    Bootloader AVR - "TOMLOADER"

    zobacz na czym polega różnica zapisu w rejestrze po 3 znakach oznaczających w prawidłowy sposób port , masz

    - dwa bajty o wartości 0 ( w delphi oznaczone jako #0 )

    - jeden bajt o wartości ASCII '1' dla portu COM1 oraz o wartości '8' dla COM8

    ale już dalej w przypadku portu COM1 lecą same zera - i taki zapis jest poprawnie odczytywany przez funkcje konwertujące do Stringa w C#

    natomiast dla portu COM8 potem jeszcze się coś pojawia i to wprawia biednego C# w obłęd ;) dlatego przy takich portach dodaje albo cyfry ASCII albo jakieś ptaszki bo nie zawsze jest to bajt ASCII '0'

    I pomyśl sobie to wszystko do rejestru zapisują oryginalne drivery Microsoftu a odczyty też są przecież robione przez C# ze stajni Microsoftu - a ŹLE TO DZIAŁA niestety. I dlatego jak pisałem dotarłem kiedyś na jakimś forum techsupportu MS do obietnic , że to naprawią - a problem był zgłaszany jeszcze gdy był tylko .NET 2.0 ....... o wersji .NET 3.x jeszcze się wtedy nie śniło.

    Jednak MS olał tę sprawę uznając chyba, że rzadko komu jest to w C# aż tak koniecznie niezbędne. I dlatego ludzie programujący w C# radzą sobie jakoś bardzo na okrętkę ale jak ??? nie wiem.

    U mnie w Delphi bardzo ładnie to działa bo pierwsze napotkane zero po nazwie z numerem portu traktowane jest wyraźnie jako koniec Stringu. Dlatego bezbłędnie pokazywane są porty.

    Wiem, wiem - to niby problem typu drobiazg - ale jednak pomyśl jak to umniejsza/pomniejsza uniwersalność takich rozwiązań jakie próbujesz ty czy ktoś tam zrobić na bazie tych funkcji w C#
  • #36
    tehaceole

    Level 28  
    Nadejszla wekopomna chfyla... Do zassania świeża wersja programu. Pliki umieściłem w pierwszym poście tego tematu.

    mirekk36 - aktualnie porty odczytywane są już bezpośrednio z rejestru

    koval_s - problem, który mi wytknąłeś udało się rozwiązać. Okazało się to łatwiejsze niż sądziłem. Wystarczyło w ShowDialog podać nazwę "właściciela" czyli okna z którego filedialog zostaje wywołany. Trochę trzeba było pokombinować, żeby uniknąc CrossThreadException, ale udało się :) Dokładne informacje w komentarzach do kodu.



    Ponadto usunąłem już całkowicie opcję wyskakujących okienek.

    Program można obsługiwać przy pomocy klawiatury:

    i - informacje
    h - HEX
    p - postęp
    o - opcje
    enter - zaprogramuj
    spacja - ok

    Funckja obsługi z klawiatury wymaga jeszcze dopracowania, jednak na chwilę obecną powinna co poniektórych Kolegów choćby odrobinę zadowolić. Dziś już się tym nie będę bawić bo powoli kobitka zaczyna mi się buntować... :) hehehe
  • #37
    mirekk36
    Level 42  
    tehaceole wrote:
    Dziś już się tym nie będę bawić bo powoli kobitka zaczyna mi się buntować... :) hehehe


    Nieee, no kobitka musi mieć zawsze najwyższy priorytet przerwań i być obsłużona na samym początku to zrozumiałe ;)

    Ale odnośnie poprawki odczytu portów to hmmm chyba coś nie wyszło? albo może źle się skompilowało bo jest tak samo?

    Dla porównania widok w menadżerze portów COM, widok w twoim programie i ten sam widok w programie Delphi:

    Bootloader AVR - "TOMLOADER"
  • #38
    tehaceole

    Level 28  
    What da f...?? Mirekk36 wejdź do rejestru pod klucz [HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM] i sprawdź jak wyglądają nazwy portów bezpośrednio tam... U mnie poprawnie wykrywa wszystkie porty. Poniżej eksport klucza:
     Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM]
    "\\Device\\porte6"="COM6"
    "\\Device\\porte7"="COM7"
    "\\Device\\porte10"="COM10"
    "\\Device\\porte11"="COM11"
    "\\Device\\porte12"="COM12"
    "\\Device\\porte13"="COM13"
    "\\Device\\porte14"="COM14"
    "\\Device\\porte20"="COM20"
    "\\Device\\porte21"="COM21"
    "\\Device\\QCUSB_COM9_3"="COM9"
    "\\Device\\QCUSB_COM15_4"="COM15"
    "\\Device\\QCUSB_COM5_1"="COM5"
    "\\Device\\QCUSB_COM8_2"="COM8"
    "\\Device\\Serial2"="COM1"


    Oraz to samo ale w regedit:
    Bootloader AVR - "TOMLOADER"

    U mnie BT jest wbudowany w lapka. Hmm... W poniedziałek w robocie będę miał dostęp do kilku przejściówek USB/RS i wtedy sprawdzę jak to wygląda na moim sprzęcie. Widzisz... u mnie problem nie występuje bo mój konwerter expresscard/Rs jest w zasadzie widziany jako sprzęt a nie jakieś wirtualne nie wiadomo co.


    Mam też inną tezę... Mój programik jest poprostu tak sprytny, że oznacza literką "w" porty wirtualne... heheheh taki mały żarcik sytuacyjny :)
  • #39
    mirekk36
    Level 42  
    ależ oczywiście, że w [HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM] są widoczne tak jak je pokazałeś na obrazku. Mówię ci, spróbuj jakoś (bo nie wiem jak to jakoś zrobić w C#) binarnie odczytać zawartość tych kluczy to się wtedy właśnie zdziwisz. Te wpisy są wielobajtowe, tak jak pokazywałem na zrzutach ekranu z Debugera Delphi wcześniej.

    Ale z drugiej strony może i nie musisz się tak martwić bo z tego co kopałem w necie to takie przypadki zapisu portów w rejestrze zdarzają się ludziom tylko w przypadkach przejściówek USB/Bluetooth

    Jeśli zaś chodzi o inne przejściówki USB/RS232 to zwykle jest ok i ja jestem przekonany że wtedy twój program sobie z nimi poradzi. Dlatego tylko mówiłem, że ten problem mnie powstrzymał przed pisaniem programów w C# jak narazie :(

    A z tą literką "w" - wirtual port ;) hyhyhy no fajne fajne chociaż aż za bardzo się zwirtualizowały skoro COM8 potrafi się zamienić w COM80w ;)
  • #40
    tehaceole

    Level 28  
    hmmm..... dziwi mnie to... Kurcze żebym miał teraz jakiś BT do testów... Bo tak to trochę po omacku działam :(
  • #41
    mirekk36
    Level 42  
    a masz w ogóle jakąś windę7 ?? czy Vistę do tego? - bo jak pisałem na XP działa OK ;)

    Z drugiej strony może skoro MS olał tę poprawkę w C# to może jednak niewiele jest takich przypadków na świecie - zatem i ty może nie musisz się przejmować tak brdzo.

    W końcu słusznie zrobiłeś możliwość wpisania nazwy portu COM ot tak z ręki .... więc nie przejmuj się aż tak. W końcu ktoś kto chciałby używać czegoś takiego jak bootloader przez BT to już musi wiedzieć jak sprawdzić sobie w systemie numerek wirtualnego portu COM ;)
  • #42
    tehaceole

    Level 28  
    Jestem wierny staremu poczciwemu XP z SP2 :) Vistę miałem 3 dni... Całe 3 dni za długo! A co do 7-ki... Bawiłem się nią u paru osób więc znam tylko pobieżnie. Jednak jakoś nie uśmiecha mi się perpsektywa dostawiania do mojego sprzętu dodatkowych 2GB ramu tylko po to żeby móc cieszyć się ładniejszymi okienkami. Cóż... Temat rzeka... Jak już skomercjalizuję swojądziałalność programistyczną to będę musiał się borykać z tymi problemami :/
  • #43
    mirekk36
    Level 42  
    tehaceole wrote:
    Jak już skomercjalizuję swojądziałalność programistyczną to będę musiał się borykać z tymi problemami :/


    ooooj taaak ;)

    A tak nawiasem mówiąc Vista to była taka sama pomyłka genetyczna MS jak kiedyś Windows Milenium ;)

    Ale już Win7 to nie przelewki i pomimo, że na pierwszy rzut oka wygląda łudząco podobnie do Visty to już całkiem nie to samo. Sam kiedyś zobaczysz ;) chociaz im szybciej tym lepiej.

    Mocno się różni i zapomnij o takich durnych wymaganiach sprzętu jakie miała Vista. Garantuję ci że na tym samym sprzęcie co masz teraz XP pójdzie spokojnie Win7 ;) .... ale zanim sobie zmienisz system nawet tak na próbę to zrób najpierw na starym poczciwym XP pomiar ile czasu będzie ci się kopiował z dysku na dysk jakiś folder o pojemności ze 2-3GB albo i więcej.

    Potem to samo na tym samym sprzęcie przeciez tylko już pod Win7 ..... czyli skopiuj ten sam folder z dysku na dysk. AHA - tylko uważaj bo przy XP to będziesz miał czas wypić sporo kawy zanim TO się stanie ;) .... a mam nadzieję że będzie duży szok gdy zobaczysz że nie zachłyśniesz się dobrze kawą a Win7 już pozamiata ;) ... no może troszkę przejaskrawiam - ale daję głowę że będziesz w szoku. To tyle tytułem przedsmaku jeśli chodzi o Win7 .... nie będę wspominał o innych fiuczersach - a ty będziesz później tylko żałował że tak późno wziąłeś się za Win7

    Sorki za oftopic ;) ale Vista i Win7 to dwa różne światy trzeba tylko chcieć poznać różnice.
  • #44
    tehaceole

    Level 28  
    Z ciekawości przejdę się po licencję na uczelnię:)

    Mirekk36 - przespałem się z problemem i coś mi przyszło do głowy. Nigdy nie programowałem w Delphi więc tu pytanie do Ciebie: czy Delphi korzysta z win API do obsługi serial port? Bo w C# stosuję kontrolkę dostarczaną w NET. Jak widać nawet samodzielne napisanie procedury odczytującej nazwy portów bezpośrednio z rejestru nie przyniosło poprawy. Więc jedyne co pozostaje to spróbować wykorzystać win API.
  • #45
    tehaceole

    Level 28  
    W pierwszym poście dostępna najświeższa wersja programu.
    Zmiany:
    - angielska wersja opisów (język do wyboru: polski/angielski)
    - "pomoc" w której ujęta jest instrukcja obsługi z opisem skrótów klawiszowych

    Mam prośbę do osób bardziej cykniętych w angielskim technicznym ode mnie o sprawdzenie tłumaczenia programu.

    Czy ktoś wie jak w komponencie webbrowser uzyskać polskie znaki?
  • #47
    MichałKob
    Level 20  
    Napotkałem jakiś błąd przy próbie uruchomienia TOMLOADER'a:
    Bootloader AVR - "TOMLOADER"
    System to Windows XP SP3, .NET 3.5 SP1.
    Być może błąd jest spowodowany tym, że nie mam w tym momencie w systemie żadnego portu COM - w takim razie można dorobić prostą funkcję, która by o tym informowała.
    Chwała Ci za politykę wolnego oprogramowania!
  • #48
    Krzysiek007
    Level 20  
    Witam.
    Którego bina wgrać do atmega324p ? bo są tam 3 biny, czy chodzi o p10- Boot loader.bin ??
    Pytam bo szkoda by uwalić procka.
  • #49
    J_Bravo
    Level 27  
    tehaceole wrote:
    Po naciskach Kolegów, zmuszony jestem do zaprzestania publikacji kodu źródłowego dla aplikacji na PC. Logiczne argumenty Kolegów przemawiają za tym, aby udostępniać jedynie kod wsadu dla mikrokontrolera
    Pochwalisz się jakie to argumenty? Co przemawia za tym żeby nie udostępniać programów?
  • #50
    tehaceole

    Level 28  
    Koledzy.... kilka dni temu w tym temacie wywiązała się dyskusja w której nazwano mnie "ekshibicjonistą", który "ma parcie na szkło" i ogólnie "szuka tu dowartościowania". Wobec tego typu komentarzy (plus kilka mniej obraźliwych, ale jednoznacznie dających do zrozumienia pewne kwestie - to właśnie te "logiczne argumenty") postanowiłem, że jednak nie udostępnię tu kodu. W myśl starego powiedzenia "pocałujta wujta w hu...". Jeszcze się taki nie urodził, który by każdemu dogodził... Chciałem podzielić się z Kolegami swoim opracowaniem na zasadzie "kod opensource" - stwórzmy razem coś zajefajnego. W zamian zostałem zjechany jak jakaś za przeproszeniem szmata.

    J_Bravo - trochę żałuję, że jeden z moderatorów usunął wszystkie wpisy z tej dyskusji. Wtedy Koledzy mieliby pogląd o czym mówię.

    Jeżeli kogoś interesują źródła to zapraszam na PW.



    Krzysiek007 - te biny to pozostałości z oryginalnego projektu plus 2 programy testowe. Jestem autorem modyfikacji kodu po stronie mikrokontrolera, a nie autorem całego tego kodu. Ponieważ właściwym autorem jest Pan Rafał Baranowski, postanowiłem zamieścić całość Jego projektu. Ciebie te biny wogóle nie interesują. Wgrywasz plik HEX, który tam jest. Masz 2 przykładowe projekty: dla Mega 16 i Mega 32, obydwa generują ten sam plik HEX.
    Poza tym dlaczego miałby uwalić procka wsadem??? Uwalić możesz go poprzez złe ustawienie fuse bitów a nie wsadem :)

    MichałKob - jeżeli możesz to wrzuć mi screena z zakładką "opcje". Teoria mówi, że w liście "port" powinien pojawić się napis "Wybierz port". Popracuję nad tym. Szczerze powiem, że z takim wyjątkiem w TOMLOADERze się jeszcze nie spotkałem.

    MichałKob - powinno być już dobrze. W momencie wystąpienia tego wyjątku w zakładce "informacje" pojawi się tekst "brak portów COM w systemie". Zassij świeża werjsę programu z pierwszego postu.
  • #51
    J_Bravo
    Level 27  
    tehaceole: posty o których piszesz znalazłem w koszu. Załamać się można. Poziom wypowiedzi i kultura wypowiedzi naprawdę niska. Tylko żeby przez jednego człowieczka kasować ciekawy kod? Troszkę szkoda.
  • #52
    tehaceole

    Level 28  
    J_Bravo - jeżeli ktoś zwróci się do mnie na PW o pomoc w kwestii Bootloadera to w miarę wiedzy i możliwości postaram się takiej osobie doradzić. Dotyczy to także kodów.

    Człowiek chciał dobrze i bezinteresownie, ale zawsze znajdzie się jakiś... Aż brak mi słów... Po czymś takim odechciewa się dalszych prac. Ale nie po to tu jesteśmy żeby się użalać :)

    Czy ktoś z Kolegów sprawdzał moje anglojęzyczne wypociny w tłumaczeniu programu? Czy poza wyjątkiem opisanym przez Kolegę MichałKob (już poprawiony) nie wystąpiły jakieś inne?
  • #53
    koval_s
    Level 17  
    To znowu ja, będę się pastwił, ale skoro testować to testować, a nie udawać: po wybraniu "ZAPROGRAMUJ" i wybraniu pliku "xxxxxxx.HEX", wyświetla się drugi przycisk "OK - wciśnij po restatrcie!", to wciskam ten przycisk, jest wtedy wszystko dobrze, ale gdy przerwię operację poprzez wciśnięcie "Esc", to już koniec działania programu, tzn. już nigdy w życiu nie zobaczymy przycisku "OK - wciśnij po restatrcie!", jako ciekawostkę podam fakt iż pewnie pętla oczekiwania na wciśnięcie w/w przycisku jest pętlą programową, bo na 2 rdzenie które posiadam w swoim PC, to jeden robi tylko na tą pętlę, a drugi już musi obsługiwać cały system, skoro zabrałeś źródła, to nikt oprócz Ciebie nie wskaże błędu, ani nie skoryguje, wiem że to temat rzeka, skoro "ktoś" uważa że nie powinien oglądać źródeł, to niech nie ogląda, to tak jak z dopalaczami, czy "ktoś" "kogoś" zmusza do używania, to nie dopalacze są złe, tylko dopalający się są źli, wódka i papierosy też są złe, więc czemu ich nie zakaże się sprzedaży, wracając do tematu, to blokujesz pewnie port COMx, bo kolejna kopia programu też już nie pomaga, a na dodatek nie da się otworzyć na tym samym porcie, na innym idzie, lecz gdy przerwię znowu "Esc", to na moje dwa rdzenie już systemowi brakuje mocy na obsługę, pozdrawiam i miłego walczenia z wiatrakami życzę autorowi
  • #54
    krzysiek1959
    User under supervision
    Mam ten sam błąd co kolega MichałKob mimo że dzisiaj pobrałem nowy plik
  • #55
    tehaceole

    Level 28  
    krzysiek1959 - czy w oknie "informacje" pojawia się komunikat o wystąpieniu wyjątku i tekst" "brak portów COM w systemie" czy pojawia się dokładnie taki sam komunikat jak u Kolegi MichałKob?? Wrzuć screen jeśli możesz.

    Dodano po 2 [godziny] 19 [minuty]:

    Narazie udało mi się rozwiązać problem polskich znaków e helpie do Tomloader'a. Inne wskazane błędy postaram się usunąć w weekend. Narazie czas mi na to zbytnio nie pozwala :(
  • #56
    mirekk36
    Level 42  
    Przyszedł czas, mała chwilka odprężenia - więc wziąłem się za przetestowanie ;) pomijając już te wszystkie wcześniejsze zgłoszenia problemów z wykrywaniem portów COM...

    OK....

    1. skompilowałem kod bootloadera dla ATmega32 dla częstotliwości 8MHz i prędkości 9600

    2. ustawiłem prawidłowo fuski

    3. wgrałem BLS do procka

    odpaliłem program na PC

    i tu w takim razie kilka uwag do interfejsu - oczywiście nie po to żeby krytykować a sam mogę sobie poprawić - bo przecież ja swój program mam. Chciałem tylko zwrócić uwagę na podejście w niektórych momentach, które powoduje, że interfejs użytkownika jest hmmm bardzo mało intuicyjny i wręcz może wprowadzać w zakłopotanie a szczególnie w połączeniu z brakiem obsługi pewnych zdarzeń krytycznych czy błędów niestety. Może uda ci się zmienić nieco podejście i poprawić swój program.

    1. Przede wszystkim warto rozdzielić (moim zdaniem oczywiście) moment wczytania pliku od momentu rozpoczęcia samego procesu programowania. Ty zrobiłeś to pod jednym klawiszem "ZAPROGRAMUJ" co powoduje, że z marszu sam od razu musiałeś poświęcić oddzielną zakładkę w programie na wyjaśnienia tego co nie jest domyślne i intuicyjne. Czyli WCZYTAJ i ZAPROGRAMUJ. Dodatkowo instrukcja w zakładce napisana jest TAK małymi literkami, że najpierw uwierz mi trafiłem jako niegramotny użytkownik aż do HELPA pod znaczkiem zapytania zanim doczytałem ten mikro tekst w pierwszej zakładce "informacje" - tak się nie robi raczej

    2. Zakładka Opcje powinna się raczej nazywać Ustawienia, a w opcjach to można ptaszka z wyborem języka umieścić. Z drugiej strony ustawień jest tak mało (Tylko jeden port COM) ... ale właśnie zaraz zaraz - a prędkość ??? program na PC sam się dostosowuje do prędkości z uC ??? czy MUSZĘ ją ustawić na 57600 ??? na siłę ?? jeśli tak to lekka masakra bo np dla częstotliwości procka 8MHz to jest ZONK ! A nawet jeśli się sam program dostosowuje do prędkości to powinno to być jasno opisany fiuczer tak jak opisałeś np ustawienia fusebitów

    3. Ok teraz dziwne i w ogóle nieprzewidziane zachowania przycisków gdy przystępuję do programowania. Klikam zaprogramuj i pojawia mi się możliwość wyboru pliku. Dobrze. Po jego wybraniu znika opcja zaprogramuj tzn jest niedostępna, zatem jeśli wczytałem przez pomyłkę nie ten plik to MEGA ZONK, muszę jak to się ładnie mówi "WYJŚĆ i WEJŚĆ" ;) żeby znowu wczytać głupi plik ???? patrz uwagi wyżej w pkt.1

    4. Dobrze klikam nowo pojawiający się klawisz "OK - wciśnij po restarcie!" ..... hmmm wykrzyknik sugeruje że powinienem to zrobić JAK NAJSZYBCIEJ to możliwe! ale .... dla Matrixa najszybciej może oznaczać że on zdąży to zrobić (kliknąć reset i ten klawisz w ciągu kilku us) .... ale ja mniej gramotny user potrzebuję na to może aż kilka sekund bo mi łapki się trzęsą i muszę w spokoju ... więc co ??? kto ma większe szanse Matrix czy ja ? i nawet nie ważne kto ma - żadna informacja w programie nie rozstrzyga tego dylematu - w ogóle nie wiadomo jaki jest czas opóźnienia i kiedy ewentualnie on upłynął (jakiś timeout)

    Zatem skoro używam Windows7 to pasek "podstępu" który jest poniżej cały czas tak samo miga albo inaczej mówiąc cały czas przepływa przez niego zielony pasek od lewej do prawej i nic się nie DZIEJE !!! poza tym że pokazał się napisz "Łączenie" który chyba robi mnie w konia ;) tak podejrzewam - gdyż czekam i czekam i NIC! ... ani możliwości PRZERWANIA tego procesu! Ani możliwości czytania nowego PLIKU! ani żadnego komunikatu że coś jest "nieteges" i czas minął - po którym mógłby się odblokować chociaż klawisz i jakiś komunikat mi się przed oczami pojawić, że "Przykro mi ale czas minął i operacja się nie powiodła" a jeszcze większe szczęście by było gdyby komunikat w przeciwieństwie do komunikatów o błędach z MS Win, potrafił zasugerować jaka przyczyna niepowodzenia ;)

    Nie wspomnę już że dla mnie ze słabszym wzrokiem widok w zakładce HEX po wczytaniu pliku to istny HARDCORE bo w zasadzie to NIC nie widzę i nic mi to nie mówi, w ogóle ciężko cokolwiek zobaczyć w tak MIKRO małym okienku. Zatem sam widok pliku HEX bo przecież bywa przydatny to mógłby się pojawiać w oddzielnym większym oknie i ładnie sformatowany - jeśli zaznaczyłbym w opcjach że tego sobie w ogóle życzę. Dzięki temu miałbyś dodatkową opcję a także mniej zbędnych zakładek w programie dzięki w swojej kompaktowej obudowie zyskałby na czytelności.

    Co do ostatniej zakładki "Podstęp" się nie wypowiem bo nie było mi dane zobaczyć jej w działaniu.

    ale za chwilę podłączę sobie kwarc 11.0592MHz i odpalę BLS'a na 57600 - zobaczę czy wtedy coś pójdzie dalej

    to na razie tyle i mam nadzieję, że uwagi się przydadzą na przyszłość odnośnie tworzenia bardziej intuicyjnego interfejsu użytkownika.

    Dodano po 14 [minuty]:

    oooo MATKO z córką ! ;)

    a teraz UDAŁO mi się uzyskać jakiś BŁĄD!!!

    ale wyłuskanie go z tego MIKRO MIKRO OKIENKA to już na prawdę graniczy z CUDEM. Pomimo to udało mi się go skopiować i tu wklejam:

    ...... gaaaaat DEMIT !!! SZOK !!!! tzn chciałem wkleić ale to jest IMPOSSIBLE. Udało mi się wprawdzie zaznaczyć go w końcu myszką w tym mikro okienku ale spróbuj go człowieku skopiować czy to za pomocą prawego klawisza myszki i opcji "kopiuj" czy za pomocą skrótu "CTRL C" - TO NIEMOŻLIWE a jednocześnie niestety przykro to powiedzieć ale totalnie bez sensu.

    A już sam błąd jest IŚCIE w stylu BLUE SCREENÓW Microsoftu - czyli dla zwyłkego śmiertelnika NIC ale to NIC nie oznacza. Przytoczę zatem metodą kamienia łupanego przepisując z ekranu i korzystając z fiuczeru że program jest zawsze ON_TOP ;) co się w takim przypadku akurat przydało.

    * Błąd: System. ArgumentOutOfRangeException: Indeks i długość muszą odwoływać się do lokalizacji w ciągu. Nazwa parametru: length w System.String.InternalSubStringWitchChecks(Int32 startIndex, Int32 length, Boolean ... dalej już nie będę pisał bo to udręka i rozumiem że oznacza nazwę funkcji w jakiej powstał błąd - i niestety tak najczęściej początkujący programiści wywalają błędy.... traktując użytkownika jako programistę ;) .... TAK SIĘ NIE ROBI ....

    Nie mniej jednak odblokował się klawisz zaprogramuj - wybrałem inny plik i to samo - tyle że znowu łączenie i brak komunikatu

    Niestety takie działanie programu wyeliminowałoby go automatycznie nawet z rynku Open-Source :(

    Dodano po 1 [minuty]:

    Ja nie mam już siły dalej testować nawet - ale może mam jakieś stare wersje programów z tego pierwszego postu .... a jak mówię, testuję tylko dlatego że chciałem pomóc i zwrócić uwagę na ew inne niedociągnięcia , które warto poprawić robiąc taki program nawet w wersji otwartej. Dlatego podpowiadałem jak się nie powinno robić oraz proponowałem ew rozwiązania natury ogólnej oczywiście
  • #57
    tehaceole

    Level 28  
    mirekk36 - nareszcie ktoś się konkretnie wypowiedział. Dziękuję za porządny "crash test". Jak tylko będę miał wolną chwilę w weekend to postaram się wszystko dopracować.

    Co do prędkości: mam ją ustawioną na sztywno na 57600. Może dlatego, że sam zawsze podpinam kwarc do uC.
  • #58
    mirekk36
    Level 42  
    Jeszcze jedno:

    tehaceole wrote:
    Co do prędkości: mam ją ustawioną na sztywno na 57600. Może dlatego, że sam zawsze podpinam kwarc do uC.

    Korzystanie z kwarca zwen. nie ma nic do rzeczy. Przy taktowaniu 8MHz prędkości popularne prędkości: 9600, 19200, a nawet 38400 MUSZĄ i zawsze działają bardzo dobrze przy wewn. oscylatorze. Więc weź i to pod uwagę.

    Prędkość 9600 to w ogóle podstawa i jeśli nie ma jej w opcjach i możliwościach to od razu z marszu skazujesz swój program na margines.
  • #59
    tehaceole

    Level 28  
    mirekk36 - hmmm.... Założenie moje było takie, że użytkownikiem programu ma być Kowalski, a nie inż. Kowalski znający się na programowaniu itp. Zatem: pojawiają się komunikaty i Kowalski jak małpka postępuje zgodnie z nimi. Przy tak minimalistycznym oknie programu umieszczenie większej ilości buttonów jest awykonalne. Chyba, że umieszczone byłyby jeden na drugim i aktywowane w zależności od tego jak daleko "zabrnął" delikwent.

    ad.2) to, że ja używam 57600 nie znaczy wcale że wszyscy będą korzystać z takiej prędkości. Słuszna uwaga Kolegi. Poprawiam.

    ad. 3) poprawiłem już ten błąd, który blokował mi port jeśli programowanie zostało przerwane. Mowa o wciśnięciu klawisza ESC. Dodam też klawisz "anuluj" dla mniej gramotnych użytkowników :P

    ad. 4) Tak, ten wykrzyknik sugeruje aby dłoń Kowalskiego była zbliżona do prędkości ruchów Neo z Matrixa :) hehe a na poważnie: "wciśnij PO restarcie" oznacza dokładnie tyle, że po zrestartowaniu mikrokontrolera możemy podjąć próbę nawiązania połączenia z nim. Po restarcie program bootloadera w procku przez ok 1,5 sek wysyła znak zachęty "?". Jeżeli w tym czasie nie otrzyma z PCta sekwencji "pr" to przechodzi do normalnej pracy.

    Pasek "podstępu" to moja futurystyczna wizja użycia progressbara :) Rzeczywiście te ciągłe przesuwanie się paska, które miało być ozdobą, może wprowadzić Kowalskiego w błąd.

    A teraz kwestia z komunikatem "łączenie". Jeszcze przed opublikowaniem TOMLOADER'a zauważyłem, że CZASAMI program jakby zawieszał mi się w tym stanie. Wygląda to tak, jakby wątek w którym umieszczona jest procedura programowania zostawał nagle przerwany bez jakiegokolwiek poinformowania mnie o tym. Zupełnie nie rozumiem czemu tak się dzieje :( Oczywiście wtedy layout aplikacji również pozostaje w takim stanie. Spróbuję to obejśc przy pomocy dodatkowego timera, który "zresetuje" mi okno po upływie np. 10 sek. Ta przypadłość występuje sporadycznie ZAWSZE w tym samym miejscu procedury.

    Co do wielkości znaków w zakładkach... Tak przyzwyczaiłem się do rozdzielczości 1280x800 w swoim laptopie, że wogóle pod uwagę nie wziąłem wyższych rozdzielczości. Hmm... Nie za bardzo wiem co z tym zrobić. Dla większej czcionki musiałbym zwiększyć rozmiary okna aplikacji (tego chcę uniknąć), aby poszczególne linie tekstu mieściły się w całości w jednej lini textboxów. Jakiej rozdzielczości używasz?

    Dodam także możliwość kopiowania do schowka z okienek :) Coby Kolega nie musiał już dzielnie stawiać czoła krzaczkopodobnym komunikatom o błędach w ciele funkcji :)
  • #60
    koval_s
    Level 17  
    Teraz z mojej beczki, fakt braku możliwości kopiowania z zakładki "HEX"(w sumie to z żadnej się nie da skopiować jak kolega mirekk36 doświadczył), też mnie nurtował, ale nie chciałem dokładać kolejnego gwoździa do trumny, żeby autor nie padł na przedbiegach, ja zaobserwowałem jeszcze ciekawszy moment, aby powiększyć czcionkę w zakładce "HEX", to należy przerwać (jak opisywałem we wcześniejszym poście) operację zaprogramowania poprzez wciśnięcie Esc po wybraniu już pliku *.HEX i wtedy czcionka w omawianej zakładce jest już przyzwoitej wielkości, to byłoby na tyle z tej beczki, pozdrawiam...