iBUFFALO USBシリアルケーブル(USBtypeA to D-sub9ピン)1.0m ブラックスケルトン BSUSRC0610BS
- 発売日: 2012/04/25
- メディア: Personal Computers
この電子機器制御の分野では Mac なんて顧みられることはなく、当然メーカーも Windows 対応しかしていません。Mac で USB to RS232C 変換ケーブルを使うにしても、そのケーブルがちゃんと Mac に対応していなくてはいけない。変なケーブルを買うと Mac じゃ動きません。
で、お薦めは FTDI の USB to RS232C 変換チップを搭載した製品で、例えば iBUFFALO の BSUSRC0610BS は完璧に動作します。購入してみないとどこのチップが使われているのか分からず不安ですが、これなら FTDI なので Mac でも大丈夫です。
FTDI の変換チップは色々な場所で使われていて、経験的には 8 割くらいの製品がここの USB to RS232C の変換チップを使ってます。カタログに USB 端子内蔵の装置と書かれている場合、背面パネルの USB 端子の奥にこの FTDI のチップが載っていることが多いです。そうすると、通信コマンドは RS232C で経験したのと同じ作法で送信できるので利用者側の敷居も低くなります。
さて、FTDI の何が良いかと言うと Windows は当然として、OS X にも Linux にもちゃんと device driver を公開してくれているところ。少なくとも OS X 用の 2.2.18 は Mountain Lion で、Linux の 1.5.0 は Scientific Linux 5.5 (64 bit) で問題なく動作しています。
他のメーカーだと device driver がなかったり、あっても有志が開発しているのを自分で build しないといけなかったりで、面倒です。公式に device driver を FTDI が出してくれているのは非常にありがたい。
FTDI のチップにはそれぞれに serial number が書き込まれており、例えば FT123456 という S/N であれば、device driver を入れた Mac に BSUSRC0610BS を接続すると /dev/tty.usbsrial-FT123456 という device file が自動生成されます (OS X の場合)。あとは、この device に対して好きなように読み書きすれば良し。
Linux の場合は、lsusb という command で USB 機器の接続を確認できます。Mac の場合は system_profiler という command を代わりに使います。
↓Mac の場合。
[oxon@Mac ~]$ system_profiler SPUSBDataType (略) USB 3.0 Hi-Speed Bus: Host Controller Location: Built-in USB Host Controller Driver: AppleUSBXHCI PCI Device ID: 0x1e31 PCI Revision ID: 0x0004 PCI Vendor ID: 0x8086 Bus Number: 0x14 USB HS SERIAL CONVERTER: Product ID: 0x6001 Vendor ID: 0x0403 (Future Technology Devices International Limited) Version: 4.00 Serial Number: FT123456 Speed: Up to 12 Mb/sec Manufacturer: FTDI Location ID: 0x14100000 / 1 Current Available (mA): 500 Current Required (mA): 44 [oxon@Mac ~]$ ls /dev/tty.usbserial* /dev/tty.usbserial-FT123456
↓Linux の場合 (VMware 上の virtual machine です)。
[oxon@Linux ~]$ lsusb Bus 001 Device 001: ID 0000:0000 Bus 002 Device 003: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC Bus 002 Device 001: ID 0000:0000 Bus 002 Device 002: ID 0e0f:0002 VMware, Inc. Virtual USB Hub [oxon@Linux ~]$ ls /dev/ttyUSB* /dev/ttyUSB0
で、実際に使用する時は僕は基本的に PySerial を使っていて、↓こんな感じにやります。
import serial keithley = serial.Serial(port="/dev/tty.usbserial-FT123456", baudrate=57600,timeout=1,writeTimeout=1) keithley.write('*RST\n') keithley.write(':SENS:FUNC "VOLT"\n') keithley.write(':SOUR:FUNC VOLT\n') keithley.write(':OUTP ON\n')