首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用连接的硬件进行编程

使用连接的硬件进行编程
EN

Stack Overflow用户
提问于 2014-10-08 18:24:40
回答 1查看 268关注 0票数 0

我认为这将是最容易的例子,但问题是一个一般性的问题。假设我使用的是像PyVISA这样的库,它将GPIB设备与我的程序连接起来。我已经为每个仪器设置了一个python类,所以对于电源,我可能会有这样的东西:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import visa

class PowerSupply:
    def __init__(self):
        rm = visa.ResourceManager()
        self.ps = rm.open_resource('GPIB0::12::INSTR')
    def getVoltage(self):
        return self.ps.ask('VOLT?')
    def setVoltage(self,v):
        self.ps.write('VOLT '+str(v))
    ...

ps = PowerSupply()
ps.setVoltage(10)

不幸的是,rm.open_resource函数可能无法工作,或者如果该地址上不存在设备,则可能返回None (在我的代码中,我实际上编写了一个函数来执行此操作)。我的问题是:编写像PowerSupply这样的类的最佳实践是什么?如果测试self.ps是否存在/不是None,可以在每个方法中编写异常,但似乎必须有更好的方法。是吗?!

EN

回答 1

Stack Overflow用户

发布于 2014-10-08 19:38:08

如果self.ps存在/不是None,你可以在每一个测试self.ps是否存在/不是None的方法中编写异常,但似乎一定有更好的方法。是吗?!

是。按照您编写代码的方式,如果self.ps曾经是None,那么它将从一开始就是None,并且再也不会改变。因此,不需要在每个方法中都测试它,只需测试一次:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def __init__(self):
    rm = visa.ResourceManager()
    self.ps = rm.open_resource('GPIB0::12::INSTR')
    if self.ps is None:
        raise PowerSupplyException('Unable to open resource GPIB0::12::INSTR')

现在,构造PowerSupply的任何代码都必须处理该异常或准备好传播它,但是您的问题暗示open_resource无论如何都可能引发异常,所以这不是问题。此外,这似乎是处理它的正确位置-在您的程序的顶层,无论您在哪里创建PowerSupply以响应某些图形用户界面、命令行界面或网络命令,您都准备好处理无法创建它的问题,对吧?

任何使用已经构造好的PowerSupply的代码都不用担心。你知道self.ps is not None,否则你不可能从构造器中取回对象。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26263835

复制
相关文章
【说站】利用Java连接Hadoop进行编程
这篇文章主要介绍了利用Java连接Hadoop进行编程,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下!
很酷的站长
2022/11/24
5300
【说站】利用Java连接Hadoop进行编程
使用JSch库进行SFTP连接
JSch是一个Java库,用于实现SSH2协议。JSch可以用于连接SSH服务器并进行各种远程操作,如文件传输、端口转发、远程执行命令等。
品茗IT
2023/10/22
1.5K0
开源硬件编程
• 20通道数字I/O, (其中支持12路PWM,6路触摸输入) • 5通道12bit模拟输入ADC,P0~P4
陆勤_数据人网
2020/09/22
1.5K0
使用Python进行线程编程
对于Python来说,并不缺少并发选项,其标准库包括了对线程、进程和异步I/O的支持。在许多情况下,通过创建诸如异步、线程和子进程之类的高层模块,Python简化了各种并发方法的使用。除了标准库之外,还有一些第三方的解决方案。例如Twisted、Stackless和进程Module。因为GIL,CPU受限的应用程序无法从线程中受益。使用Python时,建议使用进程,或者混合创建进程和线程。
py3study
2020/01/06
6350
使用Python进行并发编程
让计算机程序并发的运行是一个经常被讨论的话题,今天我想讨论一下Python下的各种并发方式。
程序员迪迪
2022/01/13
9630
使用 Future 进行并发编程
在编程的时候,常常会遇到需要并行处理一些代码,最原始的做法就是创建不同的线程进行处理,但是线程之间的同步处理非常麻烦而且容易出错,如果要同时得到几个线程的结果并且通过这些结果进行进一步的计算,则需要共享变量或者进行线程间通信,无论如何都非常难以处理。另外,直接使用线程也使得代码灵活性不高,比如在双核机器上可能只希望使用两个线程执行代码,到了四核机器上就希望最多能有四个线程了。Future 能够提供一个高层的抽象,将计算任务的并发化和计算最终的执行方式分离,使得这类处理更为方便。Future 作为一个代理对象代表一个可能完成也可能未完成的值 1,通过对 future 进行操作,能够获取内部的计算是否已经完成,是否出现异常,计算结果是什么等信息。
zhiruili
2021/08/10
1K0
socket编程与利用进程进行多并行连接
       呈现一张基本的socket阻塞式模型,如下图:  一: 对于一对一的进行C/S回射: 服务端(server.c): 1 #include<unistd.h> 2 #include<s
