logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

BASCOM - Woltomierz - dziwne wyświetlanie wartości

pawel182 19 Mar 2015 00:07 1665 8
REKLAMA
  • #1 14542276
    pawel182
    Poziom 11  
    Witam;

    Testuje ostatnio wyświetlacz od Nokii 3310/5110
    Do obsługi wyświetlacza używam kodu z tego tematu:

    Link

    W powyższym programie dopisałem prosty program do odczytu napięcia

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Wszystko działa dobrze z małym "ale" tzn po wyświetlonej wartości napięcia pojawia się na czwartym znaku szachownica czyli na miejscu gdzie wcześniej wyświetlam znak jednostki napięcia V.

    Co może być przyczyna pojawiania się tego niechcianego znaku?
    Moderowany przez piotrva:

    Poprawiam syntax -> kod języka Bascom Basic to basic4gl

  • REKLAMA
  • #2 14542365
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • REKLAMA
  • #4 14542922
    pawel182
    Poziom 11  
    niveasoft napisał:
    1. Dim Wart_nap As String * 3
    2. Wart_nap = Fusing(v , "##.&")
    3. Kropka to też znak...


    Faktycznie zapomniałem o kropce. W takim razie znak szachownicy wyswietlany jest na 5 miejscu a nie na 4 jak napisałem na początku
  • REKLAMA
  • Pomocny post
    #5 14542966
    Konto nie istnieje
    Konto nie istnieje  
  • #6 14543500
    pawel182
    Poziom 11  
    niveasoft napisał:
    Pomyśl..Cztery znaki chcesz upchać w trzyznakowym stringu..
    Nie wiesz jak to działa.
    Kiedy deklarujesz String * 10 rezerwujesz 11 bajtów bo każdy string ma znak swojego końca. Nie musisz wykorzystać wszystkich bajtów. String może być krótszy i zaraz po znakach postawiony będzie znak końca..ale zarezerwowałeś 11 bajtów i tam program nigdy nic nie będzie zapisywał. Kolejna zmienna będzie zapisana 12 bajtów dalej.
    Kiedy deklarujesz
    Kod: text
    Zaloguj się, aby zobaczyć kod

    ..to zaraz za zmienną string jest w pamięci następna zmienna.
    Teraz chcesz cztery znaki zmieścić w trzech..
    Jeśli funkcja odczytuje cztery znaki ##.# to może czytać nastepny bajt...
    Po prostu zwieksz deklarowaną długość stringa..

    Do tego to i tak zgadywanka bo nie napisałeś jaki masz mikrokontroler ani jakie są deklaracje dla HW i SW stacks i rozmiar Ramki..


    Mikrokontroler Atmega 32A
    HW - 128
    SW - 128

    OK spróbuje zwiększyc i dam znać.
  • #7 14543588
    Konto nie istnieje
    Konto nie istnieje  
  • #8 14568268
    pawel182
    Poziom 11  
    niveasoft Zwiększyłem długość zmiennej String jak zaszeregowałeś i faktycznie pomogło. Dziękuję.
  • #9 14568360
    Konto nie istnieje
    Konto nie istnieje  
REKLAMA