|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
|||
|
|||
|
Set Digital out
I've been tweaking our code and have run into a snag. I'm trying to get the eighth digital output to be able to go on and off without affecting the first. It seems the Set Dig Out vi uses a binary number to do this, which requires setting the first digital out to become zero, but at different times I want the first digital out to be on and vice versa. Is there a way of doing this, or has labview overlooked a large flaw in setting digital outs. Btw, we've only found this because if you run 2 controls on a digital output like this, it become erratic whether or not to stay on.
Thanks, Comatose |
|
#2
|
|||||
|
|||||
|
Re: Set Digital out
I'm not a programmer, and so this may not be at all helpful, but I speak Binary.
Let's say you have bits one through eight and you want to set them. Setting Bit 1 looks like this: 00000001 Setting bit 8 looks like this: 10000000 Setting both looks like this: 10000001 The first number is 1 (01h), the second number is 128 (80h), the 3rd number is 129 (81h). So, if bit 8 is set on and all the rest are off, you're sending 80h. To turn Bit 1 on without affecting bit 8, send 81h. As another example (work this out on paper) Bits 1, 5 and 8 on = 91h, and 1 and 5 only is 11h. Get it? EDIT: I see it uses a binary number like 10000001, so convert the hexadecimal values in my example above to binary. Last edited by DonRotolo : 04-04-2009 at 21:13. Reason: hex to binary conversion |
|
#3
|
||||
|
||||
|
Re: Set Digital out
It sounds like you are manually specifying a value for only Digital Output 7, converting it to an array, and sending that value to the SetDigOut VI. This could create problems, as doing that would (I think) default the other, unspecified values in the array to false, creating the situation that you have described. Instead, you'll need to use the GetDigOut VI first to obtain the current state of all your DigOuts. Convert the array to a cluster, unbundle it, and build a Boolean array, using DigOuts 0-6 for elements in the array, and specifying your 7th DigOut however you'd like as per your code. Then send the rebuilt array into the SetDigOut VI. I did a little experimentation and this worked for me, so hopefully it will solve your problems.
Last edited by Cuse : 04-04-2009 at 21:56. Reason: Did a little experimentation |
|
#4
|
|||
|
|||
|
Re: Set Digital out
Maybe I am not understanding the question completely
But If you have an Array of data already that is changing Simply use a "Replace Array Subset", set the index to 7 (DIO 8 on the DS) and the new element to True or False. This will leave the rest of the data in the Array untouched, changing only the 1 element Other wise build your array with Boolean Values. Using the Set DIO DS VI drop a "build array" In, expand it to 8 Elements (0-7) and then use Constants on the Last Output and whatever outputs you are not using for False. Then pass your data into the Outputs that fluctuate. I Hope this helps, if not send me a message or something, I have been working on the DIOs for the past couple days... Jason |
|
#5
|
||||
|
||||
|
Re: Set Digital out
Quote:
|
|
#6
|
|||
|
|||
|
Re: Set Digital out
Quote:
Thanks for the catch ![]() |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Sorting out Digital NASA TV | Billfred | General Forum | 2 | 03-12-2007 18:55 |
| pulsing digital out pins, not as fast as pwms | Generalx5 | Programming | 5 | 02-04-2007 18:52 |
| Digital out signal speed on off, almost like PWM but at max 60Hz | Generalx5 | Electrical | 2 | 27-03-2007 12:26 |
| Set Default Digital inputs to Low? How? bad Analog value? | Generalx5 | Programming | 11 | 04-01-2007 18:57 |
| Digital Caliper as a Digital Readout on Small Mill | sanddrag | Technical Discussion | 9 | 13-10-2005 22:51 |