i am new to c# i have been working on controlling a io card
i have no issue writing to turn on / toggle / or get status

turn on bits |= 1 << bit;
toggle bits ^= 1 << bit;

but i cannot get the item pin to turn off i do not want to use toggle because i want it
to either be on or off

now when i turn off the pin basicly unset the pins i always get a error about it setting a negative number to a ushort
any help would be greatly appreciated

bits &= ~(1 << bit);

`
//=============================================================
//program.cs these are my calls from the main program
//============================================================

                if (whatTheUserTyped == "on")
                {

                    Console.WriteLine(Control.PinOn(2,3,4,5,6));

                }



                if (whatTheUserTyped == "off")
                {


                    Console.WriteLine(Control.PinOff(4));
                }
//==========================================================                
// control.cs 
//==========================================================    

public string PinOn(int pin1)
        {
bits |= Convert.ToUInt16(1 << pin1);


return "pin on";

        }


public string PinOff(int pin1)
        {

bits &= ~(1 << 3);
WriteToCard();

return "pin off";
       }        
`

Recommended Answers

All 5 Replies

There's usually more than that. That is, not only do you set the port value as you noted but if the pin is input, output, etc. Code alone isn't enough here.

a bits is a numerics single value, either 1 or 0 that encodes a single unit of digital information. A byte is a sequence of bits; usually eight bits equal one byte.

Few things here i cant seem to understand in ur code:
-your pinon method takes only 1 argument of type int, but u seem to be passing 5 integer values.
- pinoff method takes a argument and being used at all.

It will be helpful if you could give a intro on ur io card and what exactly u are trying to achieve when u set and unset each bit.

its not the full code since it it long i have overflow meadthods that take more and more but i striped the program to barebones
to not make it a long read i included what i am doing to turn the card pins on and add off i have no issue posting
more of the code also i am working with turning the relays on and off and on the card itself you write to either offset 0 controls 0-7 and offset 4 controls 7-8, the byte itself uint16 or ushort also the code is enough only thing missing
is the WriteToCard(); function and the declared variables of bits to make this work, my main issue that i am having is using the
bitwise to unset the pin

i figured it out

bits & ~(1 << pin)

will actully work when you put it into a static int and return bits & ~(1 << pin)

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.