802.11 RTS/CTS and hidden node problem

Guys,
A little confused here.
The hidden node problem is if two nodes within a cell can hear the AP but not each other. OK.
But, when we talk about 802.11b and 802.11g backwards compatibility causing reduced throughtput in terms of bandwidth, it seems that this is always blamed on 802.11g stations having to use RTS/CTS.
But,
Even in an 802.11g only cell, dont stations still have to use RTS/CTS mechanisms for the hidden node problem?
I'm confused.com!
Thx
Ken

When 802.11b clients are associated to an 802.11g access point, the access point will turn on a protection mechanism called Request to Send/Clear to Send (RTS/CTS). Originally a mechanism for addressing the "hidden node problem" , RTS/CTS adds a degree of determinism to the otherwise multiple access network. When RTS/CTS is invoked, clients must first request access to the medium from the access point with an RTS message. Until the access point replies to the client with a CTS message, the client will refrain from accessing the medium and transmitting its data packets. When received by clients other than the one that sent the original RTS, the CTS command is interpreted as a "do not send" command, causing them to refrain from accessing the medium. One can see that this mechanism will preclude 802.11b clients from transmitting simultaneously with an 802.11g client, thereby avoiding collisions that decrease throughput due to retries. One can see that this additional RTS/CTS process adds a significant amount of protocol overhead that also results in a decrease in network throughput.
In addition to RTS/CTS, the 802.11g standard adds one other significant requirement to allow for 802.11b compatibility. In the event that a collision occurs due to simultaneous transmissions (the likelihood of which is greatly reduced due to RTS/CTS), client devices "back off" the network for a random period of time before attempting to access the medium again. The client arrives at this random period of time by selecting from a number of slots, each of which has a fixed duration. For 802.11b, there are 31 slots, each of which are 20 microseconds long. For 802.11a, there are 15 slots, each of which are nine microseconds long. 802.11a generally provides shorter backoff times than does 802.11b, which provides for better performance than 802.11a, particularly as the number of clients in a cell increases. When operating in mixed mode (operating with 802.11b clients associated) the 802.11g network will adopt 802.11b backoff times. When operating without 802.11b clients associated, the 802.11g network will adopt the higher-performance 802.11a backoff times.