Gxjun
2018/03/26
1.3K0
socket编程与利用进程进行多并行连接
windows Terminus 使用 private key 进行连接
settings -> keychain -> NEW -> Import or paste akey ->  
卓越笔记
2023/02/22
8110
windows Terminus 使用 private key 进行连接
如何使用EDI系统进行OFTP连接?
OFTP(ODETTE File Transfer Protocol),即ODETTE(全称The Organisation for Data Exchange by Tele Transmission in Europe)文件传输协议创建于1986年,在EDI中广泛使用。其命名来源于ODETTE组织(欧洲负责数据传输交换的组织)。
知行软件EDI
2021/03/03
2K0
如何使用EDI系统进行OFTP连接?
使用 IAsyncResult 进行 .NET 异步编程
微软早在.net2.0, 也就是VS2005的时候,就提供了一整套的异步编程设计模式,有3中常用的方式: 1. 使用 IAsyncResult 调用异步方法 2. 使用委托进行异步编程 3. 使用事件进行异步多线程编程 注: IAsyncResult 方式通常是用委托来实现的。所以可以认为前面2种方式就是一种。 http://msdn.microsoft.com/zh-cn/library/2e08f6yc.aspx 使用 IAsyncResult 调用异步方法 1. 有两个配对的方法,BeginXXX()
葡萄城控件
2018/01/10
7790
使用 Python 进行游戏脚本编程
使用脚本语言可以更加快速地开发游戏逻辑,而不必担心由于 C++ 程序员的粗心大意所造成的后果。使用已有的脚本语言可以节省开发新型自定义语言的时间和开销,并且这些语言通常要比自己创造的语言更加的强大。
知识与交流
2021/04/02
3K0
【Linux/unix网络编程】之使用socket进行TCP编程
循环接收客户发来的信息并在终端上显示,同时在信息前加入序号并返回给客户端;当从客户接收到bye后不再发送给各户并退出程序。
马三小伙儿
2018/09/12
5550
【LINUX/UNIX网络编程】之使用SOCKET进行UDP编程
(2)客户可向服务器发送多种指令:DOWNLOAD、UPLOAD、YES、NO、START、END、SHUTDOWN、CONTENT、OKDOWLOAD格式:DOWLOAD [filename]表示从服务器下载filename文件,如果服务器存在该文件,返回YES,否则返回NO;客户接收如果是YES,可发送START表示开始下载,之后,服务器将文件传送给客户,客户接收并保存;UPLOAD格式:UPLOAD [filename]表示向服务器上传filename文件,服务器发送NO表示拒绝接收。服务器发送START表示开始传送,之后向服务器传输文件;END:表示文件传送结束SHUTDOWN:表示通讯结束,双方退出。
马三小伙儿
2018/09/12
8010
【LINUX/UNIX网络编程】之使用SOCKET进行UDP编程
在Windows上使用PuTTY进行SSH连接
PuTTY是一个用于Windows和UNIX系统的免费开源SSH客户端。它可以轻松连接到运行SSH守护程序的任何服务器,因此您可以像登录到远程系统上的控制台会话一样工作。
文艺复兴
2018/09/10
21.6K0
在Windows上使用PuTTY进行SSH连接
angular使用stompjs进行长连接通讯
1.安装stomp插件 npm install @stomp/ng2-stompjs --save ng2-stompjs 2.使用配置连接 const stompConfig: StompC
用户1437675
2018/10/09
1.8K0
2. Nsight Eclipse 连接TX2进行CUDA编程
一开始非常纠结在TX2上怎么写CUDA和opencv的程序,总不能在VIM里敲吧,也许是个神器,但现在可能真的没有时间学习,好在发现了Nsight Eclipse这个好东西,这个IDE可以提供编辑器及调试器的功能,不仅可以写程序,还可以远程直接连接到TX2上进行编译。要说的是,这个在主机上安装Jetpack的时候就已经默认安装了,并且安装了cuda和CUDNN,以及OPENCV。 首先做一些准备工作:
和蔼的zhxing
2018/09/04
1.5K0
2. Nsight Eclipse 连接TX2进行CUDA编程
使用Visual Studio Code进行MicroPython编程
Visual Studio Code(以下简称VSCode)是一个轻量且强大的跨平台开源代码编辑器(IDE),支持Windows,OS
阿莉埃蒂
2019/07/02
3.5K0
使用Visual Studio Code进行MicroPython编程
如何使用ChatGPT进行编程(完整教程)
ChatGPT 是一款超级先进的聊天机器人,由 OpenAI 公司使用人工智能开发,于 2022 年 11 月 30 日推出。
刘盼
2023/08/22
4.8K0
如何使用ChatGPT进行编程(完整教程)
使用 Go 进行 iOS 和 Android 编程
虽然 Go 并不是一门新语言,不过最近两年来 Go 还是增加了很多有趣的特性,而且使用这门语言的知名项目的数量也在快速的增长。我写过一篇文章,介绍了 SitePoint 用到的编程语言,其中提到了移动
李海彬
2018/03/23
4.1K0
点击加载更多

相似问题

用python进行硬件编程

91

如何进行硬件无关的并行编程?

61

底层图形编程/使用屏幕硬件

23

基本硬件的编程问题

12

不同硬件的编程模型

34
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文