You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1331 lines
67 KiB

1 month ago
  1. <?xml version="1.0"?>
  2. <doc>
  3. <assembly>
  4. <name>AForge.Robotics.Surveyor</name>
  5. </assembly>
  6. <members>
  7. <member name="T:AForge.Robotics.Surveyor.SRV1">
  8. <summary>
  9. Manipulation of Surveyor SRV-1 Blackfin robot/camera.
  10. </summary>
  11. <remarks>
  12. <para>The class allows to manipulate with <a href="http://www.surveyor.com/SRV_info.html">Surveyor SRV-1 Blackfin Robot</a>
  13. - getting video from its camera, manipulating motors and servos,
  14. reading ultrasonic modules' values, sending direct commands, etc.</para>
  15. <para><img src="img/robotics/srv1-robot.jpg" width="240" height="216" /></para>
  16. <para>Sample usage:</para>
  17. <code>
  18. SRV1 srv = new SRV1( );
  19. // connect to SRV-1 robot
  20. srv.Connect( "169.254.0.10", 10001 );
  21. // stop motors
  22. srv.StopMotors( );
  23. // set video resolution and quality
  24. srv.SetQuality( 7 );
  25. srv.SetResolution( SRV1.VideoResolution.Small );
  26. // get version string
  27. string version = srv.GetVersion( );
  28. // get robot's camera
  29. SRV1Camera camera = srv.GetCamera( );
  30. // set NewFrame event handler
  31. camera.NewFrame += new NewFrameEventHandler( video_NewFrame );
  32. // start the video source
  33. camera.Start( );
  34. // ...
  35. private void video_NewFrame( object sender, NewFrameEventArgs eventArgs )
  36. {
  37. // get new frame
  38. Bitmap bitmap = eventArgs.Frame;
  39. // process the frame
  40. }
  41. </code>
  42. </remarks>
  43. <seealso cref="T:AForge.Robotics.Surveyor.SRV1Camera"/>
  44. </member>
  45. <member name="T:AForge.Robotics.Surveyor.SRV1.MotorCommand">
  46. <summary>
  47. Enumeration of predefined motors' commands.
  48. </summary>
  49. <remarks><para>This enumeration defines set of motors' commands, which can
  50. be executed using <see cref="M:AForge.Robotics.Surveyor.SRV1.ControlMotors(AForge.Robotics.Surveyor.SRV1.MotorCommand)"/> method.</para>
  51. <para><note>Controlling SRV-1 motors with these commands is only possible
  52. after at least one direct motor command is sent, which is done using <see cref="M:AForge.Robotics.Surveyor.SRV1.StopMotors"/> or
  53. <see cref="M:AForge.Robotics.Surveyor.SRV1.RunMotors(System.Int32,System.Int32,System.Int32)"/> methods.</note></para>
  54. <para><note>The <b>IncreaseSpeed</b> and <b>DecreaseSpeed</b> commands do not have any effect
  55. unless another driving command is sent. In other words, these do not increase/decrease speed of
  56. current operation, but affect speed of all following commands.</note></para>
  57. <para><note>The <b>RotateLeft</b> and <b>RotateRight</b> commands may be useful only for the original
  58. <a href="http://www.surveyor.com/SRV_info.html">Surveyor SRV-1 Blackfin Robot</a>.
  59. For most of other robots, which may have different motors and moving base, these commands
  60. will not be accurate – will not rotate for 20 degrees.
  61. </note></para>
  62. </remarks>
  63. </member>
  64. <member name="F:AForge.Robotics.Surveyor.SRV1.MotorCommand.DriveForward">
  65. <summary>
  66. Robot drive forward.
  67. </summary>
  68. </member>
  69. <member name="F:AForge.Robotics.Surveyor.SRV1.MotorCommand.DriveBack">
  70. <summary>
  71. Robot drive back.
  72. </summary>
  73. </member>
  74. <member name="F:AForge.Robotics.Surveyor.SRV1.MotorCommand.DriveLeft">
  75. <summary>
  76. Robot drive left.
  77. </summary>
  78. </member>
  79. <member name="F:AForge.Robotics.Surveyor.SRV1.MotorCommand.DriveRight">
  80. <summary>
  81. Robot drive right.
  82. </summary>
  83. </member>
  84. <member name="F:AForge.Robotics.Surveyor.SRV1.MotorCommand.DriftLeft">
  85. <summary>
  86. Robot drift left.
  87. </summary>
  88. </member>
  89. <member name="F:AForge.Robotics.Surveyor.SRV1.MotorCommand.DriftRight">
  90. <summary>
  91. Robot drift right.
  92. </summary>
  93. </member>
  94. <member name="F:AForge.Robotics.Surveyor.SRV1.MotorCommand.Stop">
  95. <summary>
  96. Robot stop.
  97. </summary>
  98. </member>
  99. <member name="F:AForge.Robotics.Surveyor.SRV1.MotorCommand.DriveBackRight">
  100. <summary>
  101. Robot drive back and right.
  102. </summary>
  103. </member>
  104. <member name="F:AForge.Robotics.Surveyor.SRV1.MotorCommand.DriveBackLeft">
  105. <summary>
  106. Robot drive back and left.
  107. </summary>
  108. </member>
  109. <member name="F:AForge.Robotics.Surveyor.SRV1.MotorCommand.RotateLeft">
  110. <summary>
  111. Robot rotate left 20 degrees.
  112. </summary>
  113. </member>
  114. <member name="F:AForge.Robotics.Surveyor.SRV1.MotorCommand.RotateRight">
  115. <summary>
  116. Robot rotate right 20 degrees.
  117. </summary>
  118. </member>
  119. <member name="F:AForge.Robotics.Surveyor.SRV1.MotorCommand.IncreaseSpeed">
  120. <summary>
  121. Increase motors' speed.
  122. </summary>
  123. </member>
  124. <member name="F:AForge.Robotics.Surveyor.SRV1.MotorCommand.DecreaseSpeed">
  125. <summary>
  126. Decrease motors' speed.
  127. </summary>
  128. </member>
  129. <member name="T:AForge.Robotics.Surveyor.SRV1.VideoResolution">
  130. <summary>
  131. Enumeration of Surveyor SRV-1 Blackfin cameras resolutions.
  132. </summary>
  133. </member>
  134. <member name="F:AForge.Robotics.Surveyor.SRV1.VideoResolution.Tiny">
  135. <summary>
  136. 160x120
  137. </summary>
  138. </member>
  139. <member name="F:AForge.Robotics.Surveyor.SRV1.VideoResolution.Small">
  140. <summary>
  141. 320x240
  142. </summary>
  143. </member>
  144. <member name="F:AForge.Robotics.Surveyor.SRV1.VideoResolution.Medium">
  145. <summary>
  146. 640x480
  147. </summary>
  148. </member>
  149. <member name="F:AForge.Robotics.Surveyor.SRV1.VideoResolution.Large">
  150. <summary>
  151. 1280x1024
  152. </summary>
  153. </member>
  154. <member name="P:AForge.Robotics.Surveyor.SRV1.HostAddress">
  155. <summary>
  156. SRV-1 host address.
  157. </summary>
  158. <remarks><para>The property keeps SRV-1 IP address if the class is connected
  159. to SRV-1 Blackfin robot/camera, otherwise it equals to <see langword="null."/>.</para></remarks>
  160. </member>
  161. <member name="P:AForge.Robotics.Surveyor.SRV1.Port">
  162. <summary>
  163. SRV-1 port number.
  164. </summary>
  165. <remarks><para>The property keeps SRV-1 port number if the class is connected
  166. to SRV-1 Blackfin robot/camera, otherwise it equals to 0.</para></remarks>
  167. </member>
  168. <member name="P:AForge.Robotics.Surveyor.SRV1.IsConnected">
  169. <summary>
  170. Connection state.
  171. </summary>
  172. <remarks><para>The property equals to <see langword="true"/> if the class is connected
  173. to SRV-1 Blackfin robot/camera, otherwise it equals to <see langword="false"/>.</para>
  174. <para><note>The property is not updated by the class, when connection was lost or
  175. communication failure was detected (which results into <see cref="T:AForge.ConnectionLostException"/>
  176. exception). The property only shows status of <see cref="M:AForge.Robotics.Surveyor.SRV1.Connect(System.String,System.Int32)"/> method.</note></para>
  177. </remarks>
  178. </member>
  179. <member name="M:AForge.Robotics.Surveyor.SRV1.#ctor">
  180. <summary>
  181. Initializes a new instance of the <see cref="T:AForge.Robotics.Surveyor.SRV1"/> class.
  182. </summary>
  183. </member>
  184. <member name="M:AForge.Robotics.Surveyor.SRV1.Connect(System.String,System.Int32)">
  185. <summary>
  186. Connect to SRV-1 Blackfin robot/camera.
  187. </summary>
  188. <param name="ip">IP address of SRV-1 robot.</param>
  189. <param name="port">Port number to connect to.</param>
  190. <remarks><para>The method establishes connection to SRV-1 Blackfin robot/camera.
  191. If it succeeds then other methods can be used to manipulate the robot.</para>
  192. <para><note>The method calls <see cref="M:AForge.Robotics.Surveyor.SRV1.Disconnect"/> before making any connection
  193. attempts to make sure previous connection is closed.</note></para>
  194. </remarks>
  195. <exception cref="T:AForge.ConnectionFailedException">Failed connecting to SRV-1.</exception>
  196. </member>
  197. <member name="M:AForge.Robotics.Surveyor.SRV1.Disconnect">
  198. <summary>
  199. Disconnect from SRV-1 Blackfin robot.
  200. </summary>
  201. <remarks><para>The method disconnects from SRV-1 robot making all other methods
  202. unavailable (except <see cref="M:AForge.Robotics.Surveyor.SRV1.Connect(System.String,System.Int32)"/> method). In the case if user
  203. obtained instance of camera using <see cref="M:AForge.Robotics.Surveyor.SRV1.GetCamera"/> method, the video will
  204. be stopped automatically (and those <see cref="T:AForge.Robotics.Surveyor.SRV1Camera"/> instances should be discarded).
  205. </para></remarks>
  206. </member>
  207. <member name="M:AForge.Robotics.Surveyor.SRV1.GetCamera">
  208. <summary>
  209. Get camera object for the SRV-1 Blackfin robot/camera.
  210. </summary>
  211. <returns>Returns <see cref="T:AForge.Robotics.Surveyor.SRV1Camera"/> object, which is connected to SRV1 Blackfin camera.
  212. Use <see cref="M:AForge.Robotics.Surveyor.SRV1Camera.Start"/> method to start the camera and start receiving video
  213. frames it.</returns>
  214. <remarks><para>The method provides an instance of <see cref="T:AForge.Robotics.Surveyor.SRV1Camera"/>, which can be used
  215. for receiving continuous video frames from the SRV-1 Blackfin camera.
  216. In the case if only one image is required, the <see cref="M:AForge.Robotics.Surveyor.SRV1.GetImage"/> method can be used.</para>
  217. <para>Sample usage:</para>
  218. <code>
  219. // get SRV-1 camera
  220. SRV1Camera camera = srv.GetCamera( );
  221. // set NewFrame event handler
  222. camera.NewFrame += new NewFrameEventHandler( video_NewFrame );
  223. // start the video source
  224. camera.Start( );
  225. // ...
  226. private void video_NewFrame( object sender, NewFrameEventArgs eventArgs )
  227. {
  228. // get new frame
  229. Bitmap bitmap = eventArgs.Frame;
  230. // process the frame
  231. }
  232. </code>
  233. </remarks>
  234. <exception cref="T:AForge.NotConnectedException">Not connected to SRV-1. Connect to SRV-1 robot/camera
  235. before using this method.</exception>
  236. </member>
  237. <member name="M:AForge.Robotics.Surveyor.SRV1.Send(System.Byte[])">
  238. <summary>
  239. Enqueue communication request.
  240. </summary>
  241. <param name="request">Array of bytes (command) to send to SRV-1 Blackfin robot/camera.</param>
  242. <remarks><para>The method puts specified command into communication queue and leaves
  243. immediately. Once internal communication thread becomes free from sending/receiving previous
  244. commands/replies, it will send the queued command.</para>
  245. <para>The method is useful for those SRV-1 commands, which does not assume any response data
  246. in the command's reply.</para>
  247. <para><note>Since the method only queues a communication request, it does not provide any status
  248. of request's delivery and it does not generate any exceptions on failure.</note></para>
  249. </remarks>
  250. </member>
  251. <member name="M:AForge.Robotics.Surveyor.SRV1.SendAndReceive(System.Byte[],System.Byte[])">
  252. <summary>
  253. Enqueue communication request and wait for reply.
  254. </summary>
  255. <param name="request">Array of bytes (command) to send to SRV-1 Blackfin robot/camera.</param>
  256. <param name="responseBuffer">Buffer to read response into.</param>
  257. <returns>Returns total bytes read into the response buffer.</returns>
  258. <remarks><para>The method puts specified command into communication queue and waits until
  259. the command is sent to SRV-1 Blackfin robot and reply is received.</para>
  260. <para><note>If SRV-1 responds with more data than response buffer can fit, then
  261. the response buffer will take all the data it can store, but the rest of response
  262. will be discarded. The only exception is image request - if response buffer is too
  263. small to fit image response, then <see cref="T:System.IndexOutOfRangeException"/> exception
  264. is thrown. It is user's responsibility to provide response buffer of the correct
  265. size. Check definition of the <a href="http://www.surveyor.com/SRV_protocol.html">SRV-1
  266. Control Protocol</a> for information about supported commands and responses.</note></para>
  267. </remarks>
  268. <exception cref="T:AForge.NotConnectedException">Not connected to SRV-1.</exception>
  269. <exception cref="T:AForge.ConnectionLostException">Connection lost or communicaton failure.</exception>
  270. <exception cref="T:System.IndexOutOfRangeException">Response buffer is too small.</exception>
  271. </member>
  272. <member name="M:AForge.Robotics.Surveyor.SRV1.GetImage">
  273. <summary>
  274. Get single image from the SRV-1 Blackfin camera.
  275. </summary>
  276. <returns>Returns image received from the SRV-1 Blackfin camera or <see langword="null"/>
  277. if failed decoding provided response.</returns>
  278. <remarks><para>The method provides single video frame retrieved from the SRV-1 Blackfin
  279. camera. However in many cases it is required to receive video frames one after another, so
  280. the <see cref="M:AForge.Robotics.Surveyor.SRV1.GetCamera"/> method is more preferred for continuous video frames.</para></remarks>
  281. <exception cref="T:AForge.NotConnectedException">Not connected to SRV-1. Connect to SRV-1 before using
  282. this method.</exception>
  283. <exception cref="T:AForge.ConnectionLostException">Connection lost or communicaton failure. Try to reconnect.</exception>
  284. </member>
  285. <member name="M:AForge.Robotics.Surveyor.SRV1.GetVersion">
  286. <summary>
  287. Get SRV-1 firmware version string.
  288. </summary>
  289. <returns>Returns SRV-1 version string.</returns>
  290. <exception cref="T:AForge.NotConnectedException">Not connected to SRV-1. Connect to SRV-1 before using
  291. this method.</exception>
  292. <exception cref="T:AForge.ConnectionLostException">Connection lost or communicaton failure. Try to reconnect.</exception>
  293. </member>
  294. <member name="M:AForge.Robotics.Surveyor.SRV1.GetRunningTime">
  295. <summary>
  296. Get SRV-1 running time.
  297. </summary>
  298. <returns>Returns SRV-1 running time in milliseconds.</returns>
  299. <exception cref="T:AForge.NotConnectedException">Not connected to SRV-1. Connect to SRV-1 before using
  300. this method.</exception>
  301. <exception cref="T:AForge.ConnectionLostException">Connection lost or communicaton failure. Try to reconnect.</exception>
  302. <exception cref="T:System.ApplicationException">Failed parsing response from SRV-1.</exception>
  303. </member>
  304. <member name="M:AForge.Robotics.Surveyor.SRV1.RunMotors(System.Int32,System.Int32,System.Int32)">
  305. <summary>
  306. Run motors connected to SRV-1 robot.
  307. </summary>
  308. <param name="leftSpeed">Left motor's speed, [-127, 127].</param>
  309. <param name="rightSpeed">Right motor's speed, [-127, 127].</param>
  310. <param name="duration">Time duration to run motors measured in number
  311. of 10 milliseconds (0 for infinity), [0, 255].</param>
  312. <remarks><para>The method provides direct access to motors setting specified,
  313. speed to both motors connected to the SRV-1 robot. The maximum absolute speed
  314. equals to 127, but the sign specifies direction of motor's rotation (forward or backward).
  315. </para>
  316. <para><note>The method sends 'Mabc' SRV-1 command (see <a href="http://www.surveyor.com/SRV_protocol.html">SRV-1
  317. Control Protocol</a>), which uses 2<sup>nd</sup> and 3<sup>rd</sup> timers for
  318. controlling motors/servos.</note></para>
  319. </remarks>
  320. </member>
  321. <member name="M:AForge.Robotics.Surveyor.SRV1.StopMotors">
  322. <summary>
  323. Stop both motors.
  324. </summary>
  325. <remarks><para>The method stops both motors connected to the SRV-1 robot by calling
  326. <see cref="M:AForge.Robotics.Surveyor.SRV1.RunMotors(System.Int32,System.Int32,System.Int32)"/> method specifying 0 for motors' speed.</para></remarks>
  327. </member>
  328. <member name="M:AForge.Robotics.Surveyor.SRV1.EnableFailsafeMode(System.Int32,System.Int32)">
  329. <summary>
  330. Enables fail safe mode - setting motors' speed after timeout.
  331. </summary>
  332. <param name="leftSpeed">Left motor's speed, [-127, 127].</param>
  333. <param name="rightSpeed">Right motor's speed, [-127, 127].</param>
  334. <remarks><para>In the case if fail safe mode is enabled and no commands are received
  335. by SRV-1 robot withing 2 seconds, motors' speed will be set to the specified values. The command
  336. is very useful to instruct robot to stop if no other commands were sent
  337. within 2 last seconds (probably lost connection).</para></remarks>
  338. </member>
  339. <member name="M:AForge.Robotics.Surveyor.SRV1.DisableFailsafeMode">
  340. <summary>
  341. Disable fail safe mode.
  342. </summary>
  343. <remarks><para>The method disable fail safe mode, which was set using
  344. <see cref="M:AForge.Robotics.Surveyor.SRV1.EnableFailsafeMode(System.Int32,System.Int32)"/> method.</para></remarks>
  345. </member>
  346. <member name="M:AForge.Robotics.Surveyor.SRV1.ControlServos(System.Int32,System.Int32)">
  347. <summary>
  348. Direct servos control of SRV-1 robot.
  349. </summary>
  350. <param name="leftServo">Left servo setting, [0, 100].</param>
  351. <param name="rightServo">Right servo setting, [0, 100].</param>
  352. <remarks><para>Servo settings represent timing pulse widths ranging
  353. from 1ms to 2ms. 0 corresponds to a 1ms pulse, 100 corresponds to a 2ms pulse,
  354. and 50 is midrange with a 1.5ms pulse.</para>
  355. <para><note>The method sends 'sab' SRV-1 command (see <a href="http://www.surveyor.com/SRV_protocol.html">SRV-1
  356. Control Protocol</a>), which controls 2<sup>nd</sup> bank of servos
  357. using 6<sup>th</sup> and 7<sup>th</sup> timers.</note></para>
  358. </remarks>
  359. </member>
  360. <member name="M:AForge.Robotics.Surveyor.SRV1.ControlMotors(AForge.Robotics.Surveyor.SRV1.MotorCommand)">
  361. <summary>
  362. Control SRV-1 robot's motors using predefined commands.
  363. </summary>
  364. <param name="command">Motor command to send to the SRV-1 Blackfin robot.</param>
  365. <remarks><para><note>Controlling SRV-1 motors with this method is only available
  366. after at least one direct motor command is sent, which is done using <see cref="M:AForge.Robotics.Surveyor.SRV1.StopMotors"/> or
  367. <see cref="M:AForge.Robotics.Surveyor.SRV1.RunMotors(System.Int32,System.Int32,System.Int32)"/> methods.</note></para></remarks>
  368. </member>
  369. <member name="M:AForge.Robotics.Surveyor.SRV1.SetQuality(System.Int32)">
  370. <summary>
  371. Set video quality.
  372. </summary>
  373. <param name="quality">Video quality to set, [1, 8].</param>
  374. <remarks><para>The method sets video quality, which is specified in [1, 8] range - 1 is
  375. the highest quality level, 8 is the lowest quality level.</para>
  376. <para><note>Setting higher quality level and <see cref="M:AForge.Robotics.Surveyor.SRV1.SetResolution(AForge.Robotics.Surveyor.SRV1.VideoResolution)">resolution</see>
  377. may increase delays for other requests sent to SRV-1. So if
  378. robot is used not only for video, but also for controlling servos/motors, and higher
  379. response level is required, then do not set very high quality and resolution.
  380. </note></para>
  381. </remarks>
  382. <exception cref="T:System.ArgumentOutOfRangeException">Invalid quality level was specified.</exception>
  383. </member>
  384. <member name="M:AForge.Robotics.Surveyor.SRV1.SetResolution(AForge.Robotics.Surveyor.SRV1.VideoResolution)">
  385. <summary>
  386. Set video resolution.
  387. </summary>
  388. <param name="resolution">Video resolution to set.</param>
  389. <remarks>
  390. <para><note>Setting higher <see cref="M:AForge.Robotics.Surveyor.SRV1.SetQuality(System.Int32)">quality level</see> and resolution
  391. may increase delays for other requests sent to SRV-1. So if
  392. robot is used not only for video, but also for controlling servos/motors, and higher
  393. response level is required, then do not set very high quality and resolution.
  394. </note></para>
  395. </remarks>
  396. <exception cref="T:System.ArgumentOutOfRangeException">Invalid resolution was specified.</exception>
  397. </member>
  398. <member name="M:AForge.Robotics.Surveyor.SRV1.FlipVideo(System.Boolean)">
  399. <summary>
  400. Flip video capture or not (for use with upside-down camera).
  401. </summary>
  402. <param name="isFlipped">Specifies if video should be flipped (<see langword="true"/>),
  403. or not (<see langword="false"/>).</param>
  404. </member>
  405. <member name="M:AForge.Robotics.Surveyor.SRV1.UltrasonicPing">
  406. <summary>
  407. Ping ultrasonic ranging modules.
  408. </summary>
  409. <returns>Returns array of ranges (distances) obtained from ultrasonic sensors. The ranges
  410. are measured in inches.</returns>
  411. <remarks><para>The method sends 'p' SRV-1 command (see <a href="http://www.surveyor.com/SRV_protocol.html">SRV-1
  412. Control Protocol</a>), which gets values from ultrasonic ranging modules attached to
  413. pins 27, 28, 29, 30 with trigger on pin 18. Supports Maxbotics EZ0 and EZ1 ultrasonic modules.
  414. </para></remarks>
  415. <exception cref="T:AForge.NotConnectedException">Not connected to SRV-1. Connect to SRV-1 before using
  416. this method.</exception>
  417. <exception cref="T:AForge.ConnectionLostException">Connection lost or communicaton failure. Try to reconnect.</exception>
  418. <exception cref="T:System.ApplicationException">Failed parsing response from SRV-1.</exception>
  419. </member>
  420. <member name="M:AForge.Robotics.Surveyor.SRV1.I2CReadByte(System.Byte,System.Byte)">
  421. <summary>
  422. Read byte from I2C device.
  423. </summary>
  424. <param name="deviceID">I2C device ID (7 bit notation).</param>
  425. <param name="register">I2C device register to read.</param>
  426. <returns>Returns byte read from the specified register of the specified I2C device.</returns>
  427. <para><note>The IC2 device ID should be specified in 7 bit notation. This means that low bit of the ID
  428. is not used for specifying read/write mode as in 8 bit notation. For example, if I2C device IDs are 0x44 for reading
  429. and 0x45 for writing in 8 bit notation, then it equals to 0x22 device ID in 7 bit notation.
  430. </note></para>
  431. <exception cref="T:AForge.NotConnectedException">Not connected to SRV-1. Connect to SRV-1 before using
  432. this method.</exception>
  433. <exception cref="T:AForge.ConnectionLostException">Connection lost or communicaton failure. Try to reconnect.</exception>
  434. <exception cref="T:System.ApplicationException">Failed parsing response from SRV-1.</exception>
  435. </member>
  436. <member name="M:AForge.Robotics.Surveyor.SRV1.I2CReadWord(System.Byte,System.Byte)">
  437. <summary>
  438. Read word from I2C device.
  439. </summary>
  440. <param name="deviceID">I2C device ID (7 bit notation).</param>
  441. <param name="register">I2C device register to read.</param>
  442. <returns>Returns word read from the specified register of the specified I2C device.</returns>
  443. <para><note>The IC2 device ID should be specified in 7 bit notation. This means that low bit of the ID
  444. is not used for specifying read/write mode as in 8 bit notation. For example, if I2C device IDs are 0x44 for reading
  445. and 0x45 for writing in 8 bit notation, then it equals to 0x22 device ID in 7 bit notation.
  446. </note></para>
  447. <exception cref="T:AForge.NotConnectedException">Not connected to SRV-1. Connect to SRV-1 before using
  448. this method.</exception>
  449. <exception cref="T:AForge.ConnectionLostException">Connection lost or communicaton failure. Try to reconnect.</exception>
  450. <exception cref="T:System.ApplicationException">Failed parsing response from SRV-1.</exception>
  451. </member>
  452. <member name="M:AForge.Robotics.Surveyor.SRV1.I2CWriteByte(System.Byte,System.Byte,System.Byte)">
  453. <summary>
  454. Write byte to I2C device.
  455. </summary>
  456. <param name="deviceID">I2C device ID (7 bit notation).</param>
  457. <param name="register">I2C device register to write to.</param>
  458. <param name="byteToWrite">Byte to write to the specified register of the specified device.</param>
  459. <para><note>The IC2 device ID should be specified in 7 bit notation. This means that low bit of the ID
  460. is not used for specifying read/write mode as in 8 bit notation. For example, if I2C device IDs are 0x44 for reading
  461. and 0x45 for writing in 8 bit notation, then it equals to 0x22 device ID in 7 bit notation.
  462. </note></para>
  463. <exception cref="T:AForge.NotConnectedException">Not connected to SRV-1. Connect to SRV-1 before using
  464. this method.</exception>
  465. <exception cref="T:AForge.ConnectionLostException">Connection lost or communicaton failure. Try to reconnect.</exception>
  466. </member>
  467. <member name="M:AForge.Robotics.Surveyor.SRV1.I2CWriteWord(System.Byte,System.Byte,System.Byte,System.Byte)">
  468. <summary>
  469. Write two bytes to I2C device.
  470. </summary>
  471. <param name="deviceID">I2C device ID (7 bit notation).</param>
  472. <param name="register">I2C device register to write to.</param>
  473. <param name="firstByteToWrite">First byte to write to the specified register of the specified device.</param>
  474. <param name="secondByteToWrite">Second byte to write to the specified register of the specified device.</param>
  475. <para><note>The IC2 device ID should be specified in 7 bit notation. This means that low bit of the ID
  476. is not used for specifying read/write mode as in 8 bit notation. For example, if I2C device IDs are 0x44 for reading
  477. and 0x45 for writing in 8 bit notation, then it equals to 0x22 device ID in 7 bit notation.
  478. </note></para>
  479. <exception cref="T:AForge.NotConnectedException">Not connected to SRV-1. Connect to SRV-1 before using
  480. this method.</exception>
  481. <exception cref="T:AForge.ConnectionLostException">Connection lost or communicaton failure. Try to reconnect.</exception>
  482. </member>
  483. <member name="T:AForge.Robotics.Surveyor.SRV1Camera">
  484. <summary>
  485. Provides access to video stream from Surveyor SRV-1 Blackfin camera.
  486. </summary>
  487. <remarks><para>The class allows to continuously receive video frames from
  488. Surveyor SRV-1 Blackfin camera. It creates a background thread and periodically requests
  489. new video frames from SRV-1 robot/camera, which are provided to user through <see cref="E:AForge.Robotics.Surveyor.SRV1Camera.NewFrame"/>
  490. event. The video frame rate can be configured using <see cref="P:AForge.Robotics.Surveyor.SRV1Camera.FrameInterval"/>
  491. property, which sets time interval between frames.</para>
  492. <para>In order to get instance of this class, use <see cref="M:AForge.Robotics.Surveyor.SRV1.GetCamera"/>
  493. or <see cref="M:AForge.Robotics.Surveyor.SVS.GetCamera(AForge.Robotics.Surveyor.SVS.Camera)"/> methods.</para>
  494. <para>Sample usage:</para>
  495. <code>
  496. // get SRV-1 camera
  497. SRV1Camera camera = srv.GetCamera( );
  498. // in the case you work with Surveyor SVS board
  499. // the next line can be use
  500. // SRV1Camera camera = svs.GetCamera( SVS.Camera.Left );
  501. // set NewFrame event handler
  502. camera.NewFrame += new NewFrameEventHandler( video_NewFrame );
  503. // start the video source
  504. camera.Start( );
  505. // ...
  506. private void video_NewFrame( object sender, NewFrameEventArgs eventArgs )
  507. {
  508. // get new frame
  509. Bitmap bitmap = eventArgs.Frame;
  510. // process the frame
  511. }
  512. </code>
  513. </remarks>
  514. </member>
  515. <member name="E:AForge.Robotics.Surveyor.SRV1Camera.NewFrame">
  516. <summary>
  517. New frame event.
  518. </summary>
  519. <remarks><para>Notifies clients about new available frame from video source.</para>
  520. <para><note>Since video source may have multiple clients, each client is responsible for
  521. making a copy (cloning) of the passed video frame, because the video source disposes its
  522. own original copy after notifying of clients.</note></para>
  523. </remarks>
  524. </member>
  525. <member name="E:AForge.Robotics.Surveyor.SRV1Camera.VideoSourceError">
  526. <summary>
  527. Video source error event.
  528. </summary>
  529. <remarks>This event is used to notify clients about any type of errors occurred in
  530. video source object, for example internal exceptions.</remarks>
  531. </member>
  532. <member name="E:AForge.Robotics.Surveyor.SRV1Camera.PlayingFinished">
  533. <summary>
  534. Video playing finished event.
  535. </summary>
  536. <remarks><para>This event is used to notify clients that the video playing has finished.</para>
  537. </remarks>
  538. </member>
  539. <member name="P:AForge.Robotics.Surveyor.SRV1Camera.FrameInterval">
  540. <summary>
  541. Frame interval.
  542. </summary>
  543. <remarks><para>The property sets the interval in milliseconds betwen frames. If the property is
  544. set to 100, then the desired frame rate will be 10 frames per second.</para>
  545. <para>Default value is set to <b>0</b> - get new frames as fast as possible.</para>
  546. </remarks>
  547. </member>
  548. <member name="P:AForge.Robotics.Surveyor.SRV1Camera.Source">
  549. <summary>
  550. Video source string.
  551. </summary>
  552. <remarks>
  553. <para>The property keeps connection string, which was used to connect to SRV-1 Blackfin camera.</para>
  554. </remarks>
  555. </member>
  556. <member name="P:AForge.Robotics.Surveyor.SRV1Camera.FramesReceived">
  557. <summary>
  558. Received frames count.
  559. </summary>
  560. <remarks>Number of frames the video source provided from the moment of the last
  561. access to the property.
  562. </remarks>
  563. </member>
  564. <member name="P:AForge.Robotics.Surveyor.SRV1Camera.BytesReceived">
  565. <summary>
  566. Received bytes count.
  567. </summary>
  568. <remarks>Number of bytes the video source provided from the moment of the last
  569. access to the property.
  570. </remarks>
  571. </member>
  572. <member name="P:AForge.Robotics.Surveyor.SRV1Camera.IsRunning">
  573. <summary>
  574. State of the video source.
  575. </summary>
  576. <remarks>Current state of video source object - running or not.</remarks>
  577. </member>
  578. <member name="M:AForge.Robotics.Surveyor.SRV1Camera.Start">
  579. <summary>
  580. Start video source.
  581. </summary>
  582. <remarks>Starts video source and return execution to caller. Video source
  583. object creates background thread and notifies about new frames with the
  584. help of <see cref="E:AForge.Robotics.Surveyor.SRV1Camera.NewFrame"/> event.</remarks>
  585. <exception cref="T:AForge.NotConnectedException">Not connected to SRV-1. Connection to SRV-1
  586. was closed using <see cref="M:AForge.Robotics.Surveyor.SRV1.Disconnect"/> method. New <see cref="T:AForge.Robotics.Surveyor.SRV1Camera"/>
  587. instance must be obtained using <see cref="M:AForge.Robotics.Surveyor.SRV1.GetCamera"/> or
  588. <see cref="M:AForge.Robotics.Surveyor.SVS.GetCamera(AForge.Robotics.Surveyor.SVS.Camera)"/> methods.
  589. </exception>
  590. </member>
  591. <member name="M:AForge.Robotics.Surveyor.SRV1Camera.SignalToStop">
  592. <summary>
  593. Signal video source to stop its work.
  594. </summary>
  595. <remarks>Signals video source to stop its background thread, stop to
  596. provide new frames and free resources.</remarks>
  597. </member>
  598. <member name="M:AForge.Robotics.Surveyor.SRV1Camera.WaitForStop">
  599. <summary>
  600. Wait for video source has stopped.
  601. </summary>
  602. <remarks>Waits for video source stopping after it was signalled to stop using
  603. <see cref="M:AForge.Robotics.Surveyor.SRV1Camera.SignalToStop"/> method.</remarks>
  604. </member>
  605. <member name="M:AForge.Robotics.Surveyor.SRV1Camera.Stop">
  606. <summary>
  607. Stop video source.
  608. </summary>
  609. <remarks><para>Stops video source aborting its thread.</para>
  610. <para><note>Since the method aborts background thread, its usage is highly not preferred
  611. and should be done only if there are no other options. The correct way of stopping camera
  612. is <see cref="M:AForge.Robotics.Surveyor.SRV1Camera.SignalToStop">signaling it to stop</see> and then
  613. <see cref="M:AForge.Robotics.Surveyor.SRV1Camera.WaitForStop">waiting</see> for background thread's completion.</note></para>
  614. </remarks>
  615. </member>
  616. <member name="M:AForge.Robotics.Surveyor.SRV1Camera.Free">
  617. <summary>
  618. Free resource.
  619. </summary>
  620. </member>
  621. <member name="M:AForge.Robotics.Surveyor.SRV1Camera.SetQuality(System.Int32)">
  622. <summary>
  623. Set video quality.
  624. </summary>
  625. <param name="quality">Video quality to set, [1, 8].</param>
  626. <remarks><para>The method sets video quality, which is specified in [1, 8] range - 1 is
  627. the highest quality level, 8 is the lowest quality level.</para>
  628. <para><note>Setting higher quality level and <see cref="M:AForge.Robotics.Surveyor.SRV1Camera.SetResolution(AForge.Robotics.Surveyor.SRV1.VideoResolution)">resolution</see>
  629. may increase delays for other requests processed by <see cref="T:AForge.Robotics.Surveyor.SRV1"/> class. So if
  630. robot is used not only for video, but also for controlling servos/motors, and higher
  631. response level is required, then do not set very high quality and resolution.
  632. </note></para>
  633. </remarks>
  634. <exception cref="T:System.ArgumentOutOfRangeException">Invalid quality level was specified.</exception>
  635. </member>
  636. <member name="M:AForge.Robotics.Surveyor.SRV1Camera.SetResolution(AForge.Robotics.Surveyor.SRV1.VideoResolution)">
  637. <summary>
  638. Set video resolution.
  639. </summary>
  640. <param name="resolution">Video resolution to set.</param>
  641. <remarks>
  642. <para><note>Setting higher <see cref="M:AForge.Robotics.Surveyor.SRV1Camera.SetQuality(System.Int32)">quality level</see> and resolution
  643. may increase delays for other requests processed by <see cref="T:AForge.Robotics.Surveyor.SRV1"/> class. So if
  644. robot is used not only for video, but also for controlling servos/motors, and higher
  645. response level is required, then do not set very high quality and resolution.
  646. </note></para>
  647. </remarks>
  648. </member>
  649. <member name="M:AForge.Robotics.Surveyor.SRV1Camera.FlipVideo(System.Boolean)">
  650. <summary>
  651. Flip video capture or not (for use with upside-down camera).
  652. </summary>
  653. <param name="isFlipped">Specifies if video should be flipped (<see langword="true"/>),
  654. or not (<see langword="false"/>).</param>
  655. </member>
  656. <member name="M:AForge.Robotics.Surveyor.SRV1Camera.WorkerThread">
  657. <summary>
  658. Worker thread.
  659. </summary>
  660. </member>
  661. <member name="T:AForge.Robotics.Surveyor.SVS">
  662. <summary>
  663. Manipulation of Surveyor SVS (Stereo Vision System) board.
  664. </summary>
  665. <remarks>
  666. <para>The class allows to manipulate with <a href="http://www.surveyor.com/stereo/stereo_info.html">Surveyor SVS</a>
  667. board (stereo vision system) - getting video from both cameras, manipulating motors and servos,
  668. reading ultrasonic modules' values, sending direct commands, etc.</para>
  669. <para><img src="img/robotics/svs.jpg" width="320" height="189" /></para>
  670. <para>This class essentially creates to instances of <see cref="T:AForge.Robotics.Surveyor.SRV1"/> class to communicate
  671. with both SVS's cameras (ports 10001 and 10002 are used) and directs all calls through them.</para>
  672. <para>Sample usage:</para>
  673. <code>
  674. SVS svs = new SVS( );
  675. // connect to SVS board
  676. svs.Connect( "169.254.0.10" );
  677. // stop motors
  678. svs.StopMotors( );
  679. // set video resolution and quality
  680. svs.SetQuality( 7 );
  681. svs.SetResolution( SRV1.VideoResolution.Small );
  682. // get version string
  683. string version = svs.GetVersion( );
  684. // get left camera
  685. SRV1Camera camera = svs.GetCamera( SVS.Camera.Left );
  686. // set NewFrame event handler
  687. camera.NewFrame += new NewFrameEventHandler( video_NewFrame );
  688. // start the video source
  689. camera.Start( );
  690. // ...
  691. private void video_NewFrame( object sender, NewFrameEventArgs eventArgs )
  692. {
  693. // get new frame
  694. Bitmap bitmap = eventArgs.Frame;
  695. // process the frame
  696. }
  697. </code>
  698. </remarks>
  699. <seealso cref="T:AForge.Robotics.Surveyor.SRV1Camera"/>
  700. <seealso cref="T:AForge.Robotics.Surveyor.SRV1"/>
  701. </member>
  702. <member name="T:AForge.Robotics.Surveyor.SVS.Camera">
  703. <summary>
  704. Enumeration of SVS's Blackfin cameras.
  705. </summary>
  706. <remarks><para>Since SVS board consists of two SRV-1 Blackfin cameras, the enumeration
  707. is used by different methods to specify which one to access.</para></remarks>
  708. </member>
  709. <member name="F:AForge.Robotics.Surveyor.SVS.Camera.Left">
  710. <summary>
  711. Left camera (default port number is 10000).
  712. </summary>
  713. </member>
  714. <member name="F:AForge.Robotics.Surveyor.SVS.Camera.Right">
  715. <summary>
  716. Right camera (default port number is 10001).
  717. </summary>
  718. </member>
  719. <member name="T:AForge.Robotics.Surveyor.SVS.ServosBank">
  720. <summary>
  721. Enumeration of SVS's servos' banks.
  722. </summary>
  723. </member>
  724. <member name="F:AForge.Robotics.Surveyor.SVS.ServosBank.Bank0">
  725. <summary>
  726. First bank of the first (<see cref="F:AForge.Robotics.Surveyor.SVS.Camera.Left"/>) SRV-1 Blackfin camera,
  727. timers 2 and 3 (marked as TMR2-1 and TMR3-1 on the SVS board). Note: these
  728. timers on SVS board are supposed for controlling motors by default
  729. (see <see cref="M:AForge.Robotics.Surveyor.SVS.RunMotors(System.Int32,System.Int32,System.Int32)"/> and <see cref="M:AForge.Robotics.Surveyor.SVS.ControlMotors(AForge.Robotics.Surveyor.SRV1.MotorCommand)"/>), so use 0th
  730. servos bank only when you've done proper configuration changes on SVS side.
  731. </summary>
  732. </member>
  733. <member name="F:AForge.Robotics.Surveyor.SVS.ServosBank.Bank1">
  734. <summary>
  735. Second bank of the first (<see cref="F:AForge.Robotics.Surveyor.SVS.Camera.Left"/>) SRV-1 Blackfin camera,
  736. timers 6 and 7 (marked as TMR6-1 and TMR7-1 on the SVS board).
  737. </summary>
  738. </member>
  739. <member name="F:AForge.Robotics.Surveyor.SVS.ServosBank.Bank2">
  740. <summary>
  741. First bank of the second (<see cref="F:AForge.Robotics.Surveyor.SVS.Camera.Right"/>) SRV-1 Blackfin camera,
  742. timers 2 and 3 (marked as TMR2-2 and TMR3-2 on the SVS board).
  743. </summary>
  744. </member>
  745. <member name="F:AForge.Robotics.Surveyor.SVS.ServosBank.Bank3">
  746. <summary>
  747. Second bank of the second (<see cref="F:AForge.Robotics.Surveyor.SVS.Camera.Right"/>) SRV-1 Blackfin camera,
  748. timers 6 and 7 (marked as TMR6-2 and TMR7-2 on the SVS board).
  749. </summary>
  750. </member>
  751. <member name="P:AForge.Robotics.Surveyor.SVS.HostAddress">
  752. <summary>
  753. SVS's host address.
  754. </summary>
  755. <remarks><para>The property keeps SVS's IP address if the class is connected
  756. to SVS board, otherwise it equals to <see langword="null."/>.</para></remarks>
  757. </member>
  758. <member name="P:AForge.Robotics.Surveyor.SVS.IsConnected">
  759. <summary>
  760. Connection state.
  761. </summary>
  762. <remarks><para>The property equals to <see langword="true"/> if the class is connected
  763. to SVS board, otherwise it equals to <see langword="false"/>.</para>
  764. <para><note>The property is not updated by the class, when connection was lost or
  765. communication failure was detected (which results into <see cref="T:AForge.ConnectionLostException"/>
  766. exception). The property only shows status of <see cref="M:AForge.Robotics.Surveyor.SVS.Connect(System.String)"/> method.</note></para>
  767. </remarks>
  768. </member>
  769. <member name="M:AForge.Robotics.Surveyor.SVS.#ctor">
  770. <summary>
  771. Initializes a new instance of the <see cref="T:AForge.Robotics.Surveyor.SVS"/> class.
  772. </summary>
  773. </member>
  774. <member name="M:AForge.Robotics.Surveyor.SVS.Connect(System.String)">
  775. <summary>
  776. Connect to SVS board.
  777. </summary>
  778. <param name="ipAddress">IP address of SVS board.</param>
  779. <remarks><para>The method establishes connection to SVS board. If it succeeds then
  780. other methods can be used to manipulate the board.</para>
  781. <para><note>The method calls <see cref="M:AForge.Robotics.Surveyor.SVS.Disconnect"/> before making any connection
  782. attempts to make sure previous connection is closed.</note></para>
  783. </remarks>
  784. <exception cref="T:AForge.ConnectionFailedException">Failed connecting to SVS.</exception>
  785. </member>
  786. <member name="M:AForge.Robotics.Surveyor.SVS.Disconnect">
  787. <summary>
  788. Disconnect from SVS device.
  789. </summary>
  790. <remarks><para>The method disconnects from SVS board making all other methods
  791. unavailable (except <see cref="M:AForge.Robotics.Surveyor.SVS.Connect(System.String)"/> method). In the case if user
  792. obtained instance of left or right camera using <see cref="M:AForge.Robotics.Surveyor.SVS.GetCamera(AForge.Robotics.Surveyor.SVS.Camera)"/>
  793. method, the video will be stopped automatically (and those <see cref="T:AForge.Robotics.Surveyor.SRV1Camera"/>
  794. instances should be discarded).
  795. </para></remarks>
  796. </member>
  797. <member name="M:AForge.Robotics.Surveyor.SVS.GetCamera(AForge.Robotics.Surveyor.SVS.Camera)">
  798. <summary>
  799. Get SVS's camera.
  800. </summary>
  801. <param name="camera">SVS camera to get.</param>
  802. <returns>Returns <see cref="T:AForge.Robotics.Surveyor.SRV1Camera"/> object, which is connected to SVS's Blackfin camera.
  803. Use <see cref="M:AForge.Robotics.Surveyor.SRV1Camera.Start"/> method to start the camera and start receiving video
  804. frames from it.</returns>
  805. <remarks><para>The method provides an instance of <see cref="T:AForge.Robotics.Surveyor.SRV1Camera"/>, which can be used
  806. for receiving continuous video frames from the SVS board.
  807. In the case if only one image is required, the <see cref="M:AForge.Robotics.Surveyor.SVS.GetImage(AForge.Robotics.Surveyor.SVS.Camera)"/> method can be used.</para>
  808. <para>Sample usage:</para>
  809. <code>
  810. // get SRV-1 camera
  811. SRV1Camera camera = svs.GetCamera( SVS.Camera.Left );
  812. // set NewFrame event handler
  813. camera.NewFrame += new NewFrameEventHandler( video_NewFrame );
  814. // start the video source
  815. camera.Start( );
  816. // ...
  817. private void video_NewFrame( object sender, NewFrameEventArgs eventArgs )
  818. {
  819. // get new frame
  820. Bitmap bitmap = eventArgs.Frame;
  821. // process the frame
  822. }
  823. </code>
  824. </remarks>
  825. <exception cref="T:AForge.NotConnectedException">Not connected to SVS. Connect to SVS board before using
  826. this method.</exception>
  827. </member>
  828. <member name="M:AForge.Robotics.Surveyor.SVS.GetImage(AForge.Robotics.Surveyor.SVS.Camera)">
  829. <summary>
  830. Get single image from the SVS board.
  831. </summary>
  832. <param name="camera">Camera to get image from.</param>
  833. <returns>Returns image received from the specified camera of the SVS board or
  834. <see langword="null"/> if failed decoding provided response.</returns>
  835. <remarks><para>The method provides single video frame retrieved from the specified SVS's
  836. camera. However in many cases it is required to receive video frames one after another, so
  837. the <see cref="M:AForge.Robotics.Surveyor.SVS.GetCamera(AForge.Robotics.Surveyor.SVS.Camera)"/> method is more preferred for continuous video frames.</para></remarks>
  838. <exception cref="T:AForge.NotConnectedException">Not connected to SRV-1. Connect to SRV-1 before using
  839. this method.</exception>
  840. <exception cref="T:AForge.ConnectionLostException">Connection lost or communicaton failure. Try to reconnect.</exception>
  841. </member>
  842. <member name="M:AForge.Robotics.Surveyor.SVS.GetDirectAccessToSRV1(AForge.Robotics.Surveyor.SVS.Camera)">
  843. <summary>
  844. Get direct access to one of the SVS's SRV-1 Blackfin cameras.
  845. </summary>
  846. <param name="camera">SRV-1 Blackfin to get direct access to.</param>
  847. <returns>Returns <see cref="T:AForge.Robotics.Surveyor.SRV1"/> object connected to the requested
  848. SRV-1 Blackfin camera.</returns>
  849. <remarks><para>The method provides direct access to one of the SVS's SRV-1
  850. Blackfin cameras, so it could be possible to send some direct commands to it
  851. using <see cref="M:AForge.Robotics.Surveyor.SRV1.Send(System.Byte[])"/> and <see cref="M:AForge.Robotics.Surveyor.SRV1.SendAndReceive(System.Byte[],System.Byte[])"/> methods.</para></remarks>
  852. <exception cref="T:AForge.NotConnectedException">Not connected to SVS. Connect to SVS board before using
  853. this method.</exception>
  854. </member>
  855. <member name="M:AForge.Robotics.Surveyor.SVS.GetVersion">
  856. <summary>
  857. Get SVS board's firmware version string.
  858. </summary>
  859. <returns>Returns SVS's version string.</returns>
  860. <exception cref="T:AForge.NotConnectedException">Not connected to SVS. Connect to SVS board before using
  861. this method.</exception>
  862. <exception cref="T:AForge.ConnectionLostException">Connection lost or communicaton failure. Try to reconnect.</exception>
  863. </member>
  864. <member name="M:AForge.Robotics.Surveyor.SVS.GetRunningTime">
  865. <summary>
  866. Get SVS's board's running time.
  867. </summary>
  868. <returns>Returns SVS boards running time in milliseconds.</returns>
  869. <exception cref="T:AForge.NotConnectedException">Not connected to SVS. Connect to SVS board before using
  870. this method.</exception>
  871. <exception cref="T:AForge.ConnectionLostException">Connection lost or communicaton failure. Try to reconnect.</exception>
  872. <exception cref="T:System.ApplicationException">Failed parsing response from SVS.</exception>
  873. </member>
  874. <member name="M:AForge.Robotics.Surveyor.SVS.RunMotors(System.Int32,System.Int32,System.Int32)">
  875. <summary>
  876. Run motors connected to the SVS board.
  877. </summary>
  878. <param name="leftSpeed">Left motor's speed, [-127, 127].</param>
  879. <param name="rightSpeed">Right motor's speed, [-127, 127].</param>
  880. <param name="duration">Time duration to run motors measured in number
  881. of 10 milliseconds (0 for infinity), [0, 255].</param>
  882. <remarks><para>The method sets specified speed to both motors connected to
  883. the SVS board. The maximum absolute speed equals to 127, but the sign specifies
  884. direction of motor's rotation (forward or backward).
  885. </para></remarks>
  886. <exception cref="T:AForge.NotConnectedException">Not connected to SVS. Connect to SVS board before using
  887. this method.</exception>
  888. </member>
  889. <member name="M:AForge.Robotics.Surveyor.SVS.StopMotors">
  890. <summary>
  891. Stop both motors.
  892. </summary>
  893. <remarks><para>The method stops both motors connected to the SVS board by calling
  894. <see cref="M:AForge.Robotics.Surveyor.SVS.RunMotors(System.Int32,System.Int32,System.Int32)"/> method specifying 0 for motors' speed.</para></remarks>
  895. <exception cref="T:AForge.NotConnectedException">Not connected to SVS. Connect to SVS board before using
  896. this method.</exception>
  897. </member>
  898. <member name="M:AForge.Robotics.Surveyor.SVS.EnableFailsafeMode(System.Int32,System.Int32)">
  899. <summary>
  900. Enables fail safe mode - setting motors' speed after timeout.
  901. </summary>
  902. <param name="leftSpeed">Left motor's speed, [-127, 127].</param>
  903. <param name="rightSpeed">Right motor's speed, [-127, 127].</param>
  904. <remarks><para>In the case if fail safe mode is enabled and no commands are received
  905. by SVS robot withing 2 seconds, motors' speed will be set to the specified values. The command
  906. is very useful to instruct robot to stop if no other commands were sent
  907. within 2 last seconds (probably lost connection).</para></remarks>
  908. <exception cref="T:AForge.NotConnectedException">Not connected to SVS. Connect to SVS board before using
  909. this method.</exception>
  910. </member>
  911. <member name="M:AForge.Robotics.Surveyor.SVS.DisableFailsafeMode">
  912. <summary>
  913. Disable fail safe mode.
  914. </summary>
  915. <remarks><para>The method disable fail safe mode, which was set using
  916. <see cref="M:AForge.Robotics.Surveyor.SVS.EnableFailsafeMode(System.Int32,System.Int32)"/> method.</para></remarks>
  917. <exception cref="T:AForge.NotConnectedException">Not connected to SVS. Connect to SVS board before using
  918. this method.</exception>
  919. </member>
  920. <member name="M:AForge.Robotics.Surveyor.SVS.ControlMotors(AForge.Robotics.Surveyor.SRV1.MotorCommand)">
  921. <summary>
  922. Control motors connected to SVS board using predefined commands.
  923. </summary>
  924. <param name="command">Motor command to send to the SVS board.</param>
  925. <remarks><para><note>Controlling SVS motors with this method is only available
  926. after at least one direct motor command is sent, which is done using <see cref="M:AForge.Robotics.Surveyor.SVS.StopMotors"/> or
  927. <see cref="M:AForge.Robotics.Surveyor.SVS.RunMotors(System.Int32,System.Int32,System.Int32)"/> methods.</note></para></remarks>
  928. <exception cref="T:AForge.NotConnectedException">Not connected to SVS. Connect to SVS board before using
  929. this method.</exception>
  930. </member>
  931. <member name="M:AForge.Robotics.Surveyor.SVS.ControlServos(AForge.Robotics.Surveyor.SVS.ServosBank,System.Int32,System.Int32)">
  932. <summary>
  933. Direct servos control of the SVS board.
  934. </summary>
  935. <param name="servosBank">SVS's servo bank to control.</param>
  936. <param name="leftServo">Left servo setting, [0, 100].</param>
  937. <param name="rightServo">Right servo setting, [0, 100].</param>
  938. <remarks><para>The method performs servos control of the SVS board.
  939. For <see cref="F:AForge.Robotics.Surveyor.SVS.ServosBank.Bank1"/> and <see cref="F:AForge.Robotics.Surveyor.SVS.ServosBank.Bank3"/>
  940. banks it calls <see cref="M:AForge.Robotics.Surveyor.SRV1.ControlServos(System.Int32,System.Int32)"/> method for the corresponding
  941. SRV-1 Blackfin camera. In the case of <see cref="F:AForge.Robotics.Surveyor.SVS.ServosBank.Bank0"/> or <see cref="F:AForge.Robotics.Surveyor.SVS.ServosBank.Bank2"/>,
  942. the method sends 'Sab' SRV-1 command (see <a href="http://www.surveyor.com/SRV_protocol.html">SRV-1
  943. Control Protocol</a>) to the appropriate SRV-1 Blackfin camera.</para>
  944. </remarks>
  945. <exception cref="T:AForge.NotConnectedException">Not connected to SVS. Connect to SVS board before using
  946. this method.</exception>
  947. </member>
  948. <member name="M:AForge.Robotics.Surveyor.SVS.UltrasonicPing(AForge.Robotics.Surveyor.SVS.Camera)">
  949. <summary>
  950. Ping ultrasonic ranging modules.
  951. </summary>
  952. <param name="camera">SRV-1 Blackfin camera to check ultrasonic modules values.</param>
  953. <returns>Returns array of ranges (distances) obtained from ultrasonic sensors. The ranges
  954. are measured in inches.</returns>
  955. <remarks><para>The method calls <see cref="M:AForge.Robotics.Surveyor.SRV1.UltrasonicPing"/> for the specified
  956. SRV-1 Blackfin camera.</para></remarks>
  957. <exception cref="T:AForge.NotConnectedException">Not connected to SVS. Connect to SVS board before using
  958. this method.</exception>
  959. <exception cref="T:AForge.ConnectionLostException">Connection lost or communicaton failure. Try to reconnect.</exception>
  960. <exception cref="T:System.ApplicationException">Failed parsing response from SVS.</exception>
  961. </member>
  962. <member name="M:AForge.Robotics.Surveyor.SVS.I2CReadByte(AForge.Robotics.Surveyor.SVS.Camera,System.Byte,System.Byte)">
  963. <summary>
  964. Read byte from I2C device.
  965. </summary>
  966. <param name="camera">SRV-1 Blackfin camera to access I2C device on.</param>
  967. <param name="deviceID">I2C device ID (7 bit notation).</param>
  968. <param name="register">I2C device register to read.</param>
  969. <returns>Returns byte read from the specified register of the specified I2C device.</returns>
  970. <para><note>The IC2 device ID should be specified in 7 bit notation. This means that low bit of the ID
  971. is not used for specifying read/write mode as in 8 bit notation. For example, if I2C device IDs are 0x44 for reading
  972. and 0x45 for writing in 8 bit notation, then it equals to 0x22 device ID in 7 bit notation.
  973. </note></para>
  974. <exception cref="T:AForge.NotConnectedException">Not connected to SVS. Connect to SVS board before using
  975. this method.</exception>
  976. <exception cref="T:AForge.ConnectionLostException">Connection lost or communicaton failure. Try to reconnect.</exception>
  977. <exception cref="T:System.ApplicationException">Failed parsing response from SRV-1.</exception>
  978. </member>
  979. <member name="M:AForge.Robotics.Surveyor.SVS.I2CReadWord(AForge.Robotics.Surveyor.SVS.Camera,System.Byte,System.Byte)">
  980. <summary>
  981. Read word from I2C device.
  982. </summary>
  983. <param name="camera">SRV-1 Blackfin camera to access I2C device on.</param>
  984. <param name="deviceID">I2C device ID (7 bit notation).</param>
  985. <param name="register">I2C device register to read.</param>
  986. <returns>Returns word read from the specified register of the specified I2C device.</returns>
  987. <para><note>The IC2 device ID should be specified in 7 bit notation. This means that low bit of the ID
  988. is not used for specifying read/write mode as in 8 bit notation. For example, if I2C device IDs are 0x44 for reading
  989. and 0x45 for writing in 8 bit notation, then it equals to 0x22 device ID in 7 bit notation.
  990. </note></para>
  991. <exception cref="T:AForge.NotConnectedException">Not connected to SVS. Connect to SVS board before using
  992. this method.</exception>
  993. <exception cref="T:AForge.ConnectionLostException">Connection lost or communicaton failure. Try to reconnect.</exception>
  994. <exception cref="T:System.ApplicationException">Failed parsing response from SRV-1.</exception>
  995. </member>
  996. <member name="M:AForge.Robotics.Surveyor.SVS.I2CWriteByte(AForge.Robotics.Surveyor.SVS.Camera,System.Byte,System.Byte,System.Byte)">
  997. <summary>
  998. Write byte to I2C device.
  999. </summary>
  1000. <param name="camera">SRV-1 Blackfin camera to access I2C device on.</param>
  1001. <param name="deviceID">I2C device ID (7 bit notation).</param>
  1002. <param name="register">I2C device register to write to.</param>
  1003. <param name="byteToWrite">Byte to write to the specified register of the specified device.</param>
  1004. <para><note>The IC2 device ID should be specified in 7 bit notation. This means that low bit of the ID
  1005. is not used for specifying read/write mode as in 8 bit notation. For example, if I2C device IDs are 0x44 for reading
  1006. and 0x45 for writing in 8 bit notation, then it equals to 0x22 device ID in 7 bit notation.
  1007. </note></para>
  1008. <exception cref="T:AForge.NotConnectedException">Not connected to SVS. Connect to SVS board before using
  1009. this method.</exception>
  1010. <exception cref="T:AForge.ConnectionLostException">Connection lost or communicaton failure. Try to reconnect.</exception>
  1011. </member>
  1012. <member name="M:AForge.Robotics.Surveyor.SVS.I2CWriteWord(AForge.Robotics.Surveyor.SVS.Camera,System.Byte,System.Byte,System.Byte,System.Byte)">
  1013. <summary>
  1014. Write two bytes to I2C device.
  1015. </summary>
  1016. <param name="camera">SRV-1 Blackfin camera to access I2C device on.</param>
  1017. <param name="deviceID">I2C device ID (7 bit notation).</param>
  1018. <param name="register">I2C device register to write to.</param>
  1019. <param name="firstByteToWrite">First byte to write to the specified register of the specified device.</param>
  1020. <param name="secondByteToWrite">Second byte to write to the specified register of the specified device.</param>
  1021. <para><note>The IC2 device ID should be specified in 7 bit notation. This means that low bit of the ID
  1022. is not used for specifying read/write mode as in 8 bit notation. For example, if I2C device IDs are 0x44 for reading
  1023. and 0x45 for writing in 8 bit notation, then it equals to 0x22 device ID in 7 bit notation.
  1024. </note></para>
  1025. <exception cref="T:AForge.NotConnectedException">Not connected to SVS. Connect to SVS board before using
  1026. this method.</exception>
  1027. <exception cref="T:AForge.ConnectionLostException">Connection lost or communicaton failure. Try to reconnect.</exception>
  1028. </member>
  1029. <member name="M:AForge.Robotics.Surveyor.SVS.SetQuality(System.Int32)">
  1030. <summary>
  1031. Set video quality for both cameras.
  1032. </summary>
  1033. <param name="quality">Video quality to set, [1, 8].</param>
  1034. <remarks><para>The method sets video quality for both SVS cameras, which is specified in [1, 8] range - 1 is
  1035. the highest quality level, 8 is the lowest quality level.</para>
  1036. <para><note>Setting higher quality level and <see cref="M:AForge.Robotics.Surveyor.SVS.SetResolution(AForge.Robotics.Surveyor.SRV1.VideoResolution)">resolution</see>
  1037. may increase delays for other requests sent to SVS. So if
  1038. robot is used not only for video, but also for controlling servos/motors, and higher
  1039. response level is required, then do not set very high quality and resolution.
  1040. </note></para>
  1041. </remarks>
  1042. <exception cref="T:AForge.NotConnectedException">Not connected to SVS. Connect to SVS board before using
  1043. this method.</exception>
  1044. <exception cref="T:System.ArgumentOutOfRangeException">Invalid quality level was specified.</exception>
  1045. </member>
  1046. <member name="M:AForge.Robotics.Surveyor.SVS.SetResolution(AForge.Robotics.Surveyor.SRV1.VideoResolution)">
  1047. <summary>
  1048. Set video resolution for both cameras.
  1049. </summary>
  1050. <param name="resolution">Video resolution to set.</param>
  1051. <remarks>
  1052. <para><note>Setting higher <see cref="M:AForge.Robotics.Surveyor.SVS.SetQuality(System.Int32)">quality level</see> and resolution
  1053. may increase delays for other requests sent to SVS. So if
  1054. robot is used not only for video, but also for controlling servos/motors, and higher
  1055. response level is required, then do not set very high quality and resolution.
  1056. </note></para>
  1057. </remarks>
  1058. <exception cref="T:AForge.NotConnectedException">Not connected to SVS. Connect to SVS board before using
  1059. this method.</exception>
  1060. </member>
  1061. <member name="M:AForge.Robotics.Surveyor.SVS.FlipVideo(System.Boolean)">
  1062. <summary>
  1063. Flip video capture for both cameras or not (for use with upside-down camera).
  1064. </summary>
  1065. <param name="isFlipped">Specifies if video should be flipped (<see langword="true"/>),
  1066. or not (<see langword="false"/>).</param>
  1067. <exception cref="T:AForge.NotConnectedException">Not connected to SVS. Connect to SVS board before using
  1068. this method.</exception>
  1069. </member>
  1070. </members>
  1071. </doc>