vrijdag 15 juni 2012

Presentatie chesscomputer


Al even een kleine presentatie in mekaar gewipt met hetgeen ik weet in (gemaakt in openoffice, dus mss met bugs voor ms office).
http://dl.dropbox.com/u/46945634/chesscomputer.pptx
http://dl.dropbox.com/u/46945634/chesscomputer.odp

Kleine opsomming:
-inhoudstabel-"korte" samenvatting van wat het chesscomputer-project juist inhoudt
-deel IO
...en voor de rest is alles, op titels na, leeg gelaten.

donderdag 24 mei 2012

Update IO 24/05

Kleine wijziging aan de IO-code in de project-klas vandaag:
-de feedback van de spellogica wordt nu vertaald naar [0-63];[0-63] vooraleer ze naar het schaakbord wordt doorgestuurt (ipv het oude x,y;x,y)

nieuwe IOHandler-klasse: IOHandler

zaterdag 28 april 2012

Update IO-code van 28/04/12

In deze update is er een heel pak verhuisd en aangepast aan zowel de spellogica als de microcontroller.

Om het kort te houden heb ik een korte oplijsting van de veranderingen opgesteld:
* De vertalingen op gebied van coordinaten, waar nog een aantal zaken aan kunnen toegevoegd worden, maar nog niet echt van pas komen zijn verhuisd van IOHandler naar een nieuwe klasse, genaamd Coordinaat. Hierbij zijn er 2 extra vertaalmethodes bijgekomen om met alfabet-cijfer combinaties te kunnen werken.
* De code om van de microcontroller te lezen aan de hand van bytes is "verwijdert", ze staat er nog bij, maar alleen in commentaar in geval ze nog van pas kan komen.
* Een ObsDel-eigenschap werd toegevoegd om via het IOHandler-object in de spellogica toch nog te kunnen werken met de feedback-methode public void ontvangFeedback(string info)->die de spellogica dan zal kunnen gebruiken aan de hand van zijn ObserverDelegate-object die verkregen werd door de get-functie van de ObsDel eigenschap.
* Er is een extra niet/wel-standaard constructor toegevoegd, deze vraagt enkel en alleen om een IODelegate-object om te kunnen communiceren met de spellogica. Zonder deze zouden we natuurlijk geen zetten kunnen doorspelen. De "wel" die ik hierboven schreef wijst erop dat op dit IODelegate-object na alles standaard gedefinieerd werd.
Opmerking: over de waarden kan nog gediscussieerd worden, omdat ik er niet van zeker ben. Ik herinner mij ook nog ergens van instellingen zoals baud rate ingesteld te hebben bij het labo van µcontrollers, maar kan mij de waarden niet meer herinneren en weet ook niet of die beter zouden werken.

Ten slotte nog de bijlages:
* IOHandler.cs: http://dl.dropbox.com/u/46945634/IOHandler.cs
* Coordinaat.cs: http://dl.dropbox.com/u/46945634/Coordinaat.cs
* Punt.cs: http://dl.dropbox.com/u/46945634/Punt.cs
* Delegates.cs: http://dl.dropbox.com/u/46945634/Delegates.cs
* indien het kan helpen met delegates van de spellogica-kant, GameLogic.cs: http://dl.dropbox.com/u/46945634/GameLogic.cs

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

Schema Buttons

Schema Buttons
Het schema van de knopjes, uiteraard worden er ook weerstanden bijgevoegd om kortsluiting te voorkomen.