» »

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
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 :D). 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 :D)

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

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).


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

COM in Visual Basic

Oddelek: Programiranje
222100 (1561) pexo
»

[C#] Prosim pomagajte! Potrebujem program, ki bi pobiral podatke iz ene strani

Oddelek: Programiranje
212598 (2208) David1994
»

VB in String

Oddelek: Programiranje
9853 (791) mov ax 0x7c0
»

Visual Basic HELP

Oddelek: Programiranje
71110 (982) GaPe
»

API+VB

Oddelek: Programiranje
261988 (1692) webblod

Več podobnih tem