Forum » Programiranje » Za VB mojstre
Za VB mojstre
strobos ::
Pozdrav.
Imam problem pri serijski komunikaciji s pošiljanjem na serijski port.Hitrost je 1200 baudov.Imam pa narejeno tako da ko pritisnem tipko,program pošlje podatek na port.Če pa pritisnem tipko v tistem trenutku ko še pošilja,pa ta signal ignorira in tistega sploh ne pošlje.Torej potreboval bi čakalno vrsto.Ko bi imel veliko podatkov za poslat,pa bi lepo počasi enega za drugim pošiljal.
Lp
Imam problem pri serijski komunikaciji s pošiljanjem na serijski port.Hitrost je 1200 baudov.Imam pa narejeno tako da ko pritisnem tipko,program pošlje podatek na port.Če pa pritisnem tipko v tistem trenutku ko še pošilja,pa ta signal ignorira in tistega sploh ne pošlje.Torej potreboval bi čakalno vrsto.Ko bi imel veliko podatkov za poslat,pa bi lepo počasi enega za drugim pošiljal.
Lp
Sem že dvakrat stran odrezal,pa je še zmer prekratko!
Zzzzzzz ::
Mhm, sem že malo zarjavel v VB-ju, vendar bom vseeno probal kej povedat.
Torej, rabiš buffer, kar je v VB-ju zelo nerodno delat (Java bi bla veliko boljša - uporabiš threade pa en sklad pa je stvar narjena ). No, pa da ne bo kompliciral.
Najbolj simpl bi blo, da bi dal en public array, v katerega bi dodajal in odvzemal podatke (dodajal na vrh, odvzemal spodaj - sklad). Alora, poskusimo:
Public Buffer() As Variant
Public Sub Init()
Buffer(0) = vbNull 'al pa kej druzga
End Sub
Sub DodajPodatek(data As String)
Dim cnt As Integer
' dobi število podatkov in povečaj za ena
cnt = UBound(Buffer) + 1
' Povečaj buffer za en podatek
ReDim Preserve Buffer(cnt)
' dodeli nov podatek v buffer
Buffer(cnt) = data
End Sub
Function NaslednjiPodatek() As String
Dim data As String
' dobi prvi podatek z bufferja
data = Buffer(0)
' odstrani dobljen podatek in premakni
' podatke za eno mesto navzdol
For i = 1 To UBound(Buffer)
Buffer(i - 1) = Buffer(i)
Next
' no, zdej pa pobriši zadnji prazen prostor (malo počistimo pomnilnik)
ReDim Preserve Buffer(UBound(Buffer) - 1)
' vrni podatek
Return data
End Function
No, to je zdej tle ena osnovna stvarca, ki se jo da naredit brez problemov. Zdej moraš samo še dodelat svoj sistem, da si npr. ta dva podprogramčka ne bosta skakala v zelje (npr. eden pisal v buffer, ko drugi bere ipd.)
Bom še to malce poštimal (sej sistem imam že zamišljen, kako bi se dalo nardit, ma si morem vzet pol urce cajta, da napišem, pa objavim.
Torej, rabiš buffer, kar je v VB-ju zelo nerodno delat (Java bi bla veliko boljša - uporabiš threade pa en sklad pa je stvar narjena ). No, pa da ne bo kompliciral.
Najbolj simpl bi blo, da bi dal en public array, v katerega bi dodajal in odvzemal podatke (dodajal na vrh, odvzemal spodaj - sklad). Alora, poskusimo:
Public Buffer() As Variant
Public Sub Init()
Buffer(0) = vbNull 'al pa kej druzga
End Sub
Sub DodajPodatek(data As String)
Dim cnt As Integer
' dobi število podatkov in povečaj za ena
cnt = UBound(Buffer) + 1
' Povečaj buffer za en podatek
ReDim Preserve Buffer(cnt)
' dodeli nov podatek v buffer
Buffer(cnt) = data
End Sub
Function NaslednjiPodatek() As String
Dim data As String
' dobi prvi podatek z bufferja
data = Buffer(0)
' odstrani dobljen podatek in premakni
' podatke za eno mesto navzdol
For i = 1 To UBound(Buffer)
Buffer(i - 1) = Buffer(i)
Next
' no, zdej pa pobriši zadnji prazen prostor (malo počistimo pomnilnik)
ReDim Preserve Buffer(UBound(Buffer) - 1)
' vrni podatek
Return data
End Function
No, to je zdej tle ena osnovna stvarca, ki se jo da naredit brez problemov. Zdej moraš samo še dodelat svoj sistem, da si npr. ta dva podprogramčka ne bosta skakala v zelje (npr. eden pisal v buffer, ko drugi bere ipd.)
Bom še to malce poštimal (sej sistem imam že zamišljen, kako bi se dalo nardit, ma si morem vzet pol urce cajta, da napišem, pa objavim.
Zzzzzzz ::
Evo, sm nekej naredu.
Zip je tle.
Še navodila za uporabo: Buffer je narejen kot Class, primerno komentiran tudi za neznalce VB-ja.
Primer je simpl, v veliko okence vpisujete tekst, ločen s presledki, ki se potem razdeli na besede in dodaja/bere v/iz buffer/-ra. Timer1 vsakih 100 milisekund vzame en podatek z bufferja. Na gumb za dodajanje teksta lahko klikneš/-te večkrat, saj se podatki dodajajo na vrh sklada bufferja, odvzemajo pa spodaj.
Ima pa ta program eno pomanjkljivost, in sicer, da je buffer izključujoč - to pomeni, da lahko dela le eno stvar od enkrat - lahko ali piše, ali bere, obojega hkrati se NE da. (mislm, za 1/2 ure dela + malo testiranja je kr dobro)
Komentarji lahko tukaj al pa na moj mejl. (ki je med mojimi podatki )
Zip je tle.
Še navodila za uporabo: Buffer je narejen kot Class, primerno komentiran tudi za neznalce VB-ja.
Primer je simpl, v veliko okence vpisujete tekst, ločen s presledki, ki se potem razdeli na besede in dodaja/bere v/iz buffer/-ra. Timer1 vsakih 100 milisekund vzame en podatek z bufferja. Na gumb za dodajanje teksta lahko klikneš/-te večkrat, saj se podatki dodajajo na vrh sklada bufferja, odvzemajo pa spodaj.
Ima pa ta program eno pomanjkljivost, in sicer, da je buffer izključujoč - to pomeni, da lahko dela le eno stvar od enkrat - lahko ali piše, ali bere, obojega hkrati se NE da. (mislm, za 1/2 ure dela + malo testiranja je kr dobro)
Komentarji lahko tukaj al pa na moj mejl. (ki je med mojimi podatki )
strobos ::
Hja,ko pritisnem da bi lahko downloadal tvoj zip mi napiše da ne more odpreti strani .
Za pošiljanje pa uporabljam MSComm kontrolo.
Lp
Za pošiljanje pa uporabljam MSComm kontrolo.
Lp
Zzzzzzz ::
No, zdej dela. Problem velikih začetnic pač.
Za pošiljanje mislim, da ni važno, na kaj delaš - priporočam, da daš pošiljanje na kak timer, da npr. vsakih N milisekund pošlje podatek (in da je vmes eno odprto "okno", da lahko dopolneš buffer).
Za pošiljanje mislim, da ni važno, na kaj delaš - priporočam, da daš pošiljanje na kak timer, da npr. vsakih N milisekund pošlje podatek (in da je vmes eno odprto "okno", da lahko dopolneš buffer).
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | COM in Visual BasicOddelek: Programiranje | 2180 (1641) | pexo |
» | [C#] Prosim pomagajte! Potrebujem program, ki bi pobiral podatke iz ene straniOddelek: Programiranje | 2758 (2368) | David1994 |
» | VB in StringOddelek: Programiranje | 914 (852) | mov ax 0x7c0 |
» | Visual Basic HELPOddelek: Programiranje | 1194 (1066) | GaPe |
» | API+VBOddelek: Programiranje | 2111 (1815) | webblod |