Toon posts:

[lcd] scrollen

Pagina: 1
Acties:
  • 127 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
ik ben bezig aan het proggen voor mijn lcd (op de lpt)
en nu wil ik een regel laten scrollen. hoe moet ik dat doen?
ik heb al een anatal dingen geprobeerd (zoals steeds meer spaties voor de text) maar dat is eigenlijk geen oplossing. hoe moet het wel?

edit: ohjah, ik programmeer dit alles in VB

  • supersook
  • Registratie: Januari 2001
  • Laatst online: 06-09 07:52

supersook

Professioneel prutser

ik heb geen id hoe je je lcd aanstuurd, maar ik ga er voor het gemak even vanuit dat een regel van je lcd een variabele is.

De string die op de regel moet komen is als het goed is langer dan de lengte van de string die je op je lcd regel kunt plaatsen. In VB zit vast wel een functie waarmee je een gedeelte van een string op kunt slaan in een andere string >> substr() ? Daarmee neem je de eerste keer dat je de regel naar je lcd stuurd een stukje van de string die je wilt laten zien, met de lengte van de string die je op je lcd kunt zetten.

voorbeeld: Stel, je lcd regel is 5 tekens lang en je wilt deze text laten scrollen: "Dit is een test", dan neem je dus met een soort functie als substr() een stuk van 5 letters van die string >> "Dit i" krijg je dan. Daarna schuif je een plaatsje op >> "it is". En nog een plaatsje "t is " etc. etc. Net zo lang tot je bij het einde bent, en dan kun je naar keuze weer de eerste letter van de string laten zien, of eerst wachten tot je hele regel leeg is en dan opnieuw beginnen.

Verwijderd

Topicstarter
Op zaterdag 23 maart 2002 15:23 schreef supersook het volgende:
ik heb geen id hoe je je lcd aanstuurd, maar ik ga er voor het gemak even vanuit dat een regel van je lcd een variabele is.

De string die op de regel moet komen is als het goed is langer dan de lengte van de string die je op je lcd regel kunt plaatsen. In VB zit vast wel een functie waarmee je een gedeelte van een string op kunt slaan in een andere string >> substr() ? Daarmee neem je de eerste keer dat je de regel naar je lcd stuurd een stukje van de string die je wilt laten zien, met de lengte van de string die je op je lcd kunt zetten.

voorbeeld: Stel, je lcd regel is 5 tekens lang en je wilt deze text laten scrollen: "Dit is een test", dan neem je dus met een soort functie als substr() een stuk van 5 letters van die string >> "Dit i" krijg je dan. Daarna schuif je een plaatsje op >> "it is". En nog een plaatsje "t is " etc. etc. Net zo lang tot je bij het einde bent, en dan kun je naar keuze weer de eerste letter van de string laten zien, of eerst wachten tot je hele regel leeg is en dan opnieuw beginnen.
zoiets had ik ook al geprobeerd, maar het was me nog niet gelukt.

het probleem hierbij is dat ik alle letters 1 voor 1 moet sturen. en dat is (voor mij dus) ingewikkeld.

dan zouden het dus 2 for...next loops worden. de eerste pakt 16 characters uit een string en slaat die op in een aparte string. de tweede (die dan dus binnen de eerste zit) pakt uit die laatste string dan een voor een de letters en schrijft die naar het lcd.

hmmz, nog een keer proberen dan :)

Verwijderd

Topicstarter
ok, hij doet het :)
maar het is op een of andere manier te zwaar (proggie reageert niet tot de hele string gedisplayed is)
wat kan ik daar aan doen?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
For A = 1 To Len(String1) - 16         
 String2 = Mid(String1, A, 17)
    For b = 1 To Len(String2)
     Teprintentekst = Mid(String2, b, 1)
     DlPortWritePortUchar 890, 6
     DlPortWritePortUchar 888, Asc(Teprintentekst)
     DlPortWritePortUchar 890, 5
     Sleep 1
     Next
    Sleep 300
DlPortWritePortUchar 890, 2
DlPortWritePortUchar 888, 128
DlPortWritePortUchar 890, 1
Next

String1 is hier dus de string die ingegeven wordt. de 2e for..next loop zorgt dan voor het één voor één schrijven van de chars.

  • supersook
  • Registratie: Januari 2001
  • Laatst online: 06-09 07:52

supersook

Professioneel prutser

zow, dan vraag je me wat, dat weet ik niet, dat zou je aan een VBer moeten vragen. Vrijwilligers?

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 10-09 17:38

Gerco

Professional Newbie

Vreemd... misschien kun je er ergens nog een DoEvents() in kunnen gooien (in de binnenste loop lijkt me GEEN goed plan)..


Maar die "Sleep 300" ZOU dat al moeten oplossen..

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

code:
1
2
3
4
5
6
ScrollPos = ((GetTickCount-StartTick) / ScrollDelay) mod len(strdata)
strScroll = mid$(strdta,scrollpos)
while len(strscroll) < 20 
   strScroll = strScroll & strData
wend
strScroll = left(strscroll,20)

Zo lastig is het niet toch?

Verwijderd

Topicstarter
ik had het al gefixed.

heb van die eerste loop een timer gemaakt. want die loop moest onderbreekbaar zijn. moest trouwens ook nog wat aan de timing doen maar het is nu allemaal opgelost, tnx guys :)
Pagina: 1