Zadeklaruj stringa o znanej długości tj. Dim x as String * 10 a nie samo string * .
Specjalnej funkcji to nie ma, ale nic nie stoi na przeszkodzie napisać kilka linijek które to zrobią. Np. w pętli for next z użyciem mid()
Użyj funkcji VAL. var = VAL( s). s to string, a var to liczba.
Proszę. Gotowe bo jak widzę kilka If`ów do tej samej zmiennej zamiast Select Case i tym podobne kwiatki... [syntax=vbnet]$regfile = "m32def.dat" $crystal = 11059200 $hwstack = 64 $swstack = 16 $framesize = 64 Const Timeout_time = 8 'x500ms Config Submode = New ' config LCD 2X16 Config Lcdpin = Pin , Rs = Porta.2 , E = Porta.3 , Db4 = Porta.4 , Db5 =...
Widzę, że moderatorzy posprzątali zwyczajowy hejt na Bascoma :D Niestety przy okazji usunięto też ważną informację. Rzeczywiście potrzebujesz instrukcji VAL https://wiki.mcselec.com/bavr/VAL do zamiany reprezentacji tekstowej liczby na wartość liczbową. W drugą stronę, jeśli chcesz wysłać zmienną WORD do komputera możesz zrobić to wprost. Bascom sam...
Hej! Zobaczcie jak ja to robię, może komuś sie to przyda: 'Powiedzmy ze zmienna Liczba(single) wynosi 22.62555426 Temp = Int(liczba) ' dzieki temu poleceniu odcinam czesc setna czyli ' zmiennej Temp(byte) przypisuje liczbę 22 Liczba = Frac(liczba) ' dzieki temu poleceniu odcinam czesc ' dziesiętną czyli zmiennej Liczba(single) przypisuje ' liczbe 0.62555426...
Funkcja MID. :) [url=http://avrhelp.mcselec.com/index.ht...
chcę zrobić tablicę z nazwami dni tygodnia do kalendarza. deklaruję dim tablica(7) as string * 12 Po co Ci aż 7 12-bajtowych stringów :?: Wystarczy: Dim Dzientygodnia As String *12 , Nrdnia As Byte ... Dzientygodnia=Lookupstr(Nrdnia,Tabli... '0=Pon, 1=Wtor, ... Lcd Dzientygodnia; ... Tablica: Data "poniedziałek", "wtorek"...
Chyba nie czytałeś ostatnio tego rozdziału z Language Fundamentals. W ten sposób sam sobie robisz kuku... Pomijając to myślę, że jeśli te Twoje zmiennoprzecinkowe masz tylko do dwóch miejsc po przecinku, to dlaczego, po prostu, nie pomnożysz tego x100 a na końcu wyniku nie podzielisz /100? Zapewne wszystko się wykona dużo szybciej niż na tych zmiennoprzecinkowych....
Config DP działa od wersji 2.0.1.0, jeżeli masz tą lub nowszą wersje Bascom'a w Fusing zamień "#.##" na "#,##".
Czy jeśli to samo chcę mieć dla zmiennej slowo3 muszę zakładać nową tablicę (pamięciożerne) czy też mogę załadować slowo3 do istniejącej już tablicy Slowo2_array(10)? Nie do końca chyba rozumiesz jak działa OVERLAY , tak stworzona zmienna nie jest "pamięciożerna". S lowo2 (string *10) i Slowo2_array(10) As Byte At Slowo2 Overlay zaczynają się od tego...
Witam, Napisałem program w BASCOM AVR, z komputera otrzymuje dane np: "14" te dane są i muszą być odbierane do zmiennej typu string. Mam problem z: chciałem tą zmienną ze zmiennej typu string przypisać do zmiennej typu BYTE. Nie wiem jak by to zrobić. Probowalem już kilu sposobów ale zawsze otrzymywałem jakieś bzdury w zmiennej typu byte. Czy istnieje...
http://www.elektroda.pl/rtvforum/topic22...
A może odbieraj większy string i sprawdzaj pierwszy znak.
Nie wiem dokładnie czy bascom dokonuje konwersji typu string na byte w tym może być problem. Spróbuj zmienna nm zadeklarować jako 'byte' może pomoże.
Tak prymitywnie to wyślij to sobie ze spacją i potem podziel otrzymany string szukajac spacji [syntax=vbnet] Print V1 ; " " ; A1 Dim MyArray(2) As String * 5 , M As Byte M = Split(CalyOdebranyString , MyArray(1) , " ") 'podziel szukając spacji Locate 1 , 1 : Lcd MyArray(1) Locate 2 , 1 : Lcd MyArray(2)[/syntax] Radzę też napisać u góry w kodzie : [syntax=vbnet]Config...
Można to tak zrobić: [syntax=basic4gl]Dim Zdanie As String * 30 Dim Zdanie_array(30) As Byte At Zdanie Overlay Zdanie = "Dzien dobry/Elektrod/" Print Chr(zdanie_array(12))[/syntax]
A od czego jest HELP !? "Przeznaczenie: Zwraca określoną liczbę znaków z tekstu począwszy od lewej strony. Składnia: zmienna = LEFT( tekst , il_znaków ) gdzie zmiennazmienna tekstowa, do której przepisane będą skopiowane znaki, teksttekst z którego skopiowane będą znaki, il_znakówilość kopiowanych znaków. Opis: Zobacz także: RIGHT , MID Przykład: Dim...
Witam Z tego co pamietam to by cokolwiek zapisac i odczytac z epromu nalezy podac tez adres komorki pamieci . W BASCOMIE to wyglada chyba tak : Writeeprom Tekst ,adres a potem odczytujemy Readeeprom Tekst ,adres AT90S2313 ma 128 bajtow pamieci EEPROM, wiec jest 128 komorek jedno-bajtowych komorek pamieci. Stad adres : 0-127 Nie wiem jak wyglada sprawa...
1. Bascom jest bardzo dobrym językiem, znacznie lepszym niż Arduino. 2. "a:10.0" "a:10.0 " ":10" "10 " Ten temat jest zamknięty, dostałeś 2 przykłady. Pierwszy napisałem do składni ramki jaką podałeś w pierwszym poście, później zmieniłeś konstrukcję rami to napisałem kolejny przykład, można jak dobrze naliczyłem jeszcze 9 innych metod zastosować by...
jak zadeklarować te zmienne? A np. tak dim Bufor as string * 16 ' 16 - maksymalna długość odebranych danych dim Bufor_znak as byte dim Bufor_flaga as byte
Wyboru samego separatora dokonuje się w pliku Config_AVR_dos.bas zmieniając stałą "Const Cvariableseparator = 44 " Jednak w tym wypadku chyba musisz użyć podręcznej zmiennej tekstowej, połączyć to sobie i wysłać na końcu jako jedna zmienna bo w innym przypadku zawsze wstawi separator. [syntax=vbnet]Dim Helpstr As String * 10 , Word1 As Word , Word2...
Może tak? Dim A As String * 1 Dim B As String * 1 A = "z" B = Chr(a) Cls Locate 1 , 1 Lcd B
Łap bo jak zaczniesz z tym Multimaster to się nigdy z tego nie wygrzebiesz a odkrywasz tu koło na nowo :D Po pierwsze nie zauważyłem wcześniej, że już skonfigurowałeś Serial in 0. Błędem natomiast jest jest używanie Serial out 0 a potem zamiast to wrzucić do bufora to wycinasz po jednej literce ze stringa i nadajesz pojedynczo... Po prostu napisz Print...
Może tak zobacz: $regfile = "m8def.dat" $crystal = 8000000 $BAUD = 9600 dim test1 as String dim test2 as String test1 = "1987" Do Input test2 Print "Wprowadzone haslo:" ; test2 If test1 = test2 then Print "Haslo poprawne" Loop End
A widzisz, pojawia się wreszcie jakiś konkret. Skoro pojawia się komenda "300" to rozumiem, że pojawi się też "120", "1", "55" itp. Więc zamieniasz otrzymany string na word i masz już wskaźnik tablicy. W odpowiedzi wysyłasz wartość zmiennej o numerze "300".
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...
Zapewne takie coś jest potrzebne: Dim T As Byte Dim Text As String * 10 T = 5 Text = Str(t) Lcd Format(text , "00") Czyli wyciągnięcie str(t) z formatu i skonwertowanie wcześniej.
To wiele wyjaśnia. Spróbuj tak ;) [syntax=vbnet]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 64 $swstack = 16 $framesize = 64 $baud = 9600 Config Lcd = 16x2 Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.6 , Db7 = Portb.0 , E = Portb.4 , Rs = Portb.5 Cursor Off : Cls Dim K1 As Byte Dim K2 As String * 20 Dim Id As String *...
Bo znak 0 to znak końca linii. 0 wyświetlane jako chr zostanie potraktowane jako znak o kodzie 0 a więc pójdzie do wyświetlacza. 0 "wyświetlane" jako String jest widziane jako znacznik końca textu a więc ten text nawet nie trafi do LCD. Jednym słowem LCD nawet by to wyświetlił, ale BASCOM kompiluje program tak żeby nie przepuszczał zera.
E tam, nic strasznego.... Tu masz błąd: Dim U_wy As String * 2 Zwiększ to na: Dim U_wy As String * 3 I leci aż miło. Nie mieścisz się w zmiennej, that's all:) Poza tym skonfiguruj watchdog oraz TIMER. Pewnie jeszcze coś tam siedzi (wyświetlanie bez wymazywania poprzednich, większych o rząd wartości na przykład) ale to tak na szybko. Pozdrawiam, TD
To pewnie wynika z tego że powstało dużo różnych AVR`ów. Jeśli na początku ktoś korzystał tylko z jednego typu to mógł sobie w IDE ustawić konfigurację dla stosów a nawet wyświetlacza LCD czy I2C. Stąd dla wstecznej kompatybilności dalej tak można zrobić. Na przykład ustawienia dla stosów są tutaj tylko moje są już zmienione bo mogę szybko wkleić to...
Teoria powiadasz. Ciekawe co czytałeś... Mimo iż wyczuwam lekki roszczeniowy charakter wypowiedzi to postaram Ci się coś jednak wytłumaczyć. Kiedy pisałem o podpisywaniu zmiennych to miałem na myśli takie wysyłane osobno. Od razu uściślijmy, że dla takich wartości dwubajtowych jak Word łatwiej to przesłać jako Hexstring. Długość stringa zawsze będzie...
Nie odkrywajmy koła od nowa ;) Kod dla takiego wyświetlacza jak na obrazku. https://obrazki.elektroda.pl/2987586400_... Wyciąłem go z kodu który w minute można znaleźć w DuckDuckGo :P Jeśli ktoś ma inaczej podłączone segmenty to musi tylko edytować tablicę Data. [syntax=vbnet]$regfile = "m328pdef.dat" $Crystal=16000000 $hwstack=32 $swstack=8...
Długość geograficzna to: 5045.0221,N Szerokość geograficzna to: 01619.7181,E Odwrotnie: szerokość N lub S, długość E lub W. szerokoscstopnie = Mid(dane,14,2) szerokoscminutyisekundy = Mid(dane,16,7) Szerokosc = Val(szerokoscminutyisekundy) Szerokoscminutyisekundy = Szerokoscminutyisekundy / 60 Proszę o pomoc To może tak: szerokoscstopnie...
Zamieniasz poszczególne znaki na ich liczbowe odpowiedniki za pomocą funkcji: ASC i XORujesz z poprzednią wartością, za pomocą funkcji XOR. O rozbijaniu stringa na poszczególne znaki było parę( dziesiąt) postów temu. A sam XOR to inaczej suma modulo 2: 0 xor 0 -> 0 1 xor 0 -> 1 0 xor 1- > 1 1 xor 1 -> 0 Oooo, znalazłem: http://www.elektroda.pl/rtvforum/topic15...
Witam i przechodzę do rzeczy.Na 1-szy ogień idzie ten kawałek kodu: 'wpisywanie pewnych wartosci ... G = 272 Liczba = 30 Liczba = Hexval(liczba) G = Hexval(g) Kombinacja = 1 Czas = 1000 ... I jakież to wartości ,zawierają zmienne :?: Ano takie: Liczba=238 :?: G=3793(0x0ED1) :!: Czas=1000(0x03E8) Ok. ... Writeeeprom Czas , Liczba Writeeeprom...
Czy liczba jest zawsze siedmiocyfrowa? Nie mówie że to jedyny sposób ale podam jeden z możliwych. Deklarujesz zmienną tekstową siedmioznakową. Taka zmienna ma w rzeczywistości osiem bajtów. Nie chcesz wysyłać ósmego NULL. No i OK :D Na te zmienną nakładasz bufor siedmiu bajtów. Kiedy zmienna Dword każesz zamienić Bascomowi na string to on zapisze komórki...
Witam wszystkich. Proszę o drobną pomoc. Muszę wyodrębnić dane z łańcucha string odebranego po UART. Łańcuch ten jest bardzo długi i za każdym razem dane z łańcucha są umieszczone w losowy sposób, długość łańcucha także za każdym razem jest przypadkowa. Jedyną stałą zależnością jest fakt, że dane zawsze rozdzielone są przecinkiem "," i chciałbym je...
Cześć. Proszę ten poradnik będzie dla Ciebie pomocny. Czy to już tablica? Gdzie ją umieścić? Tak, to jest tablica. Kompilator sam załatwi sprawę. [syntax=vbnet]$regfile = "m48def.dat" $crystal = 4000000 $baud = 19200 $hwstack = 32 $swstack = 10 $framesize = 40 Dim B1 As Byte , I As Integer B1 = Lookup(2 , Dta) Print B1 I = Lookup(0 , Dta2) Print I End...
w tym problem ze wlasnie gdy napisze valux=valu to wywala mi blad i co mam z tym zrobic?? mam bascoma 1.11.7.4
...Czy istnieje jakiś sposób, aby ostateczną zmienną 'Ss' (string) zapisać w zmiennej typu Single (lub innej?) aby umozliwic porównanie jej z tą zapisaną w eepromie? A może ktoś zna inną metodę na rozwiązanie tego problemu? Z Twojej wypowiedzi wynika , że nie wiele masz wspólnego z programowaniem uC - ale mniejsza z tym. Zmienna string jest potrzebna...
Sądzę że prościej jest użyć INKEY() niż INPUT Dim pełnyciąg As String * 100 Dim zmienna As Byte do zmienna=inkey() pełnyciąg=pełnyciąg+zmienna incr a if a>100000 then a=0 exit do end if if zmienna>0 then a=0 loop until zmienna= 13
Witam niestety komendą LCD nie można wyswietlać zmiennej typu Word. Jak obejść ten problem? Zadeklaruj jakąś zmienną jako string (np. tak jak poniżej jest ss1) Dim Ss1 As String * 12 Ss1 = Fusing(W, "#.&&") ' formatowanie zapisu doformatu x.xx Lcd "U=" ; Ss1 jak wartość odczytana komendą getADC ma się do wartości napięcia...
Jak zwykle czasu nie ma, ale nie mogłem się powstrzymać. Nakręciłem pierwszy klip - ahahahaha :D No musiałem się pobawić edytorem. Efekt to półtora minuty magii :D Ahahaha miałem kupę zabawy z tym :D Przy okazji możesz zobaczyć jak się używa wbudowanego symulatora by zadawać wartości ADC ;) Twój pomniejszony kodzik też poniżej, tylko używając poza symulatorem...
Moja mowa będzie krótka ... Dim Zm As String * 10 , X As Integer X = 2000 'dec X=2000 , hex X=7D0 Zm = Str(x) ' Zm="2000" X = Hexval(zm) 'dec X=8192 hex X=2000 Czy o to Ci chodzi :?: Piotrek PS Ale uważaj , bo dla dec X>7999 wyjdą cuda :D
pewnie piszesz w bascom ,wiec masz kod odbierania danych (całych stringów ) w przerwaniu :) : Config Serialin = Buffered , Size = 20 do If Ischarwaiting() = 1 Then '1 - odebrano znak,0 - pusty bufor Call Read_rs232 End If loop Sub Read_rs232 Dim Bufor As String * 24 Input Bufor Noecho end sub
Może coś takiego : Dim Str1 As String * 10 Dim Koniec As Byte Dim Key As Byte Str1 = "" Koniec = 0 Do Key = Waitkey() 'pobieranie znaku, tu z terminala Select Case Key Case 13 : Koniec = 1 ' np. kod ENTER = 13 Case Else : Str1 = Str1 + Chr(key) ' inne znaki dodaje do str1 End Select If Len(str1) = 10 Then Koniec...
Klawiature musisz potraktować jak jeden zwykły przycisk. Tyle że zwykły przycisk ma stan wysoki jeśli nienaciśnięty a ten przycisk zwraca 16 jeśli nienaciśnięty. Napisałem na szybko dwa przykłady. Jeden działa bezposrednio na wartosciach a drugi na stringu [syntax=vbnet] Dim Key As Byte Key_val As Byte , Lock As Byte , Licznik As Byte Dim Val_str As...
WItajcie Czy jest szansa, by w 2 kB 90s2313 zmieścić obsługę DS18B20 wraz z obliczeniami by uzyskać na LCD temperaturę z wartościami po przecinku. $regfile = "2313def.dat" $crystal = 16000000 Config 1wire = Portb.0 Dim T As Integer , Stt As String * 6 Cls Do 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 800 1wreset 1wwrite &HCC 1wwrite...
bascom string tablica string bascom bascom operacje string
schemat podłączenia żarówek przebieg samochodu akumulator futura ładowanie
interfejs delphi zmywarka bosch spv50e00eu
Ograniczenie prędkości LAN do 100 Mb/s mimo ustawienia 1 Gb/s Błąd techniczny w pralce Miele, Bosch, Samsung, LG