vrijdag 27 april 2012

Kleine update voor de IO

Vandaag nog eens even doorgewerkt aan de IO-code voor het chessproject, waarin eigenlijk niet veel nieuws te zien is, aangezien ik al meer had dan ik dacht.
Zo is de zoektocht naar een manier om te luisteren naar input van de microcontroller geëindigt na veel zoeken door in mijn eigen code eens te zoeken waar ik het al geïmplementeerd had, namelijk met de volgende regel:
this.comPoort.DataReceived += new SerialDataReceivedEventHandler(dataOntvangen);

Verder zijn er nog volgende methodes toegevoegd:
* public void schrijfData(string data): deze kan op verschillende manieren getriggerd worden, maar de voornaamste manier is door ontvangFeedback, die simpelweg het antwoord van de spellogica doorgeeft aan deze methode.
* public void ontvangFeedback(string info): deze wordt getriggerd door de spellogica, die een antwoord zal geven op het commando die de coordinaten meegegeven heeft.
* private Punt vertaalCoordinaat(int coordinaat): hierin wordt een meegegeven coordinaat, die verondersteld wordt een coordinaat te zijn van het systeem van het schaakbord zelf, omgerekend naar een x- en een y-coordinaat, die in een Punt-object wordt gestoken en weergegeven.
* private int vertaalCoordinaat(Punt vertaalMij): nogmaals een vertaling van coordinaten, maar dan in de omgekeerde richting van private Punt vertaalCoordinaat, maw van x-y naar het schaakbord-systeem.

Nog enkele lichte veranderingen aan bestaande methodes:
* private void dataOntvangen: naast het inlezen van data is er ook een controle die de huidige zet controleerd toegevoegd, samen met de oproep om coordinaten te vertalen van het schaakbord-systeem naar een x-y systeem en de controle om te zien of het een geldige zet is of 2 maal dezelfde zet.
* enkele andere methodes zonder nut zijn simpelweg verwijdert.

Opmerkingen:
* De feedback van de IO-klasse naar de microcontroller heeft nu maar 2 types van antwoorden, tenzij er in de spellogica geen "true" of "false" wordt meegegeven aan de IO-klasse. Maw, er wordt nog gewerkt met een feedback die bij true gewoon de zet registreert en bij false de feedback op het bord geeft door al de lichten te doen pinken (tenzij het al anders is dan we tevoor wisten).
* De manier om input van de microcontroller te lezen moet nog gekozen worden, de gemakkelijkste methodes zijn lezen per string of lezen aan de hand van bytes, ik denk zelf dat lezen met strings gemakkelijker zal zijn, maar ik weet nog niet precies welke output de microcontroller zal leveren naar de IO-klasse toe.
* Ik moet juist nog te weten komen welke in/output ik van de spellogica en de microcontroller kan verwachten. De microcontroller heb ik in het punt hierboven al gehint, maar voor de spellogica heb ik al iets in gedachten, die ik in de bijlages gezet heb bij GameLogic.cs. Graag melden als het anders moet.

Ik zal wellicht nog wel wat vergeten zijn, ergens diep in een hoekje, maar de lectuur is nu al groot genoeg denk ik :p
Als verduidelijkende extra nog de bijlages:
* IO-klasse: http://dl.dropbox.com/u/46945634/IOHandler.cs
* Punt-klasse (x-y coordinatenstelsel): http://dl.dropbox.com/u/46945634/Punt.cs
* Delegates (onverandert): http://dl.dropbox.com/u/46945634/Delegates.cs
* Klein voorbeeld van wat ik verwacht van input: http://dl.dropbox.com/u/46945634/GameLogic.cs

Geen opmerkingen:

Een reactie posten