2014年8月27日 星期三

安裝 pyVISA

pyVISA 的 VISA 全名是「虛擬儀器軟體架構(Virtual Instrument Software Architecture)」,您可以透過 GPIB、 RS232、以太網路和 USB 等裝置跟其他量測設備作溝通。

官網 https://pypi.python.org/pypi/PyVISA


安裝需求

您必須先安裝下列軟體,才能安裝 pyVISA。
1. VISA (NI-VISA3.2,Win XP)
2. Python ( Python 2.6~3.2 版之間)


下載

切換網頁至 https://pypi.python.org/pypi/PyVISA,點擊綠色的 Download 按鈕。


安裝

 將下載下來的檔案 PyVISA-1.5.zip 解壓縮,然後開啟「命令提示字元視窗」,切換路徑到 pyVISA 裏(註A),鍵入 python setup.py install 即可。如下圖所示:


註A:我的 pyVISA 解壓縮檔案是放在路徑「D:\download\PyVISA-1.5\」。


測試是否已正確安裝

啟動 Python,然後你可以鍵入下列程式碼,如果沒有出現錯誤訊息,表示已正確安裝。

>>> import visa
>>> lib = visa.ResourceManager()


Q&A

Q:鍵入 import visa 時會出現下列錯誤訊息:
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
  File "C:\Python27\lib\site-packages\visa.py", line 18, in <module>
    from pyvisa import logger, __version__, log_to_screen
  File "C:\Python27\lib\site-packages\pyvisa\__init__.py", line 20, in <module>
    import pkg_resources
ImportError: No module named pkg_resources

A:這是缺少 pkg_resources 模組所致,請到是德科技網站 http://www.keysight.com/ 下載 IO Libraries Suite 軟體,下載頁 http://www.keysight.com/main/software.jspx?ckey=1184883&lc=cht&cc=TW&nid=-11143.0.00&id=1184883


Q:Windows ERROR 126

A:詳 http://sourceforge.net/p/pyvisa/bugs/15/


程式碼範例

import visa
rm = visa.ResourceManager()
my_instrument = rm.open_resource('GPIB::14')
my_instrument.write("*IDN?")
print(my_instrument.read())



安裝 NI-VISA 3.2

切換網頁到 http://www.ni.com/download/ni-visa-3.2/389/en/ ,點擊 visa320full.exe。它會要求您建立使用者帳號,如下圖。


如果您已經註冊過那麼就點擊「登入」,輸入正確的使用者名稱和密碼,然後再次點擊  visa320full.exe。

接著再雙擊下載的檔案 visa320full.exe,然後依照安裝視窗指示進行即可。


您可能會喜歡

1. pyVISA 參考文件 https://pyvisa.readthedocs.org/en/latest/






2014年8月23日 星期六

安裝 pyFirmata

pyFirmata 可以讓 Python 透過 Firmata 通訊協定和 Arduino 溝通。您可以在 Python 程式碼裡直接控制 Arduino port 的 HIGH 與 LOW。


下載

切換到下載頁面 https://github.com/tino/pyFirmata,點擊右下角落的「Download ZIP」,之後將  pyfirmata-master.zip 解壓縮。


安裝

安裝的首選方法是使用 PIP,語法如下:

pip install pyfirmata
或是您也可以開啟「命令提示字元」視窗,切換到 pyfirmata-master.zip 解壓縮後的路徑,然後鍵入

python setup.py install
如下圖所示:





安裝 pySerial

您可以使用 pySerial 透過 COM port 與 Arduino 聯繫。

官網 http://pyserial.sourceforge.net/#


下載

切換至下載頁面 https://pypi.python.org/pypi/pyserial,點擊 pyserial-2.7-win32.exe (md5)。


安裝

雙擊  pyserial-2.7-win32.exe,然後依照視窗提示安裝即可。它會被安裝到 C:\Python27\Lib\site-packages\serial\ 這個位置。


開啟 COM4 並送出訊息

COM port 的編號是從 0 開始,所以  serial.Serial(3) 表開啟 COM4。

import serial
ser = serial.Serial(3)  # open COM4 port
print ser.name          # check which port was really used
ser.write("hello")      # write a string
ser.close()             # close port


以名稱方式開啟 COM port 並讀取訊息

超時設為 1 秒,讀取資料時如果時間超過 1 秒沒接收到資料就中斷接收。

import serial
ser = serial.Serial('COM4', 19200, timeout=1)
x = ser.read()          # read one byte
s = ser.read(10)        # read up to ten bytes (timeout)
line = ser.readline()   # read a '\n' terminated line
ser.close()


