René's URL Explorer Experiment


Title: Support for "TCPIPx::aaa.bbb.ccc.ddd::ppppp::SOCKET" resources · Issue #75 · python-ivi/python-ivi · GitHub

Open Graph Title: Support for "TCPIPx::aaa.bbb.ccc.ddd::ppppp::SOCKET" resources · Issue #75 · python-ivi/python-ivi

X Title: Support for "TCPIPx::aaa.bbb.ccc.ddd::ppppp::SOCKET" resources · Issue #75 · python-ivi/python-ivi

Description: Hi, ethernet/wireless based remote control using the LXI interface allows for three different types of connection. The classic VXI-11 mode uses ONC/Sun RPC mechanism and multiple TCP ports for parallel data and control channels. This is ...

Open Graph Description: Hi, ethernet/wireless based remote control using the LXI interface allows for three different types of connection. The classic VXI-11 mode uses ONC/Sun RPC mechanism and multiple TCP ports for para...

X Description: Hi, ethernet/wireless based remote control using the LXI interface allows for three different types of connection. The classic VXI-11 mode uses ONC/Sun RPC mechanism and multiple TCP ports for para...

Opengraph URL: https://github.com/python-ivi/python-ivi/issues/75

X: @github

direct link

Domain: patch-diff.githubusercontent.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Support for \"TCPIPx::aaa.bbb.ccc.ddd::ppppp::SOCKET\" resources","articleBody":"Hi, \r\n\r\nethernet/wireless based remote control using the LXI interface allows for three different types of connection.\r\n\r\nThe classic VXI-11 mode uses ONC/Sun RPC mechanism and multiple TCP ports for parallel data and control channels. This is either implemented by a VISA driver or by a dedicated VXI-11 driver.\r\nThe instrument resource string in this case has a format like \"TCPIP0::192.168.0.1::INSTR\".\r\n\r\nHowever, the dedicated control channel and handshaking causes quite some protocol and implementation overhead and thus performance is poor on many instruments.\r\n\r\nThe LXI standard however also allows for raw TCP sockets and a newer HiSLIP protocol.\r\n\r\nQuoting:\r\n[http://lxistandard.org \"HiSLIP for Fast Remote Control of LXI Instruments\"](http://lxistandard.org/Documents/Articles/HiSLIP%20for%20Fast%20Remote%20Control%20of%20LXI%20Instruments_final.pdf):\r\n\r\n\"Sockets  and  HiSLIP  provide  a  2-5  times  faster  interface to  LXI instruments than  VXI-11.\"\r\n\r\nFor instruments with poor implementation, the difference can be much more, e.g. reading 50 megasamples of an oscilloscope can take fifteen minutes or so.\r\n\r\nI can confirm the speed difference for some popular oscilloscopes like the Rigol DS1054Z or portable Rohde+Schwarz oscilloscopes.\r\n\r\nWhile pyvisa and pyvisa-py support the TCP sockets OK, I ran into quite some issues with python-ivi.\r\n\r\nI tried today using a Rigol DS1104Z with the following code:\r\n```\r\nimport ivi\r\nscope = ivi.rigol.rigolDS1104Z(\"TCPIP0::192.168.0.1::5555::SOCKET\", prefer_pyvisa=True)\r\nprint(rds.trigger.type)\r\n```\r\nExpected output in this case is a string representing the trigger type, e.g. 'edge'.\r\nThis works when using the VXI-11 \"[...]::INSTR\" resource, but not using a socket, where a VI_ERROR_TMO timeout error is generated.\r\n\r\nAfter some investigation, I found out this is because of missing support for terminating characters for this resource class in python-ivi.\r\n\r\nI.e.: pyvisa supports automatic appending and stripping of the appropriate control characters by setting the respective device instance attributes or directly when instantiating the device class:\r\n[PyVISA: Termination Characters](https://pyvisa.readthedocs.io/en/master/resources.html#termination-characters)\r\n\r\nBecause python-ivi uses a reimplementation of the pyvisa device query methods (i.e. separate device write/write_raw and read/read_raw calls), the easiest way I could make above SOCKET resource string work with python-ivi, for testing purposes, was the following monkey-patch in \r\n[ivi/interface/pyvisa.py#L64](https://github.com/python-ivi/python-ivi/blob/cfa45ceade0758debe4bc24ba4c8195222cad1e2/ivi/interface/pyvisa.py#L64) and after [line 54](https://github.com/python-ivi/python-ivi/blob/cfa45ceade0758debe4bc24ba4c8195222cad1e2/ivi/interface/pyvisa.py#L54):\r\n```\r\n--- orig/pyvisa.py   2019-02-17 04:53:09.790285795 +0100\r\n+++ socket/pyvisa.py      2019-02-17 04:52:41.326355206 +0100\r\n@@ -52,6 +52,7 @@\r\n     def __init__(self, resource, *args, **kwargs):\r\n         if type(resource) is str:\r\n             self.instrument = visa_instrument_opener(resource, *args, **kwargs)\r\n+            self.instrument.read_termination = \"\\n\"\r\n             # For compatibility with new style PyVISA\r\n             if not hasattr(self.instrument, 'trigger'):\r\n                 self.instrument.trigger = self.instrument.assert_trigger\r\n@@ -61,7 +62,7 @@\r\n \r\n     def write_raw(self, data):\r\n         \"Write binary data to instrument\"\r\n-        self.instrument.write_raw(data)\r\n+        self.instrument.write_raw(data + b\"\\n\")\r\n \r\n     def read_raw(self, num=-1):\r\n         \"Read binary data from instrument\"\r\n```\r\n\r\nFor a universal fix, python-ivi could offer passing arguments to the device constructor, alongside the \"prefer_pyvisa=True\", e.g. `scope = ivi.rigol.rigolDS1104Z(resource, prefer_pyvisa=True, read_termination=\"\\n\", write_termination=\"\\n\")` . Or via the respective instance properties.\r\n\r\nAlso perhaps a good idea to use the pyvisa read(), write() and ask/query() methods for the respective methods in python-ivi.\r\n\r\nHTH, Ulrich","author":{"url":"https://github.com/ul-gh","@type":"Person","name":"ul-gh"},"datePublished":"2019-02-17T04:18:04.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1},"url":"https://github.com/75/python-ivi/issues/75"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:e889d79b-1b99-7b26-ed0e-f6155e7ff52c
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-idB30E:14207:E0885F3:1229A027:697713E6
html-safe-nonce8c9f5797f173c07e288a5ea68f452d5a8ae943d77c3a2160b52c7bd16787386c
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCMzBFOjE0MjA3OkUwODg1RjM6MTIyOUEwMjc6Njk3NzEzRTYiLCJ2aXNpdG9yX2lkIjoiNTAxMjcyMTI0Mjc3MTc1NjAwNiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmacb5fc71e6515ee6bdaa6cf2e102c91a08764966a94b589eda49f9e2e395fa4d82
hovercard-subject-tagissue:411146766
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/python-ivi/python-ivi/75/issue_layout
twitter:imagehttps://opengraph.githubassets.com/7d6b4ecf2fd334843e93a4a4df70b4f1cc62f41b79136b2fbee9129426eb3b95/python-ivi/python-ivi/issues/75
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/7d6b4ecf2fd334843e93a4a4df70b4f1cc62f41b79136b2fbee9129426eb3b95/python-ivi/python-ivi/issues/75
og:image:altHi, ethernet/wireless based remote control using the LXI interface allows for three different types of connection. The classic VXI-11 mode uses ONC/Sun RPC mechanism and multiple TCP ports for para...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernameul-gh
hostnamegithub.com
expected-hostnamegithub.com
None01d198479908d09a841b2febe8eb105a81af2af7d81830960fe0971e1f4adc09
turbo-cache-controlno-preview
go-importgithub.com/python-ivi/python-ivi git https://github.com/python-ivi/python-ivi.git
octolytics-dimension-user_id6889594
octolytics-dimension-user_loginpython-ivi
octolytics-dimension-repository_id6012233
octolytics-dimension-repository_nwopython-ivi/python-ivi
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id6012233
octolytics-dimension-repository_network_root_nwopython-ivi/python-ivi
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
releasef752335dbbea672610081196a1998e39aec5e14b
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://patch-diff.githubusercontent.com/python-ivi/python-ivi/issues/75#start-of-content
https://patch-diff.githubusercontent.com/
Sign in https://patch-diff.githubusercontent.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython-ivi%2Fpython-ivi%2Fissues%2F75
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub SparkBuild and deploy intelligent appshttps://github.com/features/spark
GitHub ModelsManage and compare promptshttps://github.com/features/models
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://patch-diff.githubusercontent.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython-ivi%2Fpython-ivi%2Fissues%2F75
Sign up https://patch-diff.githubusercontent.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=python-ivi%2Fpython-ivi
Reloadhttps://patch-diff.githubusercontent.com/python-ivi/python-ivi/issues/75
Reloadhttps://patch-diff.githubusercontent.com/python-ivi/python-ivi/issues/75
Reloadhttps://patch-diff.githubusercontent.com/python-ivi/python-ivi/issues/75
python-ivi https://patch-diff.githubusercontent.com/python-ivi
python-ivihttps://patch-diff.githubusercontent.com/python-ivi/python-ivi
Notifications https://patch-diff.githubusercontent.com/login?return_to=%2Fpython-ivi%2Fpython-ivi
Fork 130 https://patch-diff.githubusercontent.com/login?return_to=%2Fpython-ivi%2Fpython-ivi
Star 233 https://patch-diff.githubusercontent.com/login?return_to=%2Fpython-ivi%2Fpython-ivi
Code https://patch-diff.githubusercontent.com/python-ivi/python-ivi
Issues 32 https://patch-diff.githubusercontent.com/python-ivi/python-ivi/issues
Pull requests 14 https://patch-diff.githubusercontent.com/python-ivi/python-ivi/pulls
Actions https://patch-diff.githubusercontent.com/python-ivi/python-ivi/actions
Projects 0 https://patch-diff.githubusercontent.com/python-ivi/python-ivi/projects
Wiki https://patch-diff.githubusercontent.com/python-ivi/python-ivi/wiki
Security 0 https://patch-diff.githubusercontent.com/python-ivi/python-ivi/security
Insights https://patch-diff.githubusercontent.com/python-ivi/python-ivi/pulse
Code https://patch-diff.githubusercontent.com/python-ivi/python-ivi
Issues https://patch-diff.githubusercontent.com/python-ivi/python-ivi/issues
Pull requests https://patch-diff.githubusercontent.com/python-ivi/python-ivi/pulls
Actions https://patch-diff.githubusercontent.com/python-ivi/python-ivi/actions
Projects https://patch-diff.githubusercontent.com/python-ivi/python-ivi/projects
Wiki https://patch-diff.githubusercontent.com/python-ivi/python-ivi/wiki
Security https://patch-diff.githubusercontent.com/python-ivi/python-ivi/security
Insights https://patch-diff.githubusercontent.com/python-ivi/python-ivi/pulse
New issuehttps://patch-diff.githubusercontent.com/login?return_to=https://github.com/python-ivi/python-ivi/issues/75
New issuehttps://patch-diff.githubusercontent.com/login?return_to=https://github.com/python-ivi/python-ivi/issues/75
Support for "TCPIPx::aaa.bbb.ccc.ddd::ppppp::SOCKET" resourceshttps://patch-diff.githubusercontent.com/python-ivi/python-ivi/issues/75#top
https://github.com/ul-gh
https://github.com/ul-gh
ul-ghhttps://github.com/ul-gh
on Feb 17, 2019https://github.com/python-ivi/python-ivi/issues/75#issue-411146766
http://lxistandard.org "HiSLIP for Fast Remote Control of LXI Instruments"http://lxistandard.org/Documents/Articles/HiSLIP%20for%20Fast%20Remote%20Control%20of%20LXI%20Instruments_final.pdf
PyVISA: Termination Charactershttps://pyvisa.readthedocs.io/en/master/resources.html#termination-characters
ivi/interface/pyvisa.py#L64https://github.com/python-ivi/python-ivi/blob/cfa45ceade0758debe4bc24ba4c8195222cad1e2/ivi/interface/pyvisa.py#L64
line 54https://github.com/python-ivi/python-ivi/blob/cfa45ceade0758debe4bc24ba4c8195222cad1e2/ivi/interface/pyvisa.py#L54
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.