Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Step7 dostęp do dowolnego elementu DB

zolwik_rct 24 Nov 2012 20:14 1605 5
SterControl
  • #1
    zolwik_rct
    Level 11  
    Witam,
    mam nietypowy problem dotyczący dostępu do danych zapisanych w DB.
    Mam stworzoną strukturę z tablicą 70 elementową, w której zapisane mam pozycje na osi liniowej, do których dojechać ma napęd.
    Chciałbym uzyskać dostęp do dowolnego elementu tablicy adresując zmienną po indeksie (np. pozycja 7 to 7 element tablicy) tak, abym mógł podmieniać pozycję zadaną przez wartość z DB.
    Próbuję już trochę czasu, ale nie bardzo wychodzi, chciałem użyć wskaźnika, ale muszę wtedy adresować konkretną komórkę (czyli dla wszystkch pozycji musiałbym stworzyć 70 pointerów)
    Wydaje mi się, że moje rozumowanie jest poprawne, ale chętnie zapoznam się z innym (prawidłowym) podejściem,
    pozdrawiam![/syntax]
  • SterControl
  • #2
    matecki
    Level 13  
    Witam!
    Skąd będzie pochodziła zmienna wymuszająca pobranie pozycji z DB i wpisanie jej do wart. zadanej? To jest jakiś Ineger wpisywany z OP czy zmienna wygenerowana przez program?
    Próbowałeś wykorzystać do tego jump? Nie pamiętam teraz dokładnie bo Stepa mam w firmie ale mogę to spradzić w poniedziałek, ale jest instrukcja podobna do JC z tym że działa na zasadzie IF wygląda to mniej więcej tak:
    //Jump if//*to zmyślona przeze mnie nazwa tej funkcji*// (tutaj adres indeksu z którego ma być pobrana zmienna)
    1: L dbb...... adres pozycji pierwszej
    2: L dbb....adres pozycji drugie
    .
    .
    70: L dbb....i tak do 70 pozycji
    T pozycja zadana
    W ten sposób program skoczy do linii o numerze pobranym z argumentu wywołania instrukcji - w Twoim przypadku będzie to bezpośrednio numer indeksu w DB. Obawiam się że nie da się tego zapisać w skróconej formie typu
    L (adres indeksu w DB)
    T pozycja zadana
    Gdzieś będziesz musiał się nadziubać i te 70 pointerów albo warunków skoku stworzyć niestety.
  • SterControl
  • #3
    zolwik_rct
    Level 11  
    jest to jakis sposob, choc wolalbym bym cos z automatu, na razie bedzie musialo wystarczyc,

    w razie innych sugestii chętnie ich wysłucham,
    pozdrawiam!
  • #4
    ThoronDC
    Level 16  
    Witam

    Użyj adresowanie pośredniego.

    L Indeks
    L P#2.0 //dla Int
    *D
    LAR1
    OPN DB x

    L DBW[AR1,P#0.0]
    T Wynik

    i już
  • Helpful post
    #5
    ElMapet
    Level 20  
    Wskaźnik

    OPN 10 (numer tablicy)
    L MW10 <-- nr pozycji (od 0 do 69)
    SLD 3 <-- stworzenie wskaznika 32bitowego. (3 jeżeli masz dane w DB zapisane co Bajty, 4 co word, 5 co dword)
    LAR1
    L DBD (AR1, P#0.0) (DBD <- 4bajty, DBW 2<-bajty, dbb <-1bajt)
    T #pozycja napędu

    Napisz ile używasz bajtów na 1 element tablicy
  • #6
    zolwik_rct
    Level 11  
    w tablicy sa dinty.
    Dzięki serdeczne, zastosowałem ostatnie rozwiązanie, które jest genialne w swojej prostocie