2015年12月1日火曜日
LaTeX newcommand
LaTeXでの表作成の際、縦に並ぶ要素をまとめるのに、
\raisebox{0.9 em}[0cm][0cm]{Sample}
などと書いたりするが、何せ長いので、表を組むコードがぐちゃぐちゃになって見にくい。
プリアンプルに
\newcommand{\RaBo}[2]{\raisebox{#1 em}[0cm][0cm]{#2}}
などとすると、本文中で
\RaBo{0.7}{Sample}
と、ややコードを短くできるので、コードを見やすく書きやすい。
2015年11月25日水曜日
2015年11月23日月曜日
2015年11月20日金曜日
requests で InsecurePlatformWarning、の解消方法
Rasberry Pi B+上のPythonでTweetプログラムを走らせていたが、いつしか以下のエラーが出るようになった。
InsecurePlatformWarning: A true SSLContext object is not available.
This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
InsecurePlatformWarning
Twitterのアカウントは非公開にしているので、SSL通信が保たれていないと困る。
参考URL
http://imagawa.hatenadiary.jp/entry/2015/07/22/183000http://stackoverflow.com/questions/29134512/insecureplatformwarning-a-true-sslcontext-object-is-not-available-this-prevent
ここによると、
Pythonのバージョンを 2.7.9 以降にするか、
$ sudo pip install --upgrade requests[security]
とすれば良いとのこと。
迷わず後者にトライ。しかしrequests upgrade 中に、cryptographyのインストールのところでエラーが発生。
cryptography python.h そのようなファイルやディレクトリはありません
これは、
$ sudo apt-get install python2.7-dev
とすることで解決した。
参考URL
http://zashikiro.hateblo.jp/entry/2012/10/02/130031
改めて
$ sudo pip install --upgrade requests[security]
としたら、今度は
setuptoolsがない、というエラーが出てうまくインストールが終わらない。
これは、
$ sudo wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
とすることで解決した。
参考URL
http://stackoverflow.com/questions/22531360/no-module-named-setuptools
https://pypi.python.org/pypi/setuptools
またまた改めて
$ sudo pip install --upgrade requests[security]
として、Successfully installed の表示が出たらOK。
上記のInsecurePlatformWarningは出なくなり安心。
'str' object is not callable
Pythonスクリプト中で、
str(Tave)
としてfloatを文字列に変換しようとしたら、
'str' object is not callable
とか言われ、ハマった。
検索すると、strを変数名に使用していたらこのエラーが出ると。
「そんなアホちゃうわ」と思って違う原因を探していたけど、やはりよくわからないので、スクリプト内を検索してみたら、
str = con.readline()
アホだった。
バッチリ関数を変数として使っていた。
2015年10月16日金曜日
Raspberry Pi リモートデスクトップ
Raspberry PiにWindows 8.1から接続するための方法。
RasPiに固定IPを設定した後に、
$ sudo apt-get install xrdp
として、
Windows機からリモートデスクトップで固定IPを入力して接続するだけ。
とても簡単に接続できた。
(接続時にすでに走っている温度制御プログラムが再起動されるが)
参考URL
株式会社インデペンデンスシステムズ横浜
http://independence-sys.net/main/?p=993
Raspberry Pi にて温度制御装置を作成。安定度は±1 mK程度である。
(4 mmφ、250 mmの白金抵抗温度計で測定)
確認した温度範囲は18 ℃~26 ℃である。
恒温槽はmKオーダーの安定度のものがGuildlineやMeasurement Internationalなどから出ているが、これらは湿度が安定ではない。
密閉性が高く湿度が安定(1 %以下)で、温度安定もmKオーダーの物は今のところ自作するしか無い様に思う。
湿度は飽和塩で調整。離散値だしややツンとするにおいもあるが1 %以下で安定する。
2015年10月8日木曜日
2015年10月7日水曜日
2015年9月30日水曜日
Raspberry Pi 起動時に Python スクリプトを自動実行させる
/home/pi/.config/lxsession/LXDE-pi
フォルダに行く。
.configフォルダが見えないときは [Ctrl]+[H] とすると隠しフォルダが現れる。
はじめは空フォルダだが、
なかに
autostart
という名前のファイルを作成し、中に
**************
@lxterminal -e "python /home/pi/scripts/test.py"
**************
と記述。
再起動させると自動的にターミナルの画面が立上り、Pythonのプログラムが実行されていることがわかる。
2015年9月4日金曜日
MCP4726 DAC 制御 Python script
Raspberry Pi から、I2C接続にて
12 bit DAC MCP4726
を制御するPython script を書いた。
**************************
import smbus, time
bus = smbus.SMBus(1)
def MCP4726(Vout):
data1 = (Vout >> 4)
data2 = ((Vout & 15) << 4
data0 = [data1, data2]
print "Vout = ", Vout
bus.write_i2c_block_data(0x60, 0x40, data0)
for i in range(0, 4095, 500):
MCP4726(i)
time.sleep(3)
**************************
MCP4726(Vout) 関数を用いて、Vout に0から4000まで500刻みで
3 sec 間を置いて出力するプログラム。
bus.write_i2c_block_dataの
0x60はI2Cアドレス、
0x40は通常設定、
data0 で12 bit のデータを送る。
12 bit なので、最大で 1111 1111 1111b = 0xFFF = 4095
で、最初の8 bit と、後ろの4 bitのブロックに分けて送信する。
data1 = (Vout >> 4)
data1は最初の8 bitで、入力されたVoutを右に4 bitシフトして後ろの4 bitを消している。
data2 = ((Vout & 15) << 4
data2は後ろの4 bitで、Voutと15(0000 0000 1111b)とANDを取って下位4 bitを取り出し、上に4 bit シフトさせている。
これで、4095 (0xFFF) を送ると、
0xFF, 0xF0
の2ブロックデータが送信される。
12 bit DAC MCP4726
を制御するPython script を書いた。
**************************
import smbus, time
bus = smbus.SMBus(1)
def MCP4726(Vout):
data1 = (Vout >> 4)
data2 = ((Vout & 15) << 4
data0 = [data1, data2]
print "Vout = ", Vout
bus.write_i2c_block_data(0x60, 0x40, data0)
for i in range(0, 4095, 500):
MCP4726(i)
time.sleep(3)
**************************
MCP4726(Vout) 関数を用いて、Vout に0から4000まで500刻みで
3 sec 間を置いて出力するプログラム。
bus.write_i2c_block_dataの
0x60はI2Cアドレス、
0x40は通常設定、
data0 で12 bit のデータを送る。
12 bit なので、最大で 1111 1111 1111b = 0xFFF = 4095
で、最初の8 bit と、後ろの4 bitのブロックに分けて送信する。
data1 = (Vout >> 4)
data1は最初の8 bitで、入力されたVoutを右に4 bitシフトして後ろの4 bitを消している。
data2 = ((Vout & 15) << 4
data2は後ろの4 bitで、Voutと15(0000 0000 1111b)とANDを取って下位4 bitを取り出し、上に4 bit シフトさせている。
これで、4095 (0xFFF) を送ると、
0xFF, 0xF0
の2ブロックデータが送信される。
MCP4726 DAC を Rapsberry Pi I2C で使う
秋月電子通商で購入した12bit DAC, MCP4726をRaspberry Piに接続してI2C通信して電圧を出力する方法。
MCP4726搭載12ビットD/A変換モジュール
http://akizukidenshi.com/catalog/g/gK-07995/
MCP47X6 (X = 0, 8 bit; X = 1, 10 bit; X = 2, 12 bit)
Raspberry Piのコンソールで、
$ sudo i2cset -y 1 0x60 0x40 0xff 0xf0 i
とすると、0xFFF(12 bit 最大値)が出る。0x60はI2Cアドレスで、
$ sudo i2cdetect 1
で得られたアドレス。0x40は通常設定ということのよう。以下URLを参照。
http://www.bitwizard.nl/wiki/index.php/I2C_DAC
というよりデータシートをちゃんと読んだほうが良いかもしれないが、面倒なので読んでない。
あとの0xff 0xf0
のはじめの3 byteがデータ。
最後の i は i2cset でブロックデータを送るときに必要なやつ。
Pythonでやるときは、
*******************************
import smbus
bus = smbus.SMBus(1)
s= [0xff, 0xf0]
bus.write_i2c_block_data(0x60, 0x40, s)
*******************************
などとすると動作してくれる。
参考URL
http://wiki.erazor-zone.de/wiki:linux:python:smbus:doc
Python 16進数 桁数
Pythonにて、
>> hex(0)
とすると、0x0
と表示される。これを0x00とするには、
>> "0x%02x" % 0
とすれば良い。参考URL
http://stackoverflow.com/questions/12969188/invalid-hex-values?answertab=votes#tab-top
2015年8月21日金曜日
OneDrive
MicrosoftのOneDriveというサービスがある。
オンラインストレージサービスであり、これにより様々なPCから同一のファイルを編集できるというメリットがある。
先日、PC1よりファイルを編集し、
その後PC2からファイルを開いたところ、先日の編集が繁栄されていない。
PC1はOFFになっており、同時に開いているなどということは無い。
参照ファイルは同じパスになっており、同じファイルである。
PC1を立ち上げ、同じファイルにアクセスしたところ、先日の編集が反映されたファイルが現れた。
復元不可能な多くのデータを追加していたため、安堵したが、
PC2ではいくら開いてもその新しいデータが見えない。
そうこうしているうちにPC1でも見えなくなってしまった。
おいおい。最悪。
オンラインストレージサービスを使用する際はちゃんとローカルにデータを残さないと駄目だと時々思い知らされる。
オンラインストレージサービスであり、これにより様々なPCから同一のファイルを編集できるというメリットがある。
先日、PC1よりファイルを編集し、
その後PC2からファイルを開いたところ、先日の編集が繁栄されていない。
PC1はOFFになっており、同時に開いているなどということは無い。
参照ファイルは同じパスになっており、同じファイルである。
PC1を立ち上げ、同じファイルにアクセスしたところ、先日の編集が反映されたファイルが現れた。
復元不可能な多くのデータを追加していたため、安堵したが、
PC2ではいくら開いてもその新しいデータが見えない。
そうこうしているうちにPC1でも見えなくなってしまった。
おいおい。最悪。
オンラインストレージサービスを使用する際はちゃんとローカルにデータを残さないと駄目だと時々思い知らされる。
2015年1月3日土曜日
bib 文字化け対処法
文献管理ソフトMendeleyが吐いたbibファイルを、pbibtexで処理してbblファイルを作成時、先ほどまではちゃんと処理できていたのに、なぜか日本語が文字化けしておかしくなることがある。
bibファイルをテキストエディタで開き、名前をつけて保存で、ANSIなどのutf8以外の文字コードで保存した後に、またutf8で保存しなおしたら、何にもなかったようにうまく処理されるようになった。
一旦違う文字コードで保存することが肝心かどうかはわからない。もしかするとutf8で保存するだけでうまくいくかもしれない。でももともとutf8だったけど。
ちなみにWinshell のコマンドは、sjisになってるけど、うまくいっている。
pbibtex -kanji=sjis "%s"
Windows 7 Pro, 32 bit, Winshell 3.3.2.6
bibファイルをテキストエディタで開き、名前をつけて保存で、ANSIなどのutf8以外の文字コードで保存した後に、またutf8で保存しなおしたら、何にもなかったようにうまく処理されるようになった。
一旦違う文字コードで保存することが肝心かどうかはわからない。もしかするとutf8で保存するだけでうまくいくかもしれない。でももともとutf8だったけど。
ちなみにWinshell のコマンドは、sjisになってるけど、うまくいっている。
pbibtex -kanji=sjis "%s"
Windows 7 Pro, 32 bit, Winshell 3.3.2.6
登録:
投稿 (Atom)