稍後才設定 COM 的參數

您不必一開始就指定某個特定的 COM port 必須使用多少鮑率等參數,而是可以隨著程式的進行隨時改變參數,方法如下所示:

>>> import serial
>>> ser = serial.Serial()
>>> ser.baudrate = 19200
>>> ser.port = 0
>>> ser
Serial<id=0xa81c10, open=False>(port='COM1', baudrate=19200, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=0, rtscts=0)
>>> ser.open()
>>> ser.isOpen()
True
>>> ser.close()
>>> ser.isOpen()
False


獲取可用的 COM port

import serial.tools.list_ports

coms=serial.tools.list_ports.comports()
for a in coms:
     print a



讓 Arduino 板子 pin 13 的 LED 閃爍

Python code:

import serial

def main():
    sp = serial.Serial()
    sp.port = 'COM4'
    sp.baudrate = 9600
    sp.timeout = 5

    sp.open()
    sp.readline() #to give the hardware handshake time to happen
    sp.write(chr(1))
    value = sp.readline()
    print value
    sp.write(chr(0))
    sp.close()

if __name__ == "__main__":

    main()


Arduino code:

const int ledPin = 13;

void setup(){
    Serial.begin(9600);
    pinMode(ledPin, OUTPUT);
}

void loop(){
    while(Serial.available()){
        switch(Serial.read()) {
          case 0:
            digitalWrite(ledPin, LOW);
            break;
          case 1:
            digitalWrite(ledPin, HIGH);
            break;
        }  
        delay(20);
    }

}


您可能也喜歡

Arduino and Python
http://playground.arduino.cc/interfacing/python

pyFirmata
https://github.com/tino/pyFirmata

Python Arduino Prototyping API
https://github.com/vascop/Python-Arduino-Proto-API-v2


<Python Serial Port Extension>


1. wxTerminal.py
http://sourceforge.net/p/pyserial/code/HEAD/tree/trunk/pyserial/examples/wxTerminal.py


2. wxSerialConfigDialog.py
http://sourceforge.net/p/pyserial/code/HEAD/tree/trunk/pyserial/examples/wxSerialConfigDialog.py



安裝 PyBluez

PyBluez 是給桌上型電腦使用的藍芽函式庫,您可以用它來跟附近的藍芽裝置溝通。如果是手機或平板,您可以安裝 LightBlue。


下載

切換至下載頁面 https://code.google.com/p/pybluez/downloads/list
點擊 PyBluez-0.20-win32.py2.7.exe。


安裝

雙擊 PyBluez-0.20-win32.py2.7.exe,然後依照視窗內的提示安裝即可。
官網說要在「命令提示視窗」內進行如下安裝

python setup.py install

但我發現這個動作可以省略。


搜尋藍芽裝置

本程式碼會搜尋並顯示附近的藍芽裝置的名稱和位址。

import bluetooth

print("performing inquiry...")

nearby_devices = bluetooth.discover_devices(lookup_names = True)

print("found %d devices" % len(nearby_devices))

for addr, name in nearby_devices:

    print("  %s - %s" % (addr, name))


執行過程如下:

performing inquiry...
found 2 devices
Ray's Nokia - 00:12:D2:5A:BD:E4
Ray's MacBook - 00:1E:C2:93:DA:6F


RFCOMM 服務

以下是基本的客戶端和伺服器端的程式,為了讓事情變得簡單,我們手動輸入伺服器藍牙設備的位址(00:12:D2:5A:BD:E4)和埠口;在下文中,客戶端連接到伺服器上的埠口為 3。

程式運作的方式如下圖:



客戶端(從)程式

from bluetooth import *

# Create the client socket
client_socket=BluetoothSocket( RFCOMM )

client_socket.connect(("00:12:D2:5A:BD:E4", 3))

client_socket.send("Hello World")

print "Finished"

client_socket.close()


伺服器端(主)程式

from bluetooth import *

server_socket=BluetoothSocket( RFCOMM )

server_socket.bind(("", 3 ))
server_socket.listen(1)

client_socket, address = server_socket.accept()

data = client_socket.recv(1024)

print "received [%s]" % data

client_socket.close()
server_socket.close()


安裝 pyScripter

pyScripter 是 Python 眾多編輯器其中一種。

官網 https://code.google.com/p/pyscripter/


安裝需求

1. 您必須先安裝 Python。


下載與安裝

切換到下載頁面 https://code.google.com/p/pyscripter/downloads/list

