Mam pętlę, w której występuje polecenie WAIT.
Problem w tym, że za każdym kolejnym przebiegiem czas WAIT w pętli ma być inny i zgodny z kolejnymi wartościami zapisanymi wcześniej w pliku tekstowym. Przykładowy plik może wyglądać np. tak:
1
5
11
20
60
gdzie liczby oznaczają czasy wyrażone w sekundach.
Jak pożenić czasy podane w pliku z poleceniem WAIT występującym w pętli?
Pętla ma się kończyć w momencie wykorzystania wszystkich zadeklarowanych w pliku czasów!
Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięwczytanie czasów dla polecenia WAIT z pliku tekstowego
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
dim a as byte ' jakas zmiennaMam pętlę, w której występuje polecenie WAIT.
Problem w tym, że za każdym kolejnym przebiegiem czas WAIT w pętli ma być inny i zgodny z kolejnymi wartościami zapisanymi wcześniej w pliku tekstowym. Przykładowy plik może wyglądać np. tak:
1
5
11
20
60
gdzie liczby oznaczają czasy wyrażone w sekundach.
Jak pożenić czasy podane w pliku z poleceniem WAIT występującym w pętli?
Pętla ma się kończyć w momencie wykorzystania wszystkich zadeklarowanych w pliku czasów!
a = 1 ' jej jakas wartosc
' odczytujemy sobie to co masz w pliku textowym .. nie wiem w epromie na i2c
do 'petla
cus 'cos robi
wait 1 'czeka
a = a+1 ' zwiekszamy zmienna o 1 ..mozna zapisac to bardziej elegancko
loop until a = b ' tak dlugo "pozeniaj te czasy" az a zwiekszy sie do wczesnej odczytaqnego b z pliku textowego z pamieci eprom czy czego tam..
Chyba prościej się nie da.
$baud=9600 ' Ustaw sobie taki jaki chcesz
Dim Odbierz as String * 4
Dim Czas as Byte
'Pętla główna
Do
Print "Podaj" ' Wysyła do PC prośbę o nową wartość. Oczywiście musi być program, który na to zareaguje.
Input Odbierz
Czas=Val(Odbierz)
Wait Czas
Loop
To jest program liniowy.
Jeśli chcesz w dowolnym momencie poprosić PC o nową zmienną, wykorzystaj polecenie
Ischarwaiting() i zastosuj jakieś flagi po to, aby program za każdym razem nie wysylał zapytania do komputera. W przypadku który podałem program nie przejdzie dalej, dopóki nie otrzyma odpowiedzi z PC. Chyba, że zastosujesz timeout dla RS.
Jeśli chcesz jakiś program na PC z tym współpracujący, to daj znać.
Napiszę Ci go.
Raf
$baud=9600 ' Ustaw sobie taki jaki chcesz
Dim Odbierz as String * 4
Dim Czas as Byte
'Pętla główna
Do
Print "Podaj" ' Wysyła do PC prośbę o nową wartość. Oczywiście musi być program, który na to zareaguje.
Input Odbierz
Czas=Val(Odbierz)
Wait Czas
Loop
To jest program liniowy.
Jeśli chcesz w dowolnym momencie poprosić PC o nową zmienną, wykorzystaj polecenie
Ischarwaiting() i zastosuj jakieś flagi po to, aby program za każdym razem nie wysylał zapytania do komputera. W przypadku który podałem program nie przejdzie dalej, dopóki nie otrzyma odpowiedzi z PC. Chyba, że zastosujesz timeout dla RS.
Jeśli chcesz jakiś program na PC z tym współpracujący, to daj znać.
Napiszę Ci go.
Raf
-------------------------------------
DZIĘKI Raf za konkret !!!
-------------------------------------
Wykorzystując Twoją propozycję mam obecnie działającą poniższą wersję:
$baud = 2400
Dim Odbierz As String * 5
Dim Czas As Integer
Do
Print : Print "Podaj aktualna wartosc czasu w [ms]:" : Input Odbierz
Czas = Val(odbierz)
Print "Wartosc wprowadzego czasu wynosi: " ; Czas ; " ms."
Cls
Lcd "Biezacy czas to:"
Lowerline
Lcd Czas ; " ms"
Waitms Czas
Sound Portd.5 , 1 , 25000
Loop Until Czas = 0
Cls
Lcd "Koniec czytania!" 'wyświetl na LCD
Print : Print
Print "Koniec czytania!" 'wyświetl w oknie Hyperterminala
End
120
320
555
1112
3470
... itd.
(Wszystkich wierszy byłoby powiedzmy 20 a każda liczba w wierszu to Czas w ms).
Czy jest sensowny sposób na przesłanie takiego pliku Hyperterminalem, tak aby następnie liczby z kolejnych wierszy były w kolejnych przebiegach pętli podstawiane ostatecznie do zmiennej Czas? A może Hyperterminal nie jest najszczęśliwszym rozwiązaniem w tym przypadku?
DZIĘKI Raf za konkret !!!
-------------------------------------
Wykorzystując Twoją propozycję mam obecnie działającą poniższą wersję:
$baud = 2400
Dim Odbierz As String * 5
Dim Czas As Integer
Do
Print : Print "Podaj aktualna wartosc czasu w [ms]:" : Input Odbierz
Czas = Val(odbierz)
Print "Wartosc wprowadzego czasu wynosi: " ; Czas ; " ms."
Cls
Lcd "Biezacy czas to:"
Lowerline
Lcd Czas ; " ms"
Waitms Czas
Sound Portd.5 , 1 , 25000
Loop Until Czas = 0
Cls
Lcd "Koniec czytania!" 'wyświetl na LCD
Print : Print
Print "Koniec czytania!" 'wyświetl w oknie Hyperterminala
End
Na razie wysyłałem znaki z klawiatury PC-ta za pomocą Hyperternimala. Ostatecznie Hyperterminalem chciałbym wysłać cały plik tekstowy, w którym znajdować się będą koleje wartości dla zmiennej Czas. Plik tekstowy miałby np. taką zawartość:Jeśli chcesz jakiś program na PC z tym współpracujący, to daj znać.
120
320
555
1112
3470
... itd.
(Wszystkich wierszy byłoby powiedzmy 20 a każda liczba w wierszu to Czas w ms).
Czy jest sensowny sposób na przesłanie takiego pliku Hyperterminalem, tak aby następnie liczby z kolejnych wierszy były w kolejnych przebiegach pętli podstawiane ostatecznie do zmiennej Czas? A może Hyperterminal nie jest najszczęśliwszym rozwiązaniem w tym przypadku?
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 2 gości