
14/12/2005, 04:26
|
| | Fecha de Ingreso: diciembre-2003
Mensajes: 288
Antigüedad: 21 años, 1 mes Puntos: 0 | |
Operador & y ModBus Buenas,
EStoy trabajando con C# y el "maravilloso" protocolo Modbus.
Pues bien tengo una duada con esta operacion, no me da error pero no la acabo de ver bien
//PARA EL MODO DE FUNCIONAMIENTO//
for(electro=0;electro<this.calcular_division(this. electro_contadores);electro++)
{
int filtro=1;
int valor=valors[(this.electro_contadores*3)+1+electro];
for(int i2=0;i2<16&&i2<this.electro_contadores;i2++)
{
if ((valor & filtro)>0)//hago la operacion lógica AND bit a bit
this.lvContadores.Items[(electro*16)+i2].SubItems.Add("Manual");
else
this.lvContadores.Items[(electro*16)+i2].SubItems.Add("Automatico");
filtro=filtro<<1;
}//for
}//for
He estado busacando y el operador para hacer el AND es el '&', entonces al hacer la primera comparación tenemos 0 AND 1 q es 0 ,por lo q modo "Automatico", y luego se incrementa en filtro en 1, por lo q en la segunda y última iteración tenemos 0 AND 2, aqui se supone q sale mas grande q 0 por lo q tb es automático, pero claro de esta forma si valor=0 siempre me sale automatico, y si es valor=1 cuando hago 1 AND 1 es >0 o sea automático, pero lo q no entiendo es pq al hacer 1 AND 2 me sale <0 o sea "automático", y por otra parte, en el registro del modbus referente al modo de funcionamiento valv.(en nuestro caso el 1006) |