shaffin Posted December 30, 2018 at 06:23 PM Posted December 30, 2018 at 06:23 PM Hello, I am using the Pascal API's in Delphi. I noticed that when I program: Conn: TIPConnection; Conn := TIPConnection.Create; Conn.Connect('127.0.0.1', 4223); The above does not throw an exception even when the StepperBrick is not plugged in via USB! It always return "true" when performing a Conn.IsConnected() Is there any premise behind this or is it something more? Thanks, Shaffin. Quote
shaffin Posted December 30, 2018 at 06:45 PM Author Posted December 30, 2018 at 06:45 PM I believe I answered my own question that the reason I am getting a success back is the fact that the Brickd is responding to the connection and not the brick! Would it be too much as for a helper function in the brick api such as TStepperBrick.Available(UID)? Thanks, Shaffin. Quote
remotecontrol Posted December 31, 2018 at 11:14 AM Posted December 31, 2018 at 11:14 AM There is an enumeration API for the connection and this returns the connected UIDs and device types. First introduction how to use enumeration is here https://www.tinkerforge.com/en/doc/Tutorials/Tutorial_Rugged/Tutorial.html#tutorial-rugged-approach And you can read the Pascal API doc (I don't use Pascal, so I have no sample). Quote
shaffin Posted January 2, 2019 at 01:32 AM Author Posted January 2, 2019 at 01:32 AM I have tried using thatand have seen some inconsistent behaviour at best. When I use enumerate I notice that every so often it times out unless I specifically call Sleep(250) after I make a call to enumerate! Has anyone else seen this behaviour? Quote
remotecontrol Posted January 3, 2019 at 02:11 PM Posted January 3, 2019 at 02:11 PM The call to ipcon_enumerate triggers callbacks and it depends on what you're doing in the callback. You should only update internal structures in the callback. The main thread should wait some time so that the callbacks are done and everything is updated. the "while (true)" from the sample is just an outline - don't use it exactly that way without wait times, this would consume 100% CPU ! Quote
remotecontrol Posted January 3, 2019 at 02:17 PM Posted January 3, 2019 at 02:17 PM To make it more precise: I trigger the enumerate callback, then wait 250ms and check how many devices are listed in my internal structures meanwhile; not enough => wait again. If there are not enough devices after for example 2 seconds I abort, there is something wrong. The enumeration is normally done quite fast (below 0.5 seconds). Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.