Toon posts:

[vb6] winsock

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

Verwijderd

Topicstarter
Ik moet een applicatie schrijven voor de graphics aan te sturen voor televisie. De data wordt gegeneerd door een applicatie en doorgegeven via tcp/ip. Deze data moet dan worden opgevangen en verwerkt, dan doorgegeven aan het programma dat voor de grafische kant zorgt. Dit programma spreek ik aan via een vb6 sdk. Nu aangezien ik eigelijk een graphicus ben met maar een basiskennis aan vb6 (ik bedoel daarmee dat ik wel mijn weg kan vinden via msdn :) heb ik toch wel enkele vragen hoe ik dit het beste kan aanpakken.

Het uiteindelijke doel is voor wedstrijden het aantal rondes en zo bij te houden van verschillende rijders.

Ik heb al wat code geschreven die de data uit de netwerkkabel vist. Maar nu zou ik deze moeten verwerken. De data die ik binnenkrijg is van dit type:

$H,26,"54",7,"00:02:07.968"
$COMP,"51","51",1,"Frederic","Delhuille","UFOLEP(France)",""

Er zijn dus verschillende types data te herkennen aan de tekst na de $, het scheidingsteken is de ",". Het gaat hier over rijder- en ronde info.

Nu heb ik dus wat vragen waar ik wat professionele raad voor nodig heb. Aangezien ik niet zoveel programmeer ervaring heb kan het zijn dat ik wel totaal de verkeerde kant op ga, laat me dan iets weten :)

De verschillende data zou ik via split indelen in verschillende variabelen. Maar dan?

Ik dacht alle data te sorteren in multidimensionale arrays, maar eigelijk leek me dit opeens zo object georienteerd :) Ik heb wel wat ervaring in object georienteerd programmeren in actionscript :) maar geen in vb6.
Verschillende objecten aanmaken zoals wedstrijd -> rijder -> tijd zie ik nog wel zitten.

Mijn eigelijke vraag is nu eigelijk hoe zou ik dit het beste in programma aanpakken? Aangezien ik niet zo een programmaar brein en bijna geen ervaring in vb6 heb kan ik me dit moeilijk voorstellen.
Een xml structuur lijkt me hier ook geschikt voor al weet ik niet of dit voor problemen gaat zorgen.

Een ander probleem is natuurlijk dat waardes ergens worden weggeschreven en tegelijk kunnen opgevraagd worden door het grafische deel. Wat als dit tegelijk gebeurd?
Heb ik dan een halve nieuwe variabele en een halve oude? Of werkt vb6 zo niet?
Met een database werken waarin je dingen locked lijkt me zo traag te zijn en eigelijk te ingewikkelt voor mijn oplossing.

Om een lang verhaal kort te maken:
- Hoe zouden jullie de data intern bijhouden?
- Hoe zit het met lezen en schrijven tegelijk naar variabelen

  • ixi
  • Registratie: December 2001
  • Laatst online: 17-05 17:12

ixi

Winsock? Waar dan? :)

Ik zou gewoon types maken voor de verschillende 'setjes' gegevens.
code:
1
2
3
4
5
6
7
8
9
10
Type tijdentype
   a as string
   b as string
end type

Public tijden(255) as tijdentype

'aanspreken met:

tijden(0).a = "lalala"

Nadeel is dat je met een vast maximum zit. Ik heb 0 ervaring met objecten in VB6, dus daar kan ik je niet verder mee helpen.

Het gelijktijdig lezen en schrijven zal volgens mij niet gebeuren, wil je het zekere voor het onzekere nemen kan je bovenaan bij alle funkties zoiets neerzetten:

code:
1
2
3
4
5
while (busy)
loop
busy = true
' funktie
busy = false


Geen erg nette oplossing maarja. Je zou even moeten testen hoe het zit als meer dan 2 funkties tegelijk lopen (als VB al uberhaupt meerdere funkties tegelijkertijd kan laten lopen, heb al een behoorlijke tijd geen VB meer gebruikt).

[ Voor 11% gewijzigd door ixi op 01-12-2003 11:08 ]


Verwijderd

ixi schreef op 01 december 2003 @ 11:05:
Nadeel is dat je met een vast maximum zit. Ik heb 0 ervaring met objecten in VB6, dus daar kan ik je niet verder mee helpen.
Je kunt natuurlijk een ArrayList gebruiken of je array copy'eren naar een nieuwe Array + de nieuwe waarden. Twee maniertjes om je fixed size te omzeilen.
ixi schreef op 01 december 2003 @ 11:05:
Het gelijktijdig lezen en schrijven zal volgens mij niet gebeuren, wil je het zekere voor het onzekere nemen kan je bovenaan bij alle funkties zoiets neerzetten:

