Integer or double variants
Hello!
I want to build a Subvi, which takes a number any of parameters of different data types. My current approach is to leave the settings to be grouped in a cluster that is then analyzed in a loop:
'Cluster' is a test, 'String' and 'Digital' are indicators for the verification of values. The structure of the event is there to step in the loop.
My problem is that I need a way to discern between integers and doubles, but when I pull out them of the pole they are represented as 'digital '.
Is there a simpler solution that I missed?
Use type descriptors. Search type descriptors in the help of labview. Then use nodes properties to get for each control type descriptors.
Tags: NI Software
Similar Questions
-
ActiveX/COM adapter - how to assign a Variant to contain an integer
We use a component 3 rd-party and need to interface for TestStand using COM. The interface uses a variant of spend data in various objects. We are unable to pass an integer.
When expected contained in the variant type is a string or a double bed, the call is successful. When the expected type is an integer, the call fails. Passing a Boolean value will succeed, but only for 0 and -1.
How we can assign an integer value to a Variant? We can only find Int64() convert functions.
May be a function that returns an integer type to convert a number of TestStand (double) in an integer value, but so far, no luck.
There is currently no way to pass a 32-bit integer in a VARIANT using the ActiveX/COM adapter You can pass a 64-bit integer as you have no doubt already determined it, but teststand does not natively store numbers as the 32-bit integers and ActiveX/COM adapter currently has no way to specify a conversion of a data type Variant, so just TestStand stores the digital type it uses natively as a VARIANT.
To call this method from TestStand, you will need to write a wrapper function that performs the conversion of the required parameter and calls the method and then call the wrapper of TestStand rather function.
-Doug
-
My goal is to create a graph of waveform with the following criteria.
- Click/double click on the chart to draw the cursor at the nearest location.
- Draw a rectangle to zoom.
- Indicate a way to zoom out.
With the code below, I can double click to draw the cursor to the closest place and draw a rectangle to zoom. However, I can't figure out how to zoom out.
What I am doing wrong?
(Measurement Studio 8.5 & Visual Studio 2008)
Imports NationalInstruments
Imports NationalInstruments.UI
Imports System.DrawingPartial Public Class PlotData
Inherits System.Web.UI.PageProtected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If not IsPostBack then ' generate initial random signals
myGraph.PlotY (GenerateData (1000))
End If
End SubProtected Sub myGraph_PlotAreaClick (ByVal sender As Object, ByVal e As NationalInstruments.UI.ClickEventArgs) Handles myGraph.PlotAreaClick
Dim plotX As Double, foot As DoubleInverseMap (myGraph, provable, e.Y, plotX, foot)
myGraph.Cursors (0). MoveCursor (plotX, foot)"To display the click coordinates and plot
cursor_lbl. Text = "X:" & "Y:" & provable, e.Y & "pX:" & plotX & "pY:" & foot
End SubPrivate Shared Function GenerateData(ByVal dataLength As Integer) As Double()
Sun data (dataLength) As Double
Dim rnd As New Random()For i As Integer = 0 To dataLength - 1
Data = Tower. NextDouble() * Math.Sin ((i / 3.15))
NextReturn data
End FunctionPrivate static void InverseMap(ByVal graph As NationalInstruments.UI.WebForms.WaveformGraph, ByVal xClick As Integer, ByVal yClick As Integer, ByRef xPlot As Double, ByRef yPlot As Double)
Dim ACE Double, Double xMin xMax
Dim yMin As Double, yMax As Double
Dim plotLeft As Double, plotRight As Double
Dim plotTop As Double, plotBottom As DoublexMin = graphics. XAxes (0). Range.Minimum
xMax = graphics. XAxes (0). Range.Maximum
yMin = graphics. YAxes (0). Range.Minimum
yMax = graphics. YAxes (0). Range.MaximumWith the chart. PlotAreaBounds
plotLeft =. Left
plotRight =. Right
plotTop =. Back to top
plotBottom =. Bottom
Ends withxPlot = ((xMax-xMin) * ((xClick-plotLeft) / (plotRight - plotLeft))) + xMin
yPlot = ((yMax-yMin) * ((plotBottom-yClick) / (plotBottom - plotTop))) + yMinEnd Sub
End Class
InteractionMode = "ZoomX, ZoomY, PlotAreaClick" >
Hi Steven,
The solution that I can think of is to use a special key (i.e. Control) as well as with a mouse click to zoom out. It will take some work on your part.
The plot are click event does not provide any information on if there is a press of a key. To do this, you manually from the client-side information on the side go server you had pressed the button control key while you click. This can be done using a HTML hidden field.
How to pass the CTRL button information from the client to the server?
(1) adds a hidden field (say with the attributes id and name the value "ControlKeyPressed") inside the form that is rendered by default in the .aspx file.
(2) at the end of the form, write the key down and key events on the document.
(3) in the javascript event handlers, when you press the control key, the value of the hidden field as 'Y', in all other cases, the hidden field value is set to 'n'.
The .aspx code would look like,
onplotareaclick = "WaveformGraph1_PlotAreaClick" >
function myKeyDownHandler(e) {
if (!e) e = event;var x = document.getElementById("ControlKeyPressed");
if (e.keyCode == 17) { // check code for contro key.// If key pressed is control, then set the hidden fields value to 'Y'.
x.value = "Y";
}
else {
x.value = "N";
}
}function myKeyUpHandler(e) {
if (!e) e = event;var x = document.getElementById("ControlKeyPressed");
if (e.keyCode == 17) {// Here the control is is released, so change back the hidden field's value to 'N'.
x.value = "N";
}
}function init() {
// Attach the events.
if (document.attachEvent) {
document.attachEvent("onkeydown", myKeyDownHandler);
document.attachEvent("onkeypress", myKeyDownHandler);
document.attachEvent("onkeyup", myKeyUpHandler);
}
}// IMPORTANT: Dont forget to call the init() function once when the document is loaded.
init();
Now, when there is a PlotAreaClick event triggered on the server (here meaning the c# /VB code), the server manages the parameters that the client had sent. You can access the parameters as follows,
Dim str As String = Context.Request.Params ["ControlKeyPressed"] as string
Now, your PlotAreaClick handler would look like,
protected void WaveformGraph1_PlotAreaClick (object sender, e ClickEventArgs)
{
If (IsPlotAreaClick())
{
//--------------------------------------------------------------------------------------
Important note:
You will need to keep a stack to remember the beaches of x / axes there before setting the new ranges.
Keep the battery in a session variable or a variable application or make the battery a static variable.
First, push the current x / go to the battery.
//--------------------------------------------------------------------------------------Then, complete the tasks that you intend to do.
The new range computed value x / there axes.WaveformGraph1.XAxes [0]. Range = new range (0, 1); It's your new calculated range.
WaveformGraph1.YAxes [0]. Range = new range (0, 1); It's your new calculated range.
}
on the other
{
Pop the stack item and assign the range x / there axes.WaveformGraph1.XAxes [0]. Range = new range (0, 10); Here, you use the skip value of battery.
WaveformGraph1.YAxes [0]. Range = new range (0, 10); Here, you use the skip value of battery.
}
}Private Boolean IsPlotAreaClick()
{
Dim str As String = Context.Request.Params ["ControlKeyPressed"] as stringIf the value of the parameter is 'Y', then it means that the action was a zoom out, not a ground area click.
If (str == 'Y')
Returns false;
otherwise returns true;
}I hope this helps.
-
How to convert a 32-bit binary number or Hex
Anyone know if LabWindow CVI has a function to convert a number: integer, real, double (can be negative), binary and HEXADECIMAL? Or an example of code to perform this operation. Thank you
Dear AI S,.
Thanks for your info. It will work.
-
LV2010 novelty: constant digital DBL
I like how there is a new element added to the digital palette in LV 2010. It's a digital constant already set for double precision representation. Previously, you had only a constant digital integer. If you wanted a double, you will need to file the constant digital blue integer, then go through a right-click to change the representation of the integer to double.
Thus, it avoids a boring stage. It is very good.
But I have a question, when context-sensitive help is show for this item from the palette, what is the "(4800)" average in parentheses?
Four digit after SubVIs refers to the model of part of the connector of the Subvi. I believe that this number appears only when you have active script. The valid component of connector beaches range from 4800 to 4835 (someone correct me here...), where 4800 is the single pane terminal connector.
-
A special selection of the table of Boolean
I use Labview to prepare to use with AB CompactLogix PLC HMI. The problem for me is that I cannot select a bit special (for example to connect with a button, TRUE/FALSE) in an array of Boolean. What I can do is get a particular tag data (integer type Double) plc using OPC and convert these data into array of Boolean. The table can be represented by a series of 32 buttons (I use a card of entry type 32 PLC input fields). But I want to access only the bit 4 of table boolean and toggle an LED based on its output. How to do this? Help, please!
Leave the data type as a U32 and use the following code:
1 must be of type U32.
That should do it.
Play with this idea, also explore GOLD and XOR actions on U32.
Tone
-
problem with changing the order of tab on tab control
Hello
I am aware that the same question has been asked over three years - but I can't yet find the problem in what I'm doing...
Description: I have two controls tab, A tab with three tab and tab B with two controls on a Panel. For the following discussion, tab B is of no interest. Each tab control has several numerical indicators, of type integer and double. Now, I want to add a fourth tab control to A tab. This method works.
Following and problematic stage, in the Publisher of the IUR I select the new tab (most right) and move two positions to the left. It's still ok until I try to display a numeric value of order of tab 3 (the new tab control is left to it). I get an error in calls to SetCtrlAttribute, complain about an invalid control ID... However, I didn't touch any control over the tabs, or add a new control. In addition, I did not touch the generated include file... Visual inspection did not show any changes in the include file (the new tab control is listed only when certain controls are added)
Posting numbers on the first/far left tab control work only on 3 and 4 which are suitable for the new (and still empty) new tab will generate this error. Adding a control to the new label does not change the bahavior.
Help is appreciated!
Wolfgang
Wolfgang,
When you get the handle for your tab using GetPanelHandleFromTabPage:
GetPanelHandleFromTabPage (MainPanelHandle, PANEL_TAB, 0, & TabHandle);
the third parameter is an index for the specific tab you want to address. If you change the order of the tabs, you can change the index, too. For example, assume that you have a digital control on the third tab from left to right. You want to assign some value, so this, you:
GetPanelHandleFromTabPage (MainPanelHandle, PANEL_TAB, 2, & TabHandle);
SetCtrlVal (TabHandle, TAB_numMyNumeric, 1);
Now, you add a new tab to the left of the tab with the digital contorl. The new tab is now index 2 and the original tab is index 3. When you call:
GetPanelHandleFromTabPage (MainPanelHandle, PANEL_TAB, 2, & TabHandle);
you get the handle to the new tab. There is a control with the same ID as TAB_numMyNumeric, so that you get a runtime error.
Personally, I like to use an enumeration to my tabs so I can keep the lines:
enum {MY_FIRST_TAB, MY_SECOND_TAB, MY_THIRD_TAB,...};
So if I redesign the tabs or add a new one I just re - order enums and everything works fine. Also, I used the same names in my constants of tab, to help keep things straight:
GetPanelHandleFromTabPage (MainPanelHandle, PANEL_FIRST_TAB, MY_FIRST_TAB, & TabHandle);
Tony G.
-
Java Applet out displaying incorrectly
I'm having a problem with a program that I develop in a Java class at my local college. The program is a payroll application that takes information from the user (name, pay rate and number of hours worked) and calculates the gross or net wages that it is checked. The problem I have is that when it does the calculations it is supposed to display the output, but it only displays the first characters of each line of output torque. However, if you click anywhere on the outside of the window to resize it will display everything a shot then exit just as it is supposed to (at this stage anyway). The code is pasted below and any advice or assistance would be greatly appreciated. Thank you kindly in advance!
Published by: 842409 on March 7, 2011 09:58/* Project: Payroll applet Programmer: L. H. Date: 17 February 2011 Filename: payrollApplet.java Purpose: This project calculates the total pay for a user adjusted for overtime and tax dependent upon net pay. */ import java.applet.*; import java.awt.*; import java.awt.event.*; import java.text.DecimalFormat; public class PayrollApplet extends Applet implements ItemListener { //declare variables String name; Integer code; double rate, pay, hours, total, total1, overTime, tax; //construct components Label welcome = new Label("Welcome to Payroll"); Label nameLabel = new Label("Please enter employee name:"); TextField nameField = new TextField(20); Label timeLabel = new Label("Please enter the number of hours worked:"); TextField timeField = new TextField(3); Label rateLabel = new Label("Please enter the rate of pay for the employee:"); TextField rateField = new TextField (10); CheckboxGroup codeGroup = new CheckboxGroup(); Checkbox netBox = new Checkbox("Net Pay",false,codeGroup); Checkbox grossBox = new Checkbox("Gross Pay",false,codeGroup); Checkbox hiddenBox = new Checkbox("",true,codeGroup); Label outputLabel = new Label(""); Label outputLabel2 = new Label(""); Label outputLabel3 = new Label(""); public void init() { setBackground(Color.cyan); add(welcome); add(nameLabel); add(nameField); nameField.requestFocus(); add(timeLabel); add(timeField); add(rateLabel); add(rateField); add(netBox); netBox.addItemListener(this); add(grossBox); grossBox.addItemListener(this); add(outputLabel); add(outputLabel2); add(outputLabel3); } public void itemStateChanged(ItemEvent choice) { try { name = getName(); code = getCode(); hours = getHours(); rate = getRate(); total1 = getPay(); tax = getTax(); total = getPayTotal(); output(); } catch (NumberFormatException e) { outputLabel.setText("You must enter a number greater than zero."); timeField.setText(""); timeField.requestFocus(); } } public String getName() { String name = nameField.getText(); return name; } public int getCode() { if (netBox.getState()) code = 1; else if (grossBox.getState()) code = 2; return code; } public double getHours() { double hours = Double.parseDouble(timeField.getText()); if (hours <= 0) throw new NumberFormatException(); return hours; } public double getRate() { double rate = Double.parseDouble(rateField.getText()); if (rate <= 0) throw new NumberFormatException(); return rate; } public double getPay() { if (hours > 40) overTime = hours - 40; total1 = (hours * rate) + (overTime * (rate * 1.5)); return total1; } public double getTax() { switch(code) { case 1: if (total1 <= 750) tax = .01; else if (total1 > 750 && total1 <= 2250) tax = .02; else if (total1 > 2250 && total1 <= 3750) tax = .03; else if (total1 > 3750 && total1 <= 5250) tax = .04; else if (total1 > 5250 && total1 <= 7000) tax = .05; else tax = .06; break; case 2: tax = 0 * total1; break; } return tax; } public double getPayTotal() { total = total1 - (tax * total1); return total; } public void output() { DecimalFormat twoDigits = new DecimalFormat("$#,000.00"); outputLabel.setText("Total pay for " + name + " is " + twoDigits.format(total)); outputLabel2.setText("This is based on " + hours +" hours worked at a rate of $" + rate + " an hour plus overtime as applicable."); outputLabel3.setText("At a tax rate of " + tax); } }
The problem is that the labels used for the release initially have a small size. There are ways to add them to page layouts so that they are larger, but you're probably better off looking to use a TextArea in the first place.
And regarding your instructor who didn't know how to do to correct this simple error and ask students to code applets - make me a favor will you? Slap upside the head and say to stop pretending to be an educator. TIA.
-
[Help] Need help with php, Sql variables
I have a users table contain fiedls "old, new and total."
When file, update user DEFINED total is $total
where $total = old + $nouveauI did it, I used echo to make sure it's ok, but it's not:
/ * Variable total Count * /.
$old = ['old'] $row_rs_users;
$new = $row_rs_users ['new'];
$total = $vieux + $new;
echo $total;
If ((isset($_POST["MM_update"])) & & ($_POST ["MM_update"] == "doit_form")) {}
$updateSQL = sprintf ("UPDATE users SET total = WHERE id = %s %s",)
$total,
GetSQLValueString ($_POST ['id'], "int"));Thank you
As a part of your code, it is impossible to debug.
However, your approach is bad anyway. All you need to do is add the new value to the old in the SQL query.
$updateSQL = sprintf("UPDATE users SET total=(total+%s) WHERE id=%s", GetSQLValueString($_POST['fieldName'], "double"), GetSQLValueString($_POST['id'], "int"));
$_POST ['fieldName'] is the new value. Use the 'double' if the value contains a decimal point. If it is an integer, replace 'double' 'int '.
-
Does anyone know why I would double in pictures pictures that vary considerably in size? Who is the likely cause?
If you see this by snooping directly in the photo library file, are not!
Photos is essentially a database program. The one and the only way to manage images in the library is via the interface of Photos, or you will corrupt the database.
In addition to store the original files (if you do not ckoose to keep a local library optimized), pictures also maintains smaller, miniature to speed up the loading of the different images.
-
Is it possible to know if a control digiatal is an integer or a value of type double?
When I have the reference to a digital control, how can I find the representation of its value (for example double, Integer32,...)?
C:\Program Files (x 86) \National Instruments\LabVIEW 2015\vi.lib\Utility\Data Type\Get Type Information.vi
-
Oracle vs response column Format DOUBLE NUMBER/INTEGER
Hello
I noticed that the Oracle answers shows the testnumber which is 3144 as a double that is 3 144 but I did originally is a NUMBER (10 g) and is interpreted as a
INT in the physical mapping layer (Administration OBI).
Now, I wonder if I can change the format from 3 144 to display at 3144 on answers report directly. When I click on
the format of the column, it seems that it allows me to enter some HTML.
Any ideas?
Thank youHello
What's a double, is not just OBIEE server using, like the thousands separator or am I missing something? This is controlled on the Format of data for the column tab in the query, you can ignore it and say do not use thousands separator.
If you want to then that is the default value for this column, or the data type, you can use the record button in the bottom right of the pop-up window to save it as such.
Kind regards
Matt
-
Where to activate double bookmarking?
I want to save the save the same bookmark in 2 different folders. But when I save it to a folder, the other favorite is deleted. I guess that firefox tries to prevent the double bookmarking. Where can I activate it?
- Use bookmarks-> Union bookmarks (wording may vary for example in Firefox v4)
You are then able to copy and paste bookmarks, including dragging them with the mouse. Copy rather than simply move, if you wish.
-
Hello
I use Diadem 2012, and I have a problem to acquire a number in a text box.
IM new tiara and programming so please excuse me if my questions seem essential
My textbox is set up like this:
Variable: tolerance
VariableColIndex 1
VariableRowIndex 1
In Edit/Variables, I selected:
type: Integer
Storage mode: scalar
I received an error message when I run the dialog box:
Cannot bind to the variable dialog box (s):
tolerance: you have specified this variable with an invalid type. It's the good type: Variant
I guess I should be able to put a whole one here?
--------------------------------
In the case, I use the type variant
I define in the script: GlobalDim ('tolerance')
But when I write a number it return me '5' (the text I guess) and not the number 5.
What should I do?
Also there is another way to use data beteen dialogbox and script the use of GlobalDim in the script and set the variable manually in the dialog box?
Best regards
Frédéric
Hi Fred,.
I'm sorry, that the SUDialogs text box returns a string, so you'll need to use the CLng() command in the SUDialog to convert the value of the variable 'Tolerance' to a variant of subtype string to a variant of subtype integer. You can do this in the case of LoseFocus in the text box or the Terminate event of the SUDialog.
Alternatively, you can declare an explicit data typed variable with OdsValAlloc() or by loading a file *.vas with UserVarCompile(), you can associate a variable of integer type instead of a variable of type variant in the text box, then the SUDialog would be automatically coerce the string returned by the entire text box. In this case the SUDialog also pop up would be a dialog box error you can't control if the user enters a non-integer value in the text box.
Brad Turpin
Tiara Product Support Engineer
National Instruments
-
create table 1 d of type double
Hello
I'm not that good with the labview and when I tried to build a few examples, I got an error as in the attached picture.
Some can help me create a simple 1-d array of double type in labview2011.
Thank you.
Go to help > find examples > search for table > open example of table building.
-In the example they use digital controls by integer.
-If you want an array of type double please change the double data type instead of I32.
S ' Please check this too http://www.ni.com/white-paper/7571/en/
Maybe you are looking for
-
I've never had to enter a security code of base before emails... it's beyond frustrating; I find them really hard to decipher (they are the kind that look as if they are scribbled on) and had to register more than 10 a few times beofre I understand..
-
2012 event Dynamics recording control array
In the upgrade to LV2012, I discovered what may be a bug, or at least an incompatibility between 2011 and 2012 with respect to dynamic registration of an array of controls as opposed to individual control references. This piece of code worked in 2011
-
Pavilion g4-1100au: cannot download the driver (sp64116.exe)
Hello, I tried to download a driver for several days, but it stops downloading almost as soon as it starts. It is be the sp64116.exe file, but it seems to be a general problem with the download server. When I try with Google Chrome, it stops after ab
-
Why can't execute batch files?
Hi, this has been for a while and I would like to remedy finally listening. Whenever I have try and run a batch file, my computer will just play a sound, and nothing is displayed or shows signs of working. The sound playing is called "Critical stop"
-
What is 'playpickle '?