2014年8月13日 星期三

Arduino pro mini burn-in with pl2303 USB to ttl

最近買了Arduino pro mini,但這是沒有內建USB燒錄介面的 (因為沒買到Nano所以用mini....)
找了不少資料,後來採用這樣的接線方式就能燒錄了,還蠻簡單的
特別要注意到的是因為燒錄時會使用到DTR的腳位,所以需要另外把PL2302的dongle跳線出來才行



當然這是因為我沒有現成可以直接拉DTR的才會這樣,最好還是多花點錢買像下面這張圖的USB轉TTL比較方便…


2014年7月2日 星期三

Modbus/TCP in Android with Python, using modbus_tk

in last case, we use a TCP socket to send Modbus/TCP commnad
and then print out the result to test Modbus/TCP in android

now, we will use a good library for Modbus ==> modbus_tk
you may can find three modbus solutions:
1. pymodbus: it's a good library for python with huge structure...
  it support Modbus/RTU and Modbus/TCP, but I don't use it here.
  because it always need pySerial library. If you can't put the pySerial library into your system, the pymodbus don't work...

2. MinimalModbus: a minimal modbus library. it just support Modbus/RTU.

3. modbus_tk: it's a nice modbus library!! it support Modbus/RTU and Modbus/TCP
  if you don't use Modbus/RTU, you have no need to install pySerial library! (good!)

so finally, I choose modbus_tk to develop modbus program

the step to demonstrate:
1. download modbus-tk here, and then unzip modbus-tk-0.4.2.zip into modbus_tk folder.
2. download mbTcpTest2.py here.
3. the screenshot as below:
in modbus_tk
4. put all the file into your android phone with SL4A, and the execute it!!

enjoy it!!~~





2014年7月1日 星期二

Modbus/TCP with Android and Python

here I had write a Python program with SL4A to demonstrate Modbus/TCP.
there is no any Modbus library used in this case, because I just want show a simple case for Modbus/TCP.
of course, I will use Modbus library later. it will be more easy~

some about this program:
1. data = pack('<BBBBBB', 1, 2, 0, 0, 0, 6)
it's the Modbus/TCP header
2. data = data + pack('<BBBBBB', 1, 4, 0, 0, 0, 4)
it's the Function code 4, and to read 4 registers

here to download

2014年6月29日 星期日

pyserial 安裝

下指令
E:\python\workspace\pyserial\pyserial-2.7>python setup.py install
即可

原來, 之前用easy_install -U pyserial這個指令都沒有安裝完全
正常裝完後, C:\Python27\Lib\site-packages中有:
serial 資料夾
pyserial-2.7-py2.7.egg-info 檔案

我原來裝完後只有 egg檔才會沒有自動提示

這時只要下載pyserial的原始碼解壓後
把它原始碼的部份放到 C:\Python27\Lib\site-packages 中即可
如圖,這是最近安裝 modbus_tk 但一樣用easy_install後沒有提示
只要把其原始碼放入,即會有提示


但說起來也怪,雖然在編輯器沒有提示,但在其console下就有!!
應該是個bug吧
不過手動放原始碼也有好處啦
當你不清楚回傳的東西是什麼時,可以直接連到source code去看,方便很多

Disassemble hp deskjet 3070A

now, the printer is so powerful, and it have many good design for cost down that we can learn.

I will disassemble my printer and look what chips it use, and how it work!



1. here is the control panel.
2.main board




3. WIFI module






2014年1月20日 星期一

make distribution 發布套件

1. 要製作source distribution, 指令為
python setup.py sdist
將產生 .zip 檔
(1)內容如下

(2)下python setup.py sdist指令後如下



2. 另外也可以包成tar.gz, 指令為
python setup.py sdist --formats=gztar,zip
上面指令將產生.zip, .tar.gz



2014年1月19日 星期日

python 安裝 pymodbus

1. 使用easy_install裝好後沒有自動提示
所以又手動裝裝看, 結果竟然有Error!!
找不到 vcvarsall.bat
還不知道為何????
-->剛找到說,這是因為少了 C compiler的原因???(why?)
只要裝了minGW (或是VC的 compiler),再把安裝指令改為:
setup.py install build --compiler=mingw32
-->這還要再找時間來測測看

2. 後來發現 easy_install後,再把從pymodbus網頁下載到的source解壓後,把"pymodbus"這個資料夾放到「C:\Python27\Lib\site-packages」資料夾中即可有「Auto completion」功能
也不需要在「Tools / options / IDE options / Special packages」欄位中加入 pymodbus的文字…
這一點可能再找時間找空白的電腦測試看看


