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] - Konwersja wejść portu na liczbe binarną

levy^ 29 Kwi 2016 07:48 1317 7
REKLAMA
  • #1 15638154
    levy^
    Poziom 17  
    Witam,

    Do wejść Portu mam podłączone 5 odbiorników zbliżeniowych. Odczytują zagłębienia w tarczy kodowej. Niestety nie są one uporządkowane tzn bit0 na tarczy jest przypisany do PORTx.4 a bit1 do PORTx.2 itd
    Próbowałem wcisnąć do zmiennej typu string *6 odczyt z poszczególnych czujników na zasadzie
    I = $bit5; $bit4; $bit3.... a później przekształcić ze stringa do bin funkcja var = Binval( s). Niestety coś idzie nie po mojej myśli i wyskakują dziwne rzeczy
    Wiem jak to zrobić na ifach i dodawać poszczególne bity do siebie ale czy jest jakis szybszy sposób do konwersji stanów całego portu do liczy ?
  • REKLAMA
  • #2 15638238
    Templarious
    Poziom 22  
    levy^ napisał:
    Witam,

    Do wejść Portu mam podłączone 5 odbiorników zbliżeniowych. Odczytują zagłębienia w tarczy kodowej. Niestety nie są one uporządkowane tzn bit0 na tarczy jest przypisany do PORTx.4 a bit1 do PORTx.2 itd
    Próbowałem wcisnąć do zmiennej typu string *6 odczyt z poszczególnych czujników na zasadzie
    I = $bit5; $bit4; $bit3.... a później przekształcić ze stringa do bin funkcja var = Binval( s). Niestety coś idzie nie po mojej myśli i wyskakują dziwne rzeczy
    Wiem jak to zrobić na ifach i dodawać poszczególne bity do siebie ale czy jest jakis szybszy sposób do konwersji stanów całego portu do liczy ?


    zmienna = PORTx
    i pozamiatane.
  • REKLAMA
  • #3 15638276
    ASMnauka_
    Poziom 15  
    Cytat:
    Niestety nie są one uporządkowane tzn bit0 na tarczy jest przypisany do PORTx.4 a bit1 do PORTx.2 itd

    Nie ma to znaczenia.
    Dla przykładu gdy stan wejść całego poru jest równy b00011111 to liczba dla tej wartości binarnej wynosi 248.
    Począwszy od pinu numer 0.
    Czy dla Ciebie istotne są wyłącznie piny np. 4 do 0 ?, czy też piny 7 do 5 są nie używane ?
    W pierwszym przypadku należy użyć maski dla odpowiednich pinów, po czym sprawdzać na których pinach wystąpiła jedynka, lub zero.
    Drugi jest prostszy, wystarczy sprawdzić stan całego portu.

    Cytat:
    a później przekształcić ze stringa do bin funkcja var = Binval( s)


    Na przykład tak :
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod

    W zmiennej B Masz właśnie liczbę w postaci binarnej.

    Cytat:
    czy jest jakis szybszy sposób do konwersji stanów całego portu do liczby

    I tu nasuwa się pytanie.
    Do jakiej liczby w sensie sposobu zapisu ?

    A jeżeli potrzebujesz odwzorować stan portu na innym porcie to np. tak :

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod

    I obyło sie bez zmiennej ;)
  • #4 15638504
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • Pomocny post
    #5 15640105
    Konto nie istnieje
    Poziom 1  
  • Pomocny post
    #6 15640123
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #7 15640285
    kamyczek
    Poziom 38  
    w sumie to się koledzy robi tak czyta się PINx robi się tabelkę z 255 wartościami i czyta się wartość z tabeli z adresu na ,który wskazuje port
    lookup a (DTA)
    DTA 10,15,70,100,250... itd.
  • #8 15645760
    levy^
    Poziom 17  
    Dziękuję wszystkim za zainteresowanie. Odpisuję dopiero teraz, bo byłem poza miejscem zamieszkania. Użytkownik emarcus i niveasoft trafili w sedno. Bardzo dziękuję za rozwiązanie - człowiek całe życie się uczy. Wykorzystam rozwiązanie bez dodawania kolejnej zmiennej bo będzie wywoływane w przerwaniu
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod

    Zapomniałem dodać ze bit 4 jest dodatkowo na porcie pinc.0
REKLAMA