....

Geen erg nette oplossing maarja. Je zou even moeten testen hoe het zit als meer dan 2 funkties tegelijk lopen (als VB al uberhaupt meerdere funkties tegelijkertijd kan laten lopen, heb al een behoorlijke tijd geen VB meer gebruikt).
Zolang de app niet multi-threaded is is er niets aan de hand. Dan kan er nooit gelijk gelezen en geschreven worden. Is hij wel multi-threaded dan zou ik eerder 'Lock' adviseren.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-05 16:53
Visual Basic:
1
2
    Dim r () as Variant
    r = Split( Data,.......... )

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Sharkware
  • Registratie: November 2003
  • Laatst online: 17-05 01:10
Het zou ook best handig zijn als je even zou vermelden wat dat grafische programma'tje dan weer uit jou programma'tje opvraagt.

Dat is wel handig voordat je bepaalt hoe je de variabelen in je programmatje op gaat slaan.

Verwijderd

Topicstarter
Sharkware schreef op 01 december 2003 @ 14:24:
Het zou ook best handig zijn als je even zou vermelden wat dat grafische programma'tje dan weer uit jou programma'tje opvraagt.

Dat is wel handig voordat je bepaalt hoe je de variabelen in je programmatje op gaat slaan.
Eénmaal de gegevens zijn opgehaald worden deze opgeslagen in één of andere structuur zodat ik deze kan doorgeven naar de grafische kant via de sdk. Wat ik dus doorgeef zijn gewoon Strings, waarvan ik zeg zet ze in dat veld. Eigelijk komt de data dus gewoon in tekstvelden terecht.

Mijn probleem is echter hoe orden ik de informatie zodat ik ze makkelijk kan beheren.

Ik moet snel alle rijders kunnen tonen samen met hun beste tijd, de beste tijd in het algemeen ophalen, rijders sorteren op beste tijd. Gegevens per rijder ophalen, rondetijden per rijder ophalen.

Maar hoe ik dit alles bij? Als ik in actionscript bezig ben prop ik gewoon alles in een array (objecten, andere arrays) en deze kan ik dan sorteren op allerlei mogelijkheden. Ook xml verwerk hierin simpel en snel.

Nu ik ben vandaag terug begonnen met vb op te frissen en ik moet zeggen dat het me zwaar valt. Ik mis zaken zoals sort, collections zijn ookal niet simpel.

Ik heb wel nieuws gekregen dat de sdk ook in vb.net werk, al kwam het er op neer dat ik het dan zelf maar moest uitzoeken. VB.net is toch gebruikvriendelijker om data bij te houden en te verwerken, niet?

Verwijderd

Topicstarter
Is het misschien toch verstandig om alles wat ik binnenkrijg in een lokaal acces databankje te plaatsen en het met sql er terug uit te vissen. Dit lijkt me zo een omweg? Want dan moet ik met locken en zo beginnen (dat heb ik dan weer niet gezien int school vroeger) :)

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-05 16:53
Je kunt toch je data splitten, er een object mee vullen en deze toevoegen aan een array of collection, wat jij makkelijker vindt ?

Wat is exact het probleem ?

Overigens is VB niet multithreaded, dus als jij data aan het toevoegen bent kan vb niet op een andere plaats ook data eruit halen.

Waar je wel voor op moet passen is DoEvents, die maakt het allemaal een stuk ranziger.

[ Voor 42% gewijzigd door farlane op 01-12-2003 16:03 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Sharkware
  • Registratie: November 2003
  • Laatst online: 17-05 01:10
Verwijderd schreef op 01 december 2003 @ 15:02:
Is het misschien toch verstandig om alles wat ik binnenkrijg in een lokaal acces databankje te plaatsen en het met sql er terug uit te vissen. Dit lijkt me zo een omweg? Want dan moet ik met locken en zo beginnen (dat heb ik dan weer niet gezien int school vroeger) :)
Toch maar dat doen wat Ixi heeft geschreven.
Een Array groter maken tijdens run-time kun je met ReDim. (ff in help opzoeken.)

Zo is het best te doen. Ik weet niet hoeveel rijders je per keer hebt maar ik ga er maar van uit dat het er niet meer zijn als 100. Dan kun je met zo'n Array makkelijk je gegevens kwijt.
Pagina: 1