Similar Messages

  • RTS/CTS and Fragmentation Thresholds

    Why does the CB21AG card not support these settings like the 350 and CB20A cards do? These settings are VERY important in my environment.

    I just got my first response from TAC on this. I asked how do I set the fragmentation and RTS threshold on the cb21ag card. The response was that I set these on the AP and I should not adjust these because they are set to optimum. I asked for the case to be escalated to someone who actually knows what and why I need to set these.
    I feel like I am dealing in the "Black Arts" when asking questions about building large scale 802.11 wireless networks and dealing with these issues.

  • TS Sequence Context and Invoke Node problems

    I have a Vi that was developed in 7.1 and TS 3.1.  I inherited this design from a past developer.  The Invoke node works fine when loaded with LV 7.1 but not when I load the Vi with LV 8.2.1.  I have gone through everything I can think of to correct the problem.  Help would be appreciated. [email protected]  (contact address to let me know you posted or you can do it directly.  Thanks in advance.
    Attachments:
    TestStand - Dist LabVIEW Test - Sequence Context.ctl ‏6 KB
    TestStand - Get Property Value (Number).vi ‏42 KB

    I just loaded this vi in 7.1, 8.2 and 8.5 and it works just fine for me. Although my TS version is 4.0. Can you expalin what you mean by it doe not work in 8.2. Does it load correctly? Have you reinstalled teststand into LV 8.2 so that you can open the TS pallette in LV 8.2? Are you running this inside of a sequence and passing the sequence context to it. It will not run correctly if a sequnce context is not passed to it from TS.
    Also you should post this in the teststand forum and not the LV forum
    Joe.
    "NOTHING IS EVER EASY"

  • RTS/CTS Problem ?

    Hi..
    I have to communicate between RS485 (NI card) to RS485 of the application board "with handshaking RTS/CTS"
    I use serial VISA of labview and set Flow Control = RTS/CTS. and I monitor the status of RTS and CTS by property node to LED.
    I espect that when I run my program first RTS should be green but it always red (no signal when I measure from Oscilloscope).
    When I connect with the board, CTS is green and I can receive some wrong data from the board !!
    I don't understand firstly, why the status of RTS is always red ? Is this behavior is correct ?
    Thanks for any kind help.

    If you are using RTS/CTS flow control, you should not be looking at the RTS state. It will always return -1. Depending on how you handle the -1 case, I could believe your LED would be either green or red (I know you said it is red) but it will never change color.
    The driver itself will properly set the state of RTS, but it's just not something we allow you to monitor, because you are not directly in control of it. If you measured the RTS signal from the pin with an oscilloscope, you should see it change when you write data with VISA Write.
    CTS, on the other hand, should always be returning a valid value. If CTS is set, your device is telling you that you have data to read. And if you get garbage, perhaps your instrument is not properly set up in RT
    S/CTS mode?
    Dan Mondrik
    National Instruments

  • On RTS-CTS & DTR-DSR pairs, which and why?

    Hello All
    Is there somewhere in the Net a good article about when and why to use the flow control RTS-CTS and/or DTR-DSR.
    I am dealing with duplex communication between two devices via RS232 and I would like to know when and why to control those lines.
    I also found three types of Null-Modem cables and all it is connected with the control of those lines.
    Where I can read about it?
    Thanks in advance
    Pawel

    Most RS-232 communication is full duplex, meaning you can transmit and receive at the same time. RS-232 UARTs have separate transmit and receive machines and FIFOs. The processing speed and large available memory of today's electronics (PCs as well as other devices) drastically reduce the need for hardware handshaking. I've been writing RS-232 applications for almost 20 years. I haven't used hardware handshaking for over 15 years, and that application only required it because one piece of equipment was already 30 years old.
    Hardware handshaking adds complexity to the software as well as the hardware. If you're only going a short distance, off the shelf cables include all RS-232 lines. But for longer runs, it will be easier and cheaper to run 3 or 4 conductor cabl
    e without hardware handshaking.
    If you need handshaking, consider software handshaking if your devices support XON/XOFF handshaking.
    If you do a Google search for RS-232 handshaking, you'll find plenty of links. Some of these will give you an introduction.
    http://www.airborn.com.au/rs232.html
    http://www.bb-europe.com/tech_articles/faq_rs232_connections_work.asp
    http://www.qkon.com/uploads/27_Practical%20RS232%20Design%20Considerations.pdf

  • Protecting against Virtual Jamming (RTS/CTS) attacks ?

    I am new to Wireless, and was wondering how Cisco products guard againts "Virtual Jamming" attacks where a station keeps sending RTS/CTS packets, and causes the NAV of all other stations to be reset.
    I believe that the "Rouge AP" detection / prevention mechanism infact uses this very same method to block out rouge access points.
    So what prevents a rouge station from doing the same ?
    I am also not sure if this problem is eliminated in 802.11n due to its full-duplex like behaviour ??
    Thanks

    802.11 uses CSMA/CA.
    There are 2 ways a radio will sense the medium.
    Physical Carrier Sense - is a mech that allows the radio to sense if there is transmissions on the channel
    Virtual Carrier Sense - is the use of rts-cts and cts-to-self to reserve the network with NAV timers.
    yes, you can do DoS attacks with the correct software to 'jam' the MAC later and not allowing ANY radios to talk at ALL.
    Rogue detector with the WLC does not operate in this way. It simply spoofs the rogues access point BSSID and sends deauth frames telling surrounding clients not to attach.

  • Problem with wpa and hidden ssid

    hi,
    I have a powerbook g4 (1,67ghz). i am having trouble connecting to a netgear router mr814 v3 if i use wpa and hidden ssid, i get a message, that the router would not support wpa!
    there is no problem with wep and hidden ssid or wpa with no hidden ssid.
    is also have no problems with wpa and hidden ssid with an ibook.
    the problems occur only with the powerbook with os x 10.3.9 as well as 10.4.2. even after the recent airport update, no change.
    thanks for the help,
    ben

    I would use WPA and broadcast your SSID.
    It use to be useful, but closing your Airport or wireless network (sometimes referred to as not broadcasting your SSID) is really no longer a real option when it comes to wireless security.
    Unfortunately "Closed" networks, MAC access control lists, and reduction in transmission power are all more "feel good" security rather than real security. All these various approaches are dated and mistakenly lead to overconfidence.
    WPA is your friend if you value wireless security.
    My recommendation is not to worry about broadcasting your SSID but use WPA. This will be more secure than a closed WEP encrypted network. Closing your network makes it very difficult for neighbouring networks to see which channels are free thus causing potential interference problems.
    Another thing to consider is that a closed network is still broadcasting and therefore is detectable (regardless of whether it is broadcasting a SSID). If someone was determined to hack into your network, then not broadcasting your SSID and MAC address access control is not going to stop them.
    WPA is virtually uncrackable (only really vunerable to a dictionary attack if a real word is used as a password) and therefore will stop the casual user and the determined hacker.

  • Problem while handling Parent and child nodes in CE

    Hi all
    I am facing a problem with handling Child and Parent nodes in CE.
    I have a Table in which I have drop downs. On selecting a value in the drop down, I have to take that value and do some action.
    I am trying to access the value in the following ways
    wdContext.nodeParent().currentParentElement().nodeChild().currentChildElement().getVaActivity();
    wdContext.nodeChild ().currentChildElement().getVaActivity();
    When I select the drop down from the first row of the Table the code works fine.
    But when I select other rows, it returns the current value of the first row.
    The lead selection of the parent always returns u20180u2019 even though you have done some action in row 2,3 etc.
    The same code gives the required values in EP 7.0; I.e.: it returns the values form selected row in the table.
    Basic problem is that the current value of parent always returns the first row.
    Following are the Properties of the nodes
    Parent
    Collection Cardinality: 0-n
    Singletone: true
    Child:
    Collection Cardinality: 0-n
    Singletone: false
    Please help
    Regards
    Deepu

    Hi,
       In CE changing dropdown selections doesn't fire table leadselection events. If you want to use a dropdown in a context-driven UI element like a Table, you need to use of event parameter mappings. So here are the steps:
    1. Create a new action for the onSelect event of the dropdown (I will write the code for DropDownByIndex), let's call it Select.
    2. Add a parameter parentElement whose type is same as the type of the parent node element. So from your example it would be IParentElement. Select the chek-box for "Adapt event-handler parameter". This will add a new parameter to the event-handler method onActionSelect called parentElement.
    3. Write this inside wdDoModifyView :
    if (firstTime) {
        IWDAbstractDropDownByIndex ddi = (IWDAbstractDropDownByIndex) view.getElement("<id of DropDownByIndex>");
        ddi.mappingOfOnSelect().addSourceMapping(IWDAbstractDropDownByIndex.IWDOnSelect.NODE_ELEMENT,"parentElement");
    3. If you want to set the lead selection of the table to the row where the dropdown is write this inside the event-handler:
    wdContext.nodeParent().setLeadSelection(parentElement.index()); //parentElement is the event handler parameter added through the action.
    Note that the event parameter IWDOnSelect.NODE_ELEMENT points to the node element that defines the data mapping for the containing row and not the node element of the source for the dropdown. This has been specfically  added for such a scenario. All this is well documented [here|http://help.sap.com/javadocs/nwce/current/wdr/com/sap/tc/webdynpro/clientserver/uielib/standard/api/IWDAbstractDropDownByIndex.IWDOnSelect.html#NODE_ELEMENT].
    Regards,
    Satyajit.

  • Same Channel on Different WLANs and RTS/CTS

    Hi
    I have 2 questions about physical layer of wireless lan.
    1-) Many WLANs(SSID) use same channel for communication, that means they use same frequency, what prevents the collisions between different wlans but same channel?( I am asking about RF signal collision)
    2-) Do rts and cts valid for just one wlan that computer which is generated, belongs to or do rts/cts synchronize all different wlans that use same frequency.
    Thanks.

    1.) Congestion Avoidance.  Before the client transmits, it listens to for energy on the frequency it is transmitting on.  If it hears energy, it backs off for a time.  Then listens again.
    http://en.wikipedia.org/wiki/Carrier_sense_multiple_access_with_collision_avoidance  take a look at the diagram on the left
    2.) RTS/CTS client sends the RTS, then the AP will send the CTS.
    http://en.wikipedia.org/wiki/IEEE_802.11_RTS/CTS
    HTH,
    Steve

  • Mitigating hidden nodes

    Hi,
    I have a problem with hidden nodes, in "the old days" i would use RST/CTS to try and mitigate the problem.
    I don't see that option i the WLC.
    Is the some other way to make adjustments in the WLC to mitigate problems with hidden nodes?
    /Aksel

    The overall ways to mitigate the " hidden node " are
    Increasing Transmitting Power From the Nodes
    Using Omnidirectional antennas
    Removing obstacles
    Moving the node
    Using Antenna Diversity: MIMO technology , 802.11n

  • N95 Wifi, home network and hidden access points

    Hello-
    Just picked up a N95 and having some problems. First, my home network doesn't broadcast a SSID. I stumbled across the home network option and was able to configure it. However, it's never an option when I need an internet connection; e.g., it never shows up in the wlan list.
    So, how do I congigure a hidden access point so I can use it? The user guide says you should be able to do it manually, but doesn't go into any details.
    Secondly, exactly what is the home network setting for and why is it separate from the other wlan settings?
    Thanks,
    Jay

    Jay,
    I too have a hidden network (SSID not broadcast), the N95 seems to have a problem with this. It may or may not show up on the active standby screen (on my Voda N95, it shows up when I take my sim out!).
    To configure your accesss point :-
    Tools / Settings / Connection / Access Points
    then Options / New access point
    Connection name
    (enter a name, whatever you want to call it)
    Data bearer
    =wireless LAN
    WLAN network name
    (enter your SSID here)
    Network Status
    (public or hidden)
    WLAN network mode
    (Infrastructure or ad-hoc. If you're using a router, infracstructure should be the one you want)
    WLAN security mode
    (Open, WEP, 802.1x or WPA2. Check your router)
    WLAN security settings
    WPA/WPA2
    EAP or Pre-shared key (consult your router)
    EAP plug-in settings or Pre-shared key
    (which one you get depends on what you set above)
    WPA2 only mode
    (leave alone)
    Having done all this it still won't show on the active-standy screen (at least it doesn't on mine) in the WLAN section BUT if you know try and surf the web it should ask which access point you want to use - assuming you've got it set to 'always ask'. What this seems to do is only list the connections that it can find (i.e if you've got a 'Starbucks' and a 'home' connection defined, it'll only show 'home' at home and 'Starbucks' when you're getting your latte. The standby screen may show, how to decribe it, a four leaf clover near to the battery level indicator, this is the indication that it's either found or connected to your wireless lan.
    I think the 'Home netw.' option is for use with the Home Media Server application supplied on the CD. I haven't tried it so can't confirm for sure.
    Hope this helps,
    Simon
    E&OE
    Sony CMD-Z1, Nokia 8110, Nokia 6210, Nokia 6610 (returned within a week), Nokia 6600 (twice), N95, 3109c & N97.

  • Implemented hidden nodes, Expanded state inconsistent?!

    Hi Guys, I have a rather complex JTree problem.
    I have implemented my own custom tree and nodes, with a custom model that allows hidden nodes. My nodes have an isVisible() method that is used in the model to see whether to return this node (in the getChildCount and getChild methods). This works great, and means that I can apply a filter to the tree, and it will immediately filter out a certain type of node (without having to add/remove nodes).
    I have a bit of a problem when some nodes are expanded however. If I expand a node, then change the filters so that node is invisible, the node that takes it's place becomes expanded. This would be fine, but the expansion of the node does not fire an event (and in my program this causes problems!).
    I've written the code below to give a very simple example. Just run the code, expand the 'Red' node you can see, then press 'Toggle Red'. The red node then disappears, but the blue node that takes it's place is then expanded (this is what I need to stop, or at least make that expansion of the blue node fire an event).
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.Enumeration;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTree;
    import javax.swing.event.TreeExpansionEvent;
    import javax.swing.event.TreeExpansionListener;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.tree.DefaultTreeModel;
    import javax.swing.tree.TreeNode;
    import com.talgentra.tallyman.util.properties.ApplicationProperties;
    import com.talgentra.tallyman.util.properties.VersionProperties;
    public class TreeTest extends JFrame {
         private boolean showRed = true;
         private boolean showBlue = true;
         private int expansionEvents = 0;
         private JTree tree = new JTree();
         public static void main(String[] args) throws Exception {
              VersionProperties.create(null);
              ApplicationProperties.createConfigurationInstance();
              new TreeTest();
         public TreeTest() throws Exception {
              this.setSize(200,200);
              this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
              this.getContentPane().setLayout(new BorderLayout());
              // set up toggle button
              JButton toggle = new JButton("Toggle Red");
              toggle.addActionListener(new ActionListener() {
                   public void actionPerformed(ActionEvent e) {
                        showRed = !showRed;
                        tree.updateUI();
              // set up tree
              ColorNode root = new BlueNode();
              ColorNode r1 = new RedNode();
              ColorNode r11 = new RedNode();
              ColorNode r21 = new RedNode();
              ColorNode b2 = new BlueNode();
              ColorNode b12 = new BlueNode();
              ColorNode b22 = new BlueNode();
              root.add(r1);
              root.add(b2);
              r1.add(r11);
              r1.add(b12);
              b2.add(r21);
              b2.add(b22);
              tree.setModel(new MyTreeModel(root));
              tree.addTreeExpansionListener( new TreeExpansionListener() {
                   public void treeExpanded(TreeExpansionEvent event) {
                        System.out.println("TreeExpansionEvents fired: " + expansionEvents);
                   public void treeCollapsed(TreeExpansionEvent event) {}
              this.getContentPane().add(toggle, BorderLayout.NORTH);
              this.getContentPane().add(new JScrollPane(tree), BorderLayout.CENTER);
              this.show();
         abstract class ColorNode extends DefaultMutableTreeNode {
              public ColorNode(Object o) {
                   super(o);
              public abstract boolean isVisible();
         class RedNode extends ColorNode {
              public RedNode() {
                   super("Red");
              public boolean isVisible() {
                   return showRed;
         class BlueNode extends ColorNode {
              public BlueNode() {
                   super("Blue");
              public boolean isVisible() {
                   return showBlue;
         class MyTreeModel extends DefaultTreeModel {
              public MyTreeModel(TreeNode root) {
                   super(root);
              public int getChildCount(Object parent) {
                   int childCount = 0;
                   for ( Enumeration e = ((TreeNode)parent).children(); e.hasMoreElements();) {
                        Object o = (Object) e.nextElement();
                        if (o instanceof ColorNode) {
                             ColorNode node = (ColorNode) o;
                             if ( node.isVisible() ) {
                                  childCount++;
                        } else {
                             childCount++;
                   return childCount;
              public Object getChild(Object parent, int index) {
                   DefaultMutableTreeNode node = (DefaultMutableTreeNode) parent;
                   DefaultMutableTreeNode child = null;
                   int count = 0;
                   for (int i=0; i<node.getChildCount(); i++) {
                        // if this is not a ColorNode, or is a VISIBLE ColorNode then include it
                        if (!(node.getChildAt(i) instanceof ColorNode) || ((ColorNode) node.getChildAt(i)).isVisible()) {
                                  if ( count == index ) {
                                       child = (DefaultMutableTreeNode) node.getChildAt(i);
                                       break;
                                  } else {
                                       count++;
                   return child;
    }

    As always :) , I agree with Denis.
    This is what I've been doing in the mean time. The problem is that I get the opposite behavior. Re-added nodes are collapsed by default.import javax.swing.*;
    import javax.swing.tree.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.util.*;
    public class TreeTest extends JPanel {
         private static class Property {
              public static final Property PROPERTY_RED = new Property("red");
              public static final Property PROPERTY_BLUE = new Property("blue");
              private String theText;
              private boolean theState;
              private Property(String aText) {
                   theText = aText;
                   theState = true;
              public String toString() {
                   return theText;
              public void toggleState() {
                   theState = !theState;
              public boolean getState() {
                   return theState;
         private class ColorNode implements TreeNode {
              private ColorNode theParent;
              private Property theProperty;
              private Vector theChildren;
              private int[] theIndices;
              public ColorNode(Property aProperty) {
                   theParent = null;
                   theProperty = aProperty;
                   theChildren = new Vector();
                   theIndices = new int[]{};
              public void add(ColorNode aChild) {
                   theChildren.add(aChild);
                   aChild.theParent = this;
                   update();
              public String toString() {
                   return theProperty.toString();
              private boolean isVisible() {
                   return theProperty.getState();
              public int getChildCount() {
                   return theIndices.length;
              public boolean getAllowsChildren() {
                   return true;
              public boolean isLeaf() {
                   return theIndices.length == 0;
              public Enumeration children() {
                   Vector vector = new Vector();
                   for (int i = 0; i < theIndices.length; i++) {
                        vector.add(theChildren.elementAt(theIndices));
                   return vector.elements();
              public TreeNode getParent() {
                   return theParent;
              public TreeNode getChildAt(int childIndex) {
                   return (TreeNode)theChildren.elementAt(theIndices[childIndex]);
              public int getIndex(TreeNode node) {
                   for (int i = 0; i < theIndices.length; i++) {
                        if (theChildren.elementAt(theIndices[i]) == node) return theIndices[i];
                   return -1;
              private int getChange(Property aChangedProperty) {
                   if (theProperty != aChangedProperty) return 0;
                   if (theProperty.getState()) {
                        return 1;
                   } else {
                        return -1;
              public void update(Property aChangedProperty) {
                   Vector removedIndices = new Vector();
                   Vector removedObjects = new Vector();
                   for (int i = 0; i < theIndices.length; i++) {
                        ColorNode colorNode = (ColorNode)theChildren.elementAt(theIndices[i]);
                        if (colorNode.getChange(aChangedProperty) == -1) {
                             removedIndices.add(new Integer(theIndices[i]));
                             removedObjects.add(colorNode);
                   theTreeModel.nodesWereRemoved(this,
                                                      getIndexArray(removedIndices),
                                                      (Object[])removedObjects.toArray(new Object[removedObjects.size()]));
                   Vector vect = new Vector();
                   Vector added = new Vector();
                   for (int i = 0; i < theChildren.size(); i++) {
                        ColorNode colorNode = (ColorNode)theChildren.elementAt(i);
                        if (colorNode.isVisible()) {
                             vect.add(new Integer(i));
                             if (colorNode.getChange(aChangedProperty) == 1) {
                                  added.add(new Integer(i));
                             colorNode.update(aChangedProperty);
                   theIndices = getIndexArray(vect);
                   theTreeModel.nodesWereInserted(this, getIndexArray(added));
              private int[] getIndexArray(Vector someIndices) {
                   int[] indexArray = new int[someIndices.size()];
                   for (int i = 0; i < someIndices.size(); i++) {
                        indexArray[i] = ((Integer)someIndices.elementAt(i)).intValue();
                   return indexArray;
              public void update() {
                   Vector vect = new Vector();
                   for (int i = 0; i < theChildren.size(); i++) {
                        ColorNode colorNode = (ColorNode)theChildren.elementAt(i);
                        if (colorNode.isVisible()) {
                             vect.add(new Integer(i));
                   theIndices = getIndexArray(vect);
         private class ToggleStateAction extends AbstractAction {
              private Property theProperty;
              public ToggleStateAction(Property aProperty) {
                   super("Toggle " + aProperty.toString());
                   theProperty = aProperty;
              public void actionPerformed(ActionEvent e) {
                   theProperty.toggleState();
                   ((ColorNode)theTreeModel.getRoot()).update(theProperty);
         private DefaultTreeModel theTreeModel;
         private JTree theTree;
         public TreeTest() throws Exception {
              super(new BorderLayout());
              ColorNode root = new ColorNode(Property.PROPERTY_BLUE);
              ColorNode r1 = new ColorNode(Property.PROPERTY_RED);
              ColorNode r11 = new ColorNode(Property.PROPERTY_RED);
              ColorNode r21 = new ColorNode(Property.PROPERTY_RED);
              ColorNode b2 = new ColorNode(Property.PROPERTY_BLUE);
              ColorNode b12 = new ColorNode(Property.PROPERTY_BLUE);
              ColorNode b22 = new ColorNode(Property.PROPERTY_BLUE);
              root.add(r1);
              root.add(b2);
              r1.add(r11);
              r1.add(b12);
              b2.add(r21);
              b2.add(b22);
              root.update();
              theTreeModel = new DefaultTreeModel(root);
              theTree = new JTree(theTreeModel);
              add(new JScrollPane(theTree), BorderLayout.CENTER);
              JToolBar toolBar = new JToolBar();
              toolBar.setFloatable(false);
              toolBar.add(new ToggleStateAction(Property.PROPERTY_RED));
              toolBar.add(new ToggleStateAction(Property.PROPERTY_BLUE));
              add(toolBar, BorderLayout.NORTH);
         public static void main(String[] args) throws Exception {
              final JFrame frame = new JFrame("Test Tree");
              frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              frame.setContentPane(new TreeTest());
              SwingUtilities.invokeLater(new Runnable() {
                   public void run() {
                        frame.setSize(200, 200);
                        frame.show();

  • RS232 - Timeout / RTS-CTS

    Is it possible to define a Timeout when using the "ComRdByte" Function,
    so that CVI will not break down, when no byte was send.
    I´ve also problems with the RTS/CTS-Signal. If i use them , it is not
    possible to read from the port ! There is nothing happening on these
    lines.... can you help me ?

    You can either set a timeout for read/write operations with the SetComTime function or set up a callback function to be called whenever there is a certain number of bytes at the port with the InstallComCallback function. I am a fan of using the InstallComCallback method and if you want to know exactly how to use it look at the example in the C:\MeasurementStudio\cvi\samples\rs232 directory.
    Only use the handshaking modes that are supported by the device you are connecting to. Meaning either use hardware only, software only, hardware and software, or none. All are very common. In your case it doesn't appear that hardware is working for you, so to turn it off use the SetCTSMode function to turn hardware handshaking off.
    Jason Foster
    Applications Engineer
    National Instrume
    nts
    www.ni.com/ask

  • Monitoring DTR RTS CTS

    Hello,
    I'using Labview 5.1.1
    I just want to monitor DTR RTS CTS states of my COM port.
    I think it's basic, I know Google is my friend but i've spend too much
    time trying tips that do not work.
    What is the easiest way to perform the task according to you ?
    thank you.
    Rudy

    Are you using VISA or the older serial functions? With VISA, you can do it with a VISA property node (Modem Line Settings). In your old version of LabVIEW the property node may have been called something (attribute nodes?). The other serial driver has a function called serial line ctrl.vi and it's in vi.lib>platform>_sersup.llb.

  • RTS/CTS -unicast or broadcast + Random backoff time

    Hi everybody,
    Iam reading through the frame handshake in WiFi. Also went through some of the good articles in this forum.
    I understand that to avoid collision, RST/CTS handshake is used in the wireless Air medium.
    I have attached the RTS-CTS handshake and I would like to know if these frames are unicast or broadcast.
    Since they are sent from a specific source say Wifi Client to a specifc destination say Wifi AP, i assume the RTS and CTS signals to be unicast but i dont understand then how the other wifi stations/clients will listen/get the duration (NAV)
    Also regarding the backoff time interval, I would like to know how this time is decided by the waiting clients? Say client A and Client B are waiting for the medium to be free. Both get the NAV duration as client C is using the medium. Now after the NAV time is complete, the clients A and B will wait for a backoff time.
    >how much is this random time?
    >Can both set the same backoff time say 1? >Will the clients with min backoff time will get to check the medium first.
    >What is the max time each client will get to use the medium? What if Cient C using the medium has lots of data to send. Will clients A and B have to wait till Client C finishes? OR is there a max time duration.
    Pl advise.

    Whenever a wireless client wants to send a data packet to the access point, it actually transmits a four-packet sequence called the RTS-CTS-DATA-ACK packet sequence. Each of the four 802.11 frames carries a NAV field that indicates the number of microseconds that the channel is reserved for by a wireless client. During the RTS/CTS handshake between the wireless client and access point, the wireless client sends a small RTS frame that includes a NAV interval large enough to complete the entire sequence. This includes the CTS frame, the data frame, and the subsequent acknowledgment frame from the access point.
    When the wireless client transmits its RTS packet with the NAV set, the transmitted value is used to set the NAV timers on all other wireless clients associated to the access point. The access point replies to the RTS packet from the client with a CTS packet that contains a new NAV value updated to account for the time already elapsed during the packet sequence. After the CTS packet is sent, every wireless client that can receive from the access point has updated their NAV timer and defers all transmissions until their NAV timer reaches 0. This keeps the channel free for the wireless client to complete the process of transmitting a packet to the access point.

Maybe you are looking for

  • Blue Screen of Death - Smax4pnp.exe app error

    When I boot my T61 I get the "Smax4pnp.exe app error"  and then later get the BSOD with Invalid_work_Queue_Item or no character string like the previous. I ran MS Security Essentials and it found two or three Trojans & removed them. Any idea what is

  • No communication between iMac and Samsung 4K

    I have an iMac 3.2GHz i5 w/ 16GB 1600 MHz DDR3, OS X ver. 10.9.4 I've just purchased a Samsung UD590 4K Monitor, and have it connected with a single cable from the iMacs mini DisplayPort (thunderbolt) to the standard DisplayPort into the Samsung moni

  • Reroute usb power to double output?

    I'm curious if it is possible to reroute the power from 1 USB 2.0 port to the other one...? I have a WD ext HD and the power from one is not enough to get the little thing going. This is very frustrating...! There is the option of adding a Y cable sp

  • Funtion Modules Help Needed in Balvex01

    I could not figure out how these function modules work please help me out thank you all REUSE_ALV_EXTRACT_AT_SELSCREEN REUSE_ALV_EXTRACT_AT_F4_P_EX1 REUSE_ALV_EXTRACT_AT_F4_P_EX1 REUSE_ALV_EXTRACT_SAVE REUSE_ALV_EXTRACT_LOAD

  • Bank statement - Deleted automatically

    Hi All, When we executed FF67,& selected overview button, selected co.code which the bank statment was deleted. we double click the co.code, status shows Elec:deletion ID set. we executed FEBA the date which statment was delted, getting blank. Please