============Error 如下=================
E:\python\workspace\pymodbus\pymodbus-1.2.0>python setup.py install
running install
running bdist_egg
running egg_info
writing requirements to pymodbus.egg-info\requires.txt
writing pymodbus.egg-info\PKG-INFO
writing top-level names to pymodbus.egg-info\top_level.txt
writing dependency_links to pymodbus.egg-info\dependency_links.txt
reading manifest file 'pymodbus.egg-info\SOURCES.txt'
writing manifest file 'pymodbus.egg-info\SOURCES.txt'
installing library code to build\bdist.win-amd64\egg
running install_lib
running build_py
creating build
creating build\lib
copying ez_setup.py -> build\lib
creating build\lib\pymodbus
copying pymodbus\bit_read_message.py -> build\lib\pymodbus
copying pymodbus\bit_write_message.py -> build\lib\pymodbus
copying pymodbus\constants.py -> build\lib\pymodbus
copying pymodbus\device.py -> build\lib\pymodbus
copying pymodbus\diag_message.py -> build\lib\pymodbus
copying pymodbus\events.py -> build\lib\pymodbus
copying pymodbus\exceptions.py -> build\lib\pymodbus
copying pymodbus\factory.py -> build\lib\pymodbus
copying pymodbus\file_message.py -> build\lib\pymodbus
copying pymodbus\interfaces.py -> build\lib\pymodbus
copying pymodbus\mei_message.py -> build\lib\pymodbus
copying pymodbus\other_message.py -> build\lib\pymodbus
copying pymodbus\payload.py -> build\lib\pymodbus
copying pymodbus\pdu.py -> build\lib\pymodbus
copying pymodbus\register_read_message.py -> build\lib\pymodbus
copying pymodbus\register_write_message.py -> build\lib\pymodbus
copying pymodbus\transaction.py -> build\lib\pymodbus
copying pymodbus\utilities.py -> build\lib\pymodbus
copying pymodbus\version.py -> build\lib\pymodbus
copying pymodbus\__init__.py -> build\lib\pymodbus
creating build\lib\pymodbus\client
copying pymodbus\client\async.py -> build\lib\pymodbus\client
copying pymodbus\client\common.py -> build\lib\pymodbus\client
copying pymodbus\client\sync.py -> build\lib\pymodbus\client
copying pymodbus\client\__init__.py -> build\lib\pymodbus\client
creating build\lib\pymodbus\datastore
copying pymodbus\datastore\context.py -> build\lib\pymodbus\datastore
copying pymodbus\datastore\remote.py -> build\lib\pymodbus\datastore
copying pymodbus\datastore\store.py -> build\lib\pymodbus\datastore
copying pymodbus\datastore\__init__.py -> build\lib\pymodbus\datastore
creating build\lib\pymodbus\internal
copying pymodbus\internal\ptwisted.py -> build\lib\pymodbus\internal
copying pymodbus\internal\__init__.py -> build\lib\pymodbus\internal
creating build\lib\pymodbus\server
copying pymodbus\server\async.py -> build\lib\pymodbus\server
copying pymodbus\server\sync.py -> build\lib\pymodbus\server
copying pymodbus\server\__init__.py -> build\lib\pymodbus\server
creating build\bdist.win-amd64
creating build\bdist.win-amd64\egg
copying build\lib\ez_setup.py -> build\bdist.win-amd64\egg
creating build\bdist.win-amd64\egg\pymodbus
copying build\lib\pymodbus\bit_read_message.py -> build\bdist.win-amd64\egg\pymo
dbus
copying build\lib\pymodbus\bit_write_message.py -> build\bdist.win-amd64\egg\pym
odbus
creating build\bdist.win-amd64\egg\pymodbus\client
copying build\lib\pymodbus\client\async.py -> build\bdist.win-amd64\egg\pymodbus
\client
copying build\lib\pymodbus\client\common.py -> build\bdist.win-amd64\egg\pymodbu
s\client
copying build\lib\pymodbus\client\sync.py -> build\bdist.win-amd64\egg\pymodbus\
client
copying build\lib\pymodbus\client\__init__.py -> build\bdist.win-amd64\egg\pymod
bus\client
copying build\lib\pymodbus\constants.py -> build\bdist.win-amd64\egg\pymodbus
creating build\bdist.win-amd64\egg\pymodbus\datastore
copying build\lib\pymodbus\datastore\context.py -> build\bdist.win-amd64\egg\pym
odbus\datastore
copying build\lib\pymodbus\datastore\remote.py -> build\bdist.win-amd64\egg\pymo
dbus\datastore
copying build\lib\pymodbus\datastore\store.py -> build\bdist.win-amd64\egg\pymod
bus\datastore
copying build\lib\pymodbus\datastore\__init__.py -> build\bdist.win-amd64\egg\py
modbus\datastore
copying build\lib\pymodbus\device.py -> build\bdist.win-amd64\egg\pymodbus
copying build\lib\pymodbus\diag_message.py -> build\bdist.win-amd64\egg\pymodbus