請點擊 PyScripter-v2.5.3-Setup.exe,下載後請快擊兩下並依視窗指示安裝。

安裝時,請勾選在桌面產生捷徑圖示,捷徑如下圖示:




執行 pyScripter

以後我們可以快擊兩下 pyScripter 捷徑,就可以開啟 pyScripter 編輯器,用它來寫 Python 程式。



安裝 wxPython

Python 屬於直譯式程式語言,鍵入程式碼並按下<Emter>鍵就馬上有結果,它雖然方便易懂,但不利於撰寫較大的程式。如果要撰寫較大的程式,我們可以安裝程式碼撰寫介面軟體。

在官網主頁的右下角落有表列出插件軟體,如下圖:


您可以看到在 GUI Development 這一行列出 wxPython,Tkinter,PyGTK,PyQt 等 4 個插件軟體,這幾個插件軟體各有優缺點,但都可以用來讓我們方便撰寫 Python 程式,您可以逐一下載並使用看看。

此處我們僅示範安裝 wxPython。


下載並安裝 wxPython

先到官網 https://www.python.org/,然後滾動滑鼠滾輪到網頁的最下端,在右下角落找到 Use Python for...,點擊 wxPython,切換到 wxPython 主頁面。

點擊左側功能表中 Download 項目下的 Ms Windows,再點擊

wxPython3.0-win32-py27

這是給 Windows 32 bit 作業系統使用的版本,如下圖示:



下載後請依視窗指示安裝。安裝程式會自動偵測 Python 所在位置,本人不建議你變更安裝路徑。

安裝後不會有桌面捷徑,因為它只是一個 Library。稍後我們將會學到如何使用 wxPython。















2014年7月24日 星期四

桃園夏日賞蓮趣

桃園觀音蓮花園區位置靠近富源村和清華村。
新屋蓮花最主要有兩個地點,一是新屋蓮園,另一是林家古厝。
賞完蓮花可以到向陽農場賞向日葵,接著到觀音海邊看燈塔和夕陽。


新屋蓮園

活動:賞蓮、釣蝦、划船、荷葉粽和蓮花餐。

地址:桃園縣新屋鄉清華村11鄰4號

交通:中山高南下過新屋(中壢)交流道後接66快速道路往觀音方向前進,至新坡、富源下閘道口,右行約200公尺,右手邊即是。

停車:假日大馬路邊都可以停車,非假日人少可把車開進園區內。



林家古厝


活動:古厝內有很多寶物、賞蓮、滷味、蓮子冰和控窯。

地址:桃園縣大湖路二段239巷55號

交通:由新屋蓮園右轉往大湖路方向前進,經過青林農場後左轉,走大湖路二段,經過鍾家休閒農場和大田蓮園農場後左轉,沿著田間小路前進約300公尺。

停車:假日田間小路難以停車,非假日人少可把車開進古厝前曬穀場。




向陽農場

活動:賞花、滷味、蓮子冰和簡餐。

地址:桃園縣觀音鄉藍埔村11鄰52號

交通:出林家古厝到大湖路二段左轉,經過青林農場後左轉,走大湖路二段,經過鍾家休閒農場和大田蓮園農場後左轉直走,遇到新華路二段左轉,至新華路一段處右轉金華路,至觀音蓮荷園前左轉(有指標但不明顯),沿著田間小路前進約500公尺。

停車:假日田間小路都可以停車,非假日人少可把車開進農場。




白沙岬燈塔


  1. 白沙岬燈塔,位處桃園縣觀音鄉白沙岬。原為台灣島最西端之燈塔。這座燈塔高37公尺,為台灣第2高的燈塔。白沙岬燈塔並非由鑄鐵組裝而成,乃採日語所稱的「煉瓦石造」之雙層磚石耐震所建造,塔身為圓形磚造,燈器使用法製三等旋轉透鏡三重芯煤油燈。 維基百科

活動:漫步林間、看燈塔。

地址:桃園縣觀音鄉

交通:出向陽農場後遇到金華路左轉,直行至中山路二段左轉往觀音方向,

停車:馬路邊。





觀音海水浴場

活動:玩水(不建議游泳)、招潮蟹、看夕陽和放風箏。

地址:桃園縣觀音鄉

交通:由燈塔處直行到底。

停車:停車空間很多。



回程

可走115縣道經莫內的花園,上66快速道路接中山高。



你可能也想看看

1.青林農場 https://www.facebook.com/chinglin.farm
2.莫內的花園 http://034730186.tw.tranews.com/
3.南非美食 http://034971184.tranews.com/