Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

python

ctypeライブラリでC言語めいたメモリ領域の確保を行う

実際のところ from ctypes import * p = create_string_buffer(b"Hi", 10) # 10文字分確保し先頭にHiをいれる print( repr(p.raw) ) #>>> b'Hi\x00\x00\x00\x00\x00\x00\x00\x00' 参考もと docs.python.org

pack_into / unpack_fromメソッドをつかってC言語風にデータを格納する

structのpack_into/unpack_fromメソッドをつかうと、C言語のような感じでメモリ領域を確保、読み出しが可能です。 何らかの事情で保存領域の使用がタイトだったりとか、C言語で実装されたプロジェクトをPythonで書き換えたりするときに使えますね。 実際のと…

structライブラリでバイト列をつくる

前回の記事でバイトリテラルを分解するunpackメソッドと対になるpackメソッドを使うと バイトリテラルを結合したり、バイト埋めができたりします。 …………これ、散々苦労したPythonでのバイト列生成では決定版かも……。 実際のところ import struct struct.pack…

バイトリテラル列の分解

実際のところ 標準ライブラリstructのunpackメソッドを使います。 import struct struct.unpack('8B', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0] #>> 255 struct.unpack('8B', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[1] #>> 248 参考もと python - What does…

Pythonでバイトリテラルやるなら、やっぱり一バイトごとにやらんといけない

組み込み機器で使うデータ列を生成するとき、pythonで適当に書き捨てたられたら便利ですね。 これ、format構文を使えば楽です。 実際のところ 単純にバイトリテラルな値を操作したい場合 '\x12' + '\x01' #>> '\x12\x01' 文字列と同じ扱いでできるので '\x12…

PythonでAWS IoT をつかう その3:AWS lambdaと連携する

今書いてまs 参考もと https://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/iot-lambda-rule.html

PythonでAWS IoT をつかう その2:DynamoDBにアップロードする

前回の続き。 AWS IoTだけでは機能しないので、AWSサービスの一つであるDynamoDBにアップロードを試みてみます。 記述増強中... 実際のところ 「新しいリソース」を選択すると、DynamoDBのページに飛びます。 ソートキーは任意っぽい感じで書かれてますが、 …

PythonでAWS IoT をつかう その1:環境構築

実際の設定をはじめる うごかす $ cd connect_device_package $ chmod +x start.sh $ sudo ./start.sh放置するとこんな感じに pythonは? 先ほどのstart.shの最後の方にこんな行が。 めちゃくちゃオプションが多いように見えますが、ほとんどは自動生成で導…

python用TKインターフェイスtkinter その3:いろいろなウィジェット

GUI系のご多聞に漏れず、 tkinterにも色々ウィジェットが付いています 実際のところ 今書いてまs

昨日まで動いていたSSH越しTKアプリが動かないなら、一度クライアントを接続し直すと治るかも

SSH越しにアプリをつくっていた時のこと。 クライアントを接続したまま半日放置し、帰宅後に同じコマンドを叩いたら以下のようなエラーが。 $ python3 tkintertest.py Traceback (most recent call last): File "tkintertest.py", line 24, in <module> root = tk.Tk</module>…

python用TKインターフェイスtkinter その2:画面サイズとタイトル

タイトルだとか画面のサイズといった全体に関わることはtkのrootで設定します。 実際のところ import tkinter as tk class Application(tk.Frame): def __init__(self, master=None): super().__init__(master) self.pack() self.create_widgets() def creat…

python用TKインターフェイスtkinter その1:最初のアプリ

tk(Tool Kitの略)は軽量で色んなプラットフォームへの移植実績があります。 Pythonも標準ライブラリの中にtkinterというのがあります。 昨今のPythonブームもあってか、ネットをみるとArduinoと連携したサンプルが結構みつかります。 www.youtube.com今回は…

pythonにPIPEの結果をわたす

pythonは色々便利なライブラリだのリファ実装だのがあって便利ですよね。 ただ、ちょっとしたデータをファイルから読んだり、すでに作成済みなシェルスクリプトと連動するときには少々面倒です。 pythonが入る環境なら大抵シェル環境はあるわけで、それなら…

Raspberry Pi 3B+ とPython3な環境に OpenCV環境をつくる

みんな大好きOpenCV。 今回は、OpenCVを Python3 on RasPi3B+ な環境に突っ込んでみます。 (ただし、諸事情によりOpenCVは最新版でなく3.4系を入れます) 実際のところ sudo apt update sudo apt autoremove sudo apt upgrade -y sudo reboot$ sudo apt-get i…

RasPiでステッピングモーターを動かす その5: python標準ライブラリtkinterでJOG機能めいたものを実装

shuzo-kino.hateblo.jpステッピングモーターでやった事例の続き。 今度は、いわゆるJOG機能……的なものを実装してみます。 JOG機能は機構の組付けチェックなどに便利です。 本来はボタン押しっぱなしで動いているべきなんですが、今回は私のtkに対する知識不…

