{"id":17299968,"url":"https://github.com/f4exb/libvxi11","last_synced_at":"2025-04-14T12:30:27.182Z","repository":{"id":14259437,"uuid":"16967108","full_name":"f4exb/libvxi11","owner":"f4exb","description":"VXI-11 instruments access library","archived":false,"fork":false,"pushed_at":"2014-02-20T03:07:05.000Z","size":444,"stargazers_count":13,"open_issues_count":1,"forks_count":5,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-28T01:48:00.994Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/f4exb.png","metadata":{"files":{"readme":"README","changelog":"ChangeLog","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-02-18T23:02:58.000Z","updated_at":"2025-03-25T03:37:28.000Z","dependencies_parsed_at":"2022-08-31T16:50:31.127Z","dependency_job_id":null,"html_url":"https://github.com/f4exb/libvxi11","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f4exb%2Flibvxi11","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f4exb%2Flibvxi11/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f4exb%2Flibvxi11/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f4exb%2Flibvxi11/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/f4exb","download_url":"https://codeload.github.com/f4exb/libvxi11/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248881227,"owners_count":21176817,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-15T11:24:58.003Z","updated_at":"2025-04-14T12:30:27.141Z","avatar_url":"https://github.com/f4exb.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"--- Introduction: ---\n\nThis is basically the VXI11Discovery project at https://github.com/mgmarino/VXI11Discovery re-organized to have the code for discovery and handling of VXI11 devices altogether in the same project using autotools. \n\nVXI11 handling code itself that is included as a sub project of VXI11Discovery is a patched version of Steve Sharples' VXI11 ethernet protocol library, availble at:\nhttp://optics.eee.nottingham.ac.uk/vxi11/\n\nIf you use Python code to access VXI11 instruments you may be interested in checking this Python native implementation:\nhttps://github.com/alexforencich/python-vxi11\n\nDoxygen documentation may be found here: http://f4exb.free.fr/libvxi11/doc/html/\n\n\n\n--- Building: ---\n\nPrerequisites: \na. autoconf and automake (the \"autotools\")\nb. rpcgen (the RPC code generator)\nc. compiler ...\n\n1. Clone this repository with git clone\n2. In your local copy of the repository run the ./bootstrap.sh command\n3. Create a build directory. Ex: /opt/build/libvxi11\n4. cd /opt/build/libvxi11\n5. Assuming:\n   - /opt/install/libvxi11 is where you want to install the library \n   - /shared/development/github/libvxi11 is your local copy of the repository\n   do:\n   - /shared/development/github/libvxi11/configure --prefix=/opt/install/libvxi11\n   - make (you may use the -j command to speed up things)\n   - make install\n\n\n\n--- The original Discovery code README is the following: ---\n\nThis distribution provides code to demonstrate how one broadcasts to find\ndevices with certain services.  The code was originally written to search for\nVXI11 devices, but is general to look for other devices with PROG and VERSION\nnumbers.  This code provides: \n\n\n/*\n * The following is based on clnt_broadcast, with important differences that it\n * is only searching for devices which have the requested services.  There is\n * also a timeout variable which doesn't normally exist in clnt_broadcast.  If\n * found_callback is non NULL, this function is called when a device is found\n * with the requested service.\n */\nclnt_find_services(uint32_t prog, uint32_t vers, uint32_t proc, \n                   struct timeval *t, resultfoundproc_t found_callback);\n\n\nwhich is based on Apple's open source clnt_broadcast available in\nrpc.subproj/pmap_rmt.c at:\n\nhttp://www.opensource.apple.com/source/Libinfo/Libinfo-324/rpc.subproj/ \n\nBecause of this the two files:\n\nclnt_find_services.h clnt_find_services.c\n\nare subject to the open-source license specified in those files.  There is an additional file:\n\nexample.cc \n\nwhich searches a local subnet and outputs information on the VXI11 devices\nconnected using the VXI11 devices access code from Steve Sharples' patched code.  \nThis file is released under GPL 3.0 license meaning you can use it for whatever (including inspiration).\n\n\u003e ./example\nExample output:\n Found: 192.168.1.29 : TCP 1024; UDP 0\n  Output: Agilent Technologies,33220A,MY44036260,2.02-2.02-22-2\n\n Found: 192.168.1.30 : TCP 1024; UDP 0\n  Output: THURLBY THANDAR, CPX400DP,  355211, 1.01 - 3.00\n\nCompatibility: This has been tested on Mac OS X systems (Lion) and on Ubuntu. \n\n\n\n--- The original VXI11 devices handling code README from Steve Sharples' repository is the following: ---\n\nRPC PROTOCOL FOR COMMUNICATING WITH VXI11-ENABLED DEVICES OVER ETHERNET FROM LINUX\n==================================================================================\n(including instruments such as oscilloscopes, by manufacturers such as\nAgilent and Tektronix, amongst others).\n\nBy Steve D. Sharples, June 2006.\n\nThis is a collection of source code that will allow you to talk to ethernet-\nenabled instruments that use the VXI11 protocol, from Linux. This includes\na wide range of instruments (including oscilloscopes, logic analysers, \nfunction generators etc) by a wide range of manufacturers (including \nTektronix and Agilent to name just a couple). An interactive \"send and \nreceive\" utility is included as an example.\n\nYou may want to build on to this libraries for your specific instruments - \nI'm currently working on libraries for talking to Agilent Infiniium scopes,\nand will probably do the same for Tektronix scopes too. Basically if you've\ngot a Programmer's Reference for your instrument, and this code, you should\nbe able to cobble something together.\n\nThis collection of code has been produced because I grew frustrated at how\ndifficult it seemed to be to do a relatively simple task. None of the \nmajor manufacturers had any \"out of the box\" Linux solutions to talking to\ntheir instruments (although often I would talk to technical folks who would\ntry their best to help). One of the solutions offered was to use something\ncalled NI VISA; parts of this are closed source, it was enormous, and I had\nworries about legacy issues with changing PC hardware.\n\nVia Guy McBride at Agilent, I obtained a copy of a vxi11.x RPC file similar\nto the one included here (although no-one at Agilent seemed to know or care\nwhere it came from). After lots of searching on the information superhighway\nI located what I believe is the original source (or something like it); see\nthe section on vxi11.x below. This source seems to have literally been written\nfrom the published VXI11 protocol. I also received from Agilent a simple\nexample program that showed you how to use the protocol; working from this \nand the (open) source that uses the vxi11.x that is included here, I wrote\nvxi11_cmd and the user libraries.\n\nThis collection of source code consists of:\n\n(1) vxi11.x\nThis file, vxi11.x, is the amalgamation of vxi11core.rpcl and vxi11intr.rpcl\nwhich are part of the asynDriver (R4-5) EPICS module, which, at time of\nwriting, is available from:\nhttp://www.aps.anl.gov/epics/modules/soft/asyn/index.html\nMore general information about EPICS is available from:\nhttp://www.aps.anl.gov/epics/\nThis code is open source, and is covered under the copyright notice and\nsoftware license agreement shown below, and also at:\nhttp://www.aps.anl.gov/epics/license/open.php\n\nIt is intended as a lightweight base for the vxi11 rpc protocol. If you\nrun rpcgen on this file, it will generate C files and headers, from which\nit is relatively simple to write C programs to communicate with a range\nof ethernet-enabled instruments, such as oscilloscopes and function\ngenerators by manufacturers such as Agilent and Tektronix (amongst many\nothers).\n\n(2) vxi11_user.cc (and vxi11_user.h)\nThese are (fairly) friendly user libraries. At the core are 4 key functions:\nvxi11_open(), vxi11_close(), vxi11_send() and vxi11_receive(). These allow\nyou to talk to your device. There are also some other functions that I\nconsidered to be generally useful (send_and_receive, functions for sending\nand receiving fixed length data blocks etc) that are all non-instrument-\nspecific.\n\n(3) vxi11_cmd.c\nThis is a fairly simple interactive utility that allows you to send\ncommands and queries to your vxi11-enabled instrument, which you\nlocate by way of IP address. I recommend you start with *IDN? It shows you\nhow the vxi11_user library works\n\n(4) Makefile\nType \"make\" to compile the source above. Type \"make clean\" to remove\nold object files and ./vxi11_cmd. Type \"make install\" to copy \n./vxi11_cmd to /usr/local/bin/\n\n(5) GNU_General_Public_License.txt\nFairly obvious. All programs, source, readme files etc NOT covered by any\nother license (e.g. vxi11.x, which is covered by its own open source \nlicense) are covered by this license.\n\nThese programs are free software; you can redistribute it and/or\nmodify it under the terms of the GNU General Public License\nas published by the Free Software Foundation; either version 2\nof the License, or (at your option) any later version.\n\nThese programs are distributed in the hope that they will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program; if not, write to the Free Software\nFoundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n\nThe author's email address is steve.no.spam.sharples@nottingham.ac.uk\n(you can work it out!)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ff4exb%2Flibvxi11","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ff4exb%2Flibvxi11","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ff4exb%2Flibvxi11/lists"}