copying build\lib\pymodbus\events.py -> build\bdist.win-amd64\egg\pymodbus
copying build\lib\pymodbus\exceptions.py -> build\bdist.win-amd64\egg\pymodbus
copying build\lib\pymodbus\factory.py -> build\bdist.win-amd64\egg\pymodbus
copying build\lib\pymodbus\file_message.py -> build\bdist.win-amd64\egg\pymodbus

copying build\lib\pymodbus\interfaces.py -> build\bdist.win-amd64\egg\pymodbus
creating build\bdist.win-amd64\egg\pymodbus\internal
copying build\lib\pymodbus\internal\ptwisted.py -> build\bdist.win-amd64\egg\pym
odbus\internal
copying build\lib\pymodbus\internal\__init__.py -> build\bdist.win-amd64\egg\pym
odbus\internal
copying build\lib\pymodbus\mei_message.py -> build\bdist.win-amd64\egg\pymodbus
copying build\lib\pymodbus\other_message.py -> build\bdist.win-amd64\egg\pymodbu
s
copying build\lib\pymodbus\payload.py -> build\bdist.win-amd64\egg\pymodbus
copying build\lib\pymodbus\pdu.py -> build\bdist.win-amd64\egg\pymodbus
copying build\lib\pymodbus\register_read_message.py -> build\bdist.win-amd64\egg
\pymodbus
copying build\lib\pymodbus\register_write_message.py -> build\bdist.win-amd64\eg
g\pymodbus
creating build\bdist.win-amd64\egg\pymodbus\server
copying build\lib\pymodbus\server\async.py -> build\bdist.win-amd64\egg\pymodbus
\server
copying build\lib\pymodbus\server\sync.py -> build\bdist.win-amd64\egg\pymodbus\
server
copying build\lib\pymodbus\server\__init__.py -> build\bdist.win-amd64\egg\pymod
bus\server
copying build\lib\pymodbus\transaction.py -> build\bdist.win-amd64\egg\pymodbus
copying build\lib\pymodbus\utilities.py -> build\bdist.win-amd64\egg\pymodbus
copying build\lib\pymodbus\version.py -> build\bdist.win-amd64\egg\pymodbus
copying build\lib\pymodbus\__init__.py -> build\bdist.win-amd64\egg\pymodbus
byte-compiling build\bdist.win-amd64\egg\ez_setup.py to ez_setup.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\bit_read_message.py to bit_rea
d_message.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\bit_write_message.py to bit_wr
ite_message.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\client\async.py to async.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\client\common.py to common.pyc

byte-compiling build\bdist.win-amd64\egg\pymodbus\client\sync.py to sync.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\client\__init__.py to __init__
.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\constants.py to constants.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\datastore\context.py to contex
t.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\datastore\remote.py to remote.
pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\datastore\store.py to store.py
c
byte-compiling build\bdist.win-amd64\egg\pymodbus\datastore\__init__.py to __ini
t__.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\device.py to device.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\diag_message.py to diag_messag
e.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\events.py to events.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\exceptions.py to exceptions.py
c
byte-compiling build\bdist.win-amd64\egg\pymodbus\factory.py to factory.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\file_message.py to file_messag
e.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\interfaces.py to interfaces.py
c
byte-compiling build\bdist.win-amd64\egg\pymodbus\internal\ptwisted.py to ptwist
ed.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\internal\__init__.py to __init
__.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\mei_message.py to mei_message.
pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\other_message.py to other_mess
age.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\payload.py to payload.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\pdu.py to pdu.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\register_read_message.py to re
gister_read_message.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\register_write_message.py to r
egister_write_message.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\server\async.py to async.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\server\sync.py to sync.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\server\__init__.py to __init__
.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\transaction.py to transaction.
pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\utilities.py to utilities.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\version.py to version.pyc
byte-compiling build\bdist.win-amd64\egg\pymodbus\__init__.py to __init__.pyc
creating build\bdist.win-amd64\egg\EGG-INFO
copying pymodbus.egg-info\PKG-INFO -> build\bdist.win-amd64\egg\EGG-INFO
copying pymodbus.egg-info\SOURCES.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying pymodbus.egg-info\dependency_links.txt -> build\bdist.win-amd64\egg\EGG-
INFO
copying pymodbus.egg-info\requires.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying pymodbus.egg-info\top_level.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying pymodbus.egg-info\zip-safe -> build\bdist.win-amd64\egg\EGG-INFO
creating dist
creating 'dist\pymodbus-1.2.0-py2.7.egg' and adding 'build\bdist.win-amd64\egg'
to it
removing 'build\bdist.win-amd64\egg' (and everything under it)
Processing pymodbus-1.2.0-py2.7.egg
Removing c:\python27\lib\site-packages\pymodbus-1.2.0-py2.7.egg
Copying pymodbus-1.2.0-py2.7.egg to c:\python27\lib\site-packages
pymodbus 1.2.0 is already the active version in easy-install.pth

