Jag lyckades inte så bra med att använda det färdiga .Net API:t från Dallas mot den One-wire seriekonverter jag byggde. Om det är att jag har byggt konvertern själv eller om det är min temp-sensor som gör det vet jag inte.

Men nu har jag i alla fall lyckats med att läsa av temperaturer från givaren. För att man skall kunna läsa av temperaturen måste man berätta för givaren att man vill läsa av ett nytt värde. Om man inte gör det får man det gamla värdet. I .Net-API:t finns en klass som heter TemperatureContainer med funktionen doTemperatureConvert som skall ge givaren besked om att man vill läsa av ett nytt värde. Det funkade dock inte för mig. I stället fick jag gå en nivå ner och använda funktionen putByte(0x44), där 0x44 är det samma som att konvertera temperaturen. Jag har inte lyckats lista ut varför doTemperatureConvert inte fungerar, men som et kan verka är det på grund av att jag inte har en extern strömkälla som matar one-wire nätet. Jag måste dock söka lite info om det först.

Eftersom operationen med att konvertera temperaturen nu görs på själva adaptern (alltså hela konverterns nät), måste man ange vilken typ av sensorer som skall ingå i 'omfånget'. Det görs genom att ange vilket familj som skall adresseras med kommandot

adapter.targetFamily(0x10);

där 0x10 anger att det är temperaturgivare som skall adresseras. Sedan skall en sökning efter dessa göras på nätet,

adapter.setSearchAllDevices(); 

och för att alla givera av typen skall reagera, görs ett kommando som säger att adaptern inte skall bry sig om adresserna (Skip ROM)

adapter.putByte(0xCC); 

Om man har en extern strömkälla som kan leverera ström på nätet skall man starta denna nu. Annars är det bara att göra en temperaturkonvertering och sedan läsa ut temperaturerna från givarna.

Annonser