Page 1 of 2

Vart hittar man updaterad .Net kod?

Posted: Fri Mar 17, 2023 9:45 am
by RickardP
Jag har precis skaffat mig en Tellstick och 2st Nexa "Trådlösa mottagare för inbyggnad" och ska i helgen börja installera dessa men vart hittar man en updaterad .Net wrapper?


Dem som nämnts i forumet är ju väldigt gammla, jag vore även intresserad av att veta om det finns dokumentation för Core dll:en om man får för sig att bygga en engen wrapper.

Posted: Fri Mar 17, 2023 9:45 am
by micke.prag
Dokumentation till telldus-core hittar du här:
http://developer.telldus.se/doxygen/

Posted: Fri Mar 17, 2023 9:45 am
by RickardP
Tackar, inget om .Net programmering? Men tack för Core dokumentationen blir att programmera eget .Net program när jag fått grunden att fungera.

Posted: Fri Mar 17, 2023 9:45 am
by micke.prag
Skriver du en ny .net-wrapper får du gärna skicka det till oss. Det finns säkert fler som är intresserade av en uppdaterad variant.

Posted: Fri Mar 17, 2023 9:45 am
by RickardP
Får se hur jag gör men något kan jag säkert skriva ihop som är intressant.

Posted: Fri Mar 17, 2023 9:45 am
by thrawn
Tjena, jag har lagt upp min wrapper på google, bara att tanka hem och använda. Den har stöd för allt man kan tänkas vilja göra... (tror jag) :D

http://code.google.com/p/tellsticknet/

Posted: Fri Mar 17, 2023 9:45 am
by RickardP
thrawn wrote:Tjena, jag har lagt upp min wrapper på google, bara att tanka hem och använda. Den har stöd för allt man kan tänkas vilja göra... (tror jag) :D

http://code.google.com/p/tellsticknet/
Jo, tack fröutom att det är ett gammalt projekt så VS 2008 får lov att konvertera det de första man får göra.

Sedan har den väldigt mycket onödig kod som i alla fall inte jag kommer ha användning för så skriver en egen, kommer försöka släppa koden när jag känner mig klar med den.

Posted: Fri Mar 17, 2023 9:45 am
by naslund
thrawn wrote:Tjena, jag har lagt upp min wrapper på google, bara att tanka hem och använda. Den har stöd för allt man kan tänkas vilja göra... (tror jag) :D

http://code.google.com/p/tellsticknet/
Hej.

Jag har lånat din wrapper lite. Är ingen mästerkodare på nått sätt men fick lägga in en fix för att kunna köra den i mitt projekt. Den kanske är intressant för andra. Själv så har jag inte satt mig in i varför den behövs.

i metoden
public static ModelBase GetModel(string modelName, string protocolName)

Code: Select all

            foreach (Type t in Assembly.GetAssembly(typeof(TellStick.TellStickDevice)).GetTypes())
            {
                if(t.Namespace != null) //Ny rad för att hantera att inte alla t har ett värde på Namespace 
                        i mitt bygge av nån anledning
                {
                    if (t.Namespace.Equals("TellStick.Models") && t.BaseType == typeof(ModelBase))
                    {
                        foreach (ModelNameAttribute attribute in t.GetCustomAttributes(typeof(ModelNameAttribute), true))
                            if (attribute != null && attribute.Name.Equals(modelName, 
                                StringComparison.InvariantCultureIgnoreCase))
                                _modelType = (ModelBase)Activator.CreateInstance(t);
                    }
                }
            }
i övrigt så funkar den kanon tror jag, så tack!

Posted: Fri Mar 17, 2023 9:45 am
by micke.prag
Nu är jag ingen expert i .Net men om jag tolkar koden rätt så saknas parametern int methodsSupported i tdMethods()