subprocessライブラリのrun

3.5系から実装が整理され call三兄弟*1がrunで置き換えできるようになった様子。 実際のところ 今書いてまsコンテンツ PIPEの扱いは? 三兄弟との対応関係は?? 参考もと subprocess --- サブプロセス管理 — Python 3.7.6 ドキュメント subprocess --- サブ…

subprocessライブラリでパイプ処理をする

前回の続き。 シェルの醍醐味(?)といえばパイプ処理。 実際のところ output=`dmesg | grep hda`に相当するコマンドが、以下の様に。 p1 = Popen(["dmesg"], stdout=PIPE) p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE) #入力はp1のstdout p…

pythonでシステムコールするsubprocessライブラリ

Pythonでシェルコマンドを呼び出すにはos.callがあるが、 ナウなヤングはsubprocessをつかう公式の動機付け(PEP 324 -- subprocess - New process module)として No implicit call of /bin/sh. This means that there is no need for escaping dangerous she…

RasPiでステッピングモーターを動かす その2:半周回すだけ

前回に引き続き、ステッピングモーターNEMA17とコントローラーA4988をPython on RasPi3で制御してみます。 実際のところ 今回つかうNema17はNema11と同じ配置なので、基本的に公式ドキュメントを読み換えるだけでいけます。 import RPi.GPIO as GPIO # impor…

RasPiでステッピングモーターを動かす その1:準備

ステッピングモーターは3dプリンターで採用実績の多いnemaシリーズ(4個) NEMA17ステッピングモーター高トルクバイポーラDCステップモーターキット,LINGLONGメディア:これまた3dプリンター界隈で著名なA4988シリーズのコントローラーHiLetgo 5個セットRepRap …

miniterm.pyが割と使える

Python用シリアル通信ライブラリpyserialには サブコマンドとしてminiterm.pyというのが付いてきます。これが結構使え得たのでメモ。 実際のところ ボーレート3M、ハードウェアフロー制御、パリティodd、8bitというデバイスに接続するには、 以下の様なコマ…

軸の位置をオフセットさせる

ヒートマップやタイル状に敷き詰めるようなサンプルの場合、 軸が全く見えず困ることがあります。 幸い、matplotlibにも軸をオフセットさせるオプションが用意されています。 実際のところ """ ============== Dropped spines ============== Demo of spines…

matplotlib でスライダーを

matplotlibにはスライダーUIが付いてます。 値をインタラクティブに変更したい事例で使えますね。 実際のところ python import numpy as np import matplotlib.pyplot as plt from matplotlib.widgets import Slider, Button, RadioButtons fig, ax = plt.su…

Hy環境からグラフ描画環境matplotlibを使う

matplotlibはnumpyと合わせて使われる事も多い、 グラフ描画ライブラリです。 qiitaの記事は5000件超、最新で使われてる事例もここ一ヶ月で複数個あるので 使われているライブラリと言っていいでしょう。 今回は、これをHylang経由で使って見ます。 実際のと…

hy2pyを使ってhyスクリプトをpythonスクリプトに転換する

hy2pyはhy環境に付属するpythonスクリプトコンバーターです。 何からの事情でPythonしかない先で使うときに活用できそうです。 実際のところ (import time) (import serial) (setv ser ( serial.Serial "/dev/ttyACM0" 57600)) (defn robotTask [dist] (-> (…

Hylang環境でpySerialをつかってシリアル通信やる

巷で大人気のPythonには豊富なライブラリ群があります。 教材の類も充実してますし、会社や研究室の先行プロジェクト資産もあるでしょう。 Hylangは幸いにしてPythonとの連携機能が充実しているので こういった先行資産を活用しながら、徐々にLisp色に染めて…

Ubuntu18 に Python上で動く魔界LISP "Hy"の環境をつくる

HyはPython上に実装されたLISP方言です。 Pythonのライブラリを活かしながら、LISP的な記述ができる強みがあります。今回はこのHy言語をUbuntu18LTSの上に構築してみます。 実際のところ Python上で動いているので、当然Pythonの環境は必要です。 今回はPyth…

Jetson Nanoをつかう その2:物体認識のサンプルを動かしてみる

今書いてまs

RasPiのGPIOのBCM番号をみる

実際のところ PythonのGPIOコマンドを使おうとする場合、raspbian組み込みの以下のコマンドでピン状況をみる $ gpio readall +-----+-----+---------+------+---+---Pi 3+--+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | …

Gitリポジトリにあるpipパッケージを導入する

pipのリポジトリにはないけど、git系にはあがっているパッケージを 導入する方法です。 実際のところ http/httpsURLのあたまに"git+"をつける $ sudo pip3 install git+https://github.com/ekaschalk/jedhy.gitまたは、プロトコルのところをgitにしたやつで…