Installed c:\python27\lib\site-packages\pymodbus-1.2.0-py2.7.egg
Processing dependencies for pymodbus==1.2.0
Searching for twisted>=12.2.0
Reading https://pypi.python.org/simple/twisted/
Best match: Twisted 13.2.0
Downloading https://pypi.python.org/packages/source/T/Twisted/Twisted-13.2.0.tar
.bz2#md5=83fe6c0c911cc1602dbffb036be0ba79
Processing Twisted-13.2.0.tar.bz2
Writing c:\users\malo\appdata\local\temp\easy_install-x42suz\Twisted-13.2.0\setu
p.cfg
Running Twisted-13.2.0\setup.py -q bdist_egg --dist-dir c:\users\malo\appdata\lo
cal\temp\easy_install-x42suz\Twisted-13.2.0\egg-dist-tmp-m3xy4n
error: Setup script exited with error: Unable to find vcvarsall.bat

PyScripter 變更背景顏色

這邊已經有人家先配好的
https://code.google.com/p/pyscripter/wiki/Customization
下載
DarkHighlight.ini
DarkHighlight2.ini
其中一個
再用"Tools / Options / Import/Export / Import Highlighters"
把設定匯進來
就有顏色了


2014年1月18日 星期六

pyscripter + NumPy 的自動提示(完成)功能 (auto-completion)

pyscripter來寫python程式已經一段時間了, 感覺還蠻好用了
也很習慣它的自動完成功能 (Auto completion)
最近使用NumPy時發現這個功能竟然不會動
但在Python Interpreter視窗中卻運作良好, 真的很奇怪


google一下, 得知要再編輯視窗也有Auto completion功能
只要簡單設定一下就可以了
如下圖, 在"Tool / Option / IDE Options"中
把"numpy"加入 "Special packages"中即可

可能是因為這個package是位於不一樣的地方造成的吧


NumPy 在win7 64位元, python2.7 環境下安裝

消失一陣子....前一陣子終於把"Head First Python"看完了
蠻精彩的, 由一般的python IO一路說到web設計, android手機程式, GAE設計
看得蠻入神的, 花了一個月在工作之餘看完了它

好~回到正題, 最近有可能會用到NumPy, 因此開始學...沒想到剛要安裝NumPy就卡關了
原來, 在64位元下要另外用非官方版的安裝程式安裝!!
http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy
我是用python2.7所以下載相對應了版本
numpy-MKL-1.8.0.win-amd64-py2.7.exe


若是用32位元就不用那麼麻煩了
可以用easy_install numpy 指令直接安裝
或是使用NumPy官方的安裝檔:
http://sourceforge.net/projects/numpy/files/NumPy/1.7.2/
中的
http://sourceforge.net/projects/numpy/files/NumPy/1.7.2/numpy-1.7.2-win32-superpack-python2.7.exe/download


2014年1月6日 星期一

python 2.7 3.3共存 -- 使用pyscripter

因為一開始在學Python時,看網路上都推python2.7
但最近在讀「Head First Python」這本書是使用3.x的
一開始沒注意到都沒問題……一直到…
開始寫網頁時,他的第一個程式 Web Server就跑不起來了
因為用了3.x only的函式…XD
搞不懂怎麼設定,直到…

後來發現在它在功能表中預設已有針對每個版本的執行捷徑,才了解怎麼做!!

比如說在 PyScripter for Python 3.3上面按右鍵 / 內容,就可以看到捷徑是:
"C:\Program Files\PyScripter\PyScripter.exe" --PYTHON33
所以只要在執行程式後加入你要的版本就可以了!!

真的很方便!!