Posted: Fri Mar 17, 2023 9:45 am
by thrawn
RickardP wrote:
thrawn wrote:Tjena, jag har lagt upp min wrapper på google, bara att tanka hem och använda. Den har stöd för allt man kan tänkas vilja göra... (tror jag) :D

http://code.google.com/p/tellsticknet/
Jo, tack fröutom att det är ett gammalt projekt så VS 2008 får lov att konvertera det de första man får göra.

Sedan har den väldigt mycket onödig kod som i alla fall inte jag kommer ha användning för så skriver en egen, kommer försöka släppa koden när jag känner mig klar med den.
Menar du att du får lov att konvertera projektet i VS2008? Det verkar mycket konstigt då projektet är skrivit från början i VS2008. Har inte ens haft någon annan version installerad under hela utvecklingsprocessen...

Du får ju naturligtvis göra som du själv vill, men varför inte använda den även om det är mycket "onödig" kod? Kommer ju knappast ge någon märkvärd prestandaskillnad och tanken är ju inte att du ska lägga in koden i samma projekt utan använda dig av en dll.
naslund wrote:
thrawn wrote:Tjena, jag har lagt upp min wrapper på google, bara att tanka hem och använda. Den har stöd för allt man kan tänkas vilja göra... (tror jag) :D

http://code.google.com/p/tellsticknet/
Hej.

Jag har lånat din wrapper lite. Är ingen mästerkodare på nått sätt men fick lägga in en fix för att kunna köra den i mitt projekt. Den kanske är intressant för andra. Själv så har jag inte satt mig in i varför den behövs.

i metoden
public static ModelBase GetModel(string modelName, string protocolName)

i övrigt så funkar den kanon tror jag, så tack!
Verkar lite mystiskt, du har inte lust att debugga lite kring det för att ev. hitta uppkomsten? Har du lagt in källkoden i ditt projekt eller använder du den som ett externt bilbliotek (dll). Om du har lagt in det i ditt egna projekt så är min gissning att du har klasser som du inte har i något namespace.
micke.prag wrote:Nu är jag ingen expert i .Net men om jag tolkar koden rätt så saknas parametern int methodsSupported i tdMethods()
Ohh, där ser man, kanske därför den funktionen har fungerat så dåligt för mig... :roll:
Nu var det ganska längesen som jag skrev den här wrappern så jag kommer inte ihåg alla detaljer, vad förväntas i methodsSupportet?

För övrigt ska jag lägga in de nya enheterna som ni la in i 2.02, tror även att jag inte lagt in någon "gammal" enhet heller. Annars ska wrapper vara väldigt fullständig och relativ lätt att använda.

Posted: Fri Mar 17, 2023 9:45 am
by micke.prag
thrawn wrote:
micke.prag wrote:Nu är jag ingen expert i .Net men om jag tolkar koden rätt så saknas parametern int methodsSupported i tdMethods()
Ohh, där ser man, kanske därför den funktionen har fungerat så dåligt för mig... :roll:
Nu var det ganska längesen som jag skrev den här wrappern så jag kommer inte ihåg alla detaljer, vad förväntas i methodsSupportet?
Saxar vår egen dokumentation:
TellStick can control many different types of devices that support different features. For example, a bell does not support turning the on-signal and not all lamp switches support dimming. Call tdMethods() to find out what a specific device supports:

Code: Select all

function checkFeatures( int id ) {
   int supportedMethods = TELLSTICK_TURNON | TELLSTICK_TURNOFF | TELLSTICK_BELL;
   int methods = tdMethods( id, supportedMethods );
   if ( methods & TELLSTICK_TURNON ) {
     printf( "The device %d support tdTurnOn()\n", id );
   }
   if ( methods & TELLSTICK_TURNOFF ) {
     printf( "The device %d support tdTurnOff()\n", id );
   }
   if ( methods & TELLSTICK_BELL ) {
     printf( "The device %d support tdBell()\n", id );
   }
 }
By supplying the methods the application supports, the library can be backwards compatible. Let's say that the client application only supports turning on and off. The call to query a device for it's methods should be:

int methods = tdMethods( id, TELLSTICK_TURNON | TELLSTICK_TURNOFF );
If the device in the above example is a device only supporing TELLSTICK_BELL, the library will instead return TELLSTICK_TURNON, making the client application still able to control the device. When you know which features a device supports it is safe to call the controlling functions described in Controlling functions.
Denna parametern gör så att utvecklaren som jobbar mot telldus-core inte behöver implementera alla "methods". Genom att säga till telldus-core vilka man stödjer kommer biblioteket anpassa svaren så att så många olika funktioner kommer att kunna användas ändå.
Denna parametern är därför viktigt att den inte hårdkodas i wrappern utan det är upp till programmet som använder wrappern att skicka in.

Posted: Fri Mar 17, 2023 9:45 am
by thrawn
Okej, där ser man. Blev en lite fullösning genom att man sätter en static variabel (TellStick.Base.SupportedMethods), från början så innehåller den alla metoder som wrappern använder, men man kan ändra den om man vill... På det här sättet behöver aldrig programmeraren tänka på den om den inte explicit vill ändra det, wrappern är ändå gjord för att den ska vara enkel och snabb att implementera. Den nya koden är uppladdad till googlecode. Här finns den kompilerade dll:en tillsammans med ett testprogram, jag skulle uppskatta om några provad och såg om testprogrammet detekterade rätt metoder, det syns beroende på vilka knappar som tänds och släcks.

Posted: Fri Mar 17, 2023 9:45 am
by RickardP
thrawn wrote:
RickardP wrote:
thrawn wrote:Tjena, jag har lagt upp min wrapper på google, bara att tanka hem och använda. Den har stöd för allt man kan tänkas vilja göra... (tror jag) :D

http://code.google.com/p/tellsticknet/
Jo, tack förutom att det är ett gammalt projekt så VS 2008 får lov att konvertera det de första man får göra.

Sedan har den väldigt mycket onödig kod som i alla fall inte jag kommer ha användning för så skriver en egen, kommer försöka släppa koden när jag känner mig klar med den.
Menar du att du får lov att konvertera projektet i VS2008? Det verkar mycket konstigt då projektet är skrivit från början i VS2008. Har inte ens haft någon annan version installerad under hela utvecklingsprocessen...

Du får ju naturligtvis göra som du själv vill, men varför inte använda den även om det är mycket "onödig" kod? Kommer ju knappast ge någon märkvärd prestandaskillnad och tanken är ju inte att du ska lägga in koden i samma projekt utan använda dig av en dll.
Jo, sant att jag kan bara använda DLL:en men jag kanske skrev lite klumpigt.

Jag gillar att göra saker själv :) även om det är ungefär som att upfinna hjulet, dessutom till det jag ska göra har jag ingen användning för allt som sagt och kan då lika gärna lägga det jag behöver direkt i egen kod istället för jobba mot en mellanhands dll ;-)

Posted: Fri Mar 17, 2023 9:45 am
by micke.prag
Att ha det statiskt i koden under TellStick.Base.SupportedMethods gör att parametern blir helt onödig. Jag vill starkt rekommendera dig att ta bort denna och låta slutprogrammet implementera denna som det är tänkt!

Posted: Fri Mar 17, 2023 9:45 am
by micke.prag
Tänk dig följande scenario.

En utvecklare använder din wrapper och implementerar alla methods som finns och programmet fungerar som det är tänkt.

Vi lägger till ytterligare en method vilket du också implementerar i wrappern och ändrar TellStick.Base.SupportedMethods för att reflektera detta.

Plötsligt kommer slutprogrammet få upp enheter där det inte finns några methods att styra. Genom att låta slutprogrammet alltid sätta vilka methods det programmet stödjer och inte wrappern kommer detta läge aldrig att uppstå. Kanske ska detta förtydligas i dokumentationen?