星期四, 9月 10, 2015

python 使用 sha1

如何使用 python 計算 binary sha1.
str 中可以包含 binary data
 
>>> import hashlib
>>> b = "this is binary \x0f\x0b\x0c"
'this is binary \x0f\x0b\x0c'
>>>  hashlib.sha1(b.encode('utf-8')).hexdigest()
'275ef095712a186a6400746efdd4d0e9b51e7874'

星期一, 9月 07, 2015

Arduino 出現 "collect2.exe: error: ld returned 5 exit status" 的訊息

在 Arduino IDE 1.6.1 上編譯時出現以下訊息:

collect2.exe: error: ld returned 5 exit status

執行的 OS: Windows XP

解決的方式是:
換成 Arduino IDE 1.0.6 就可以解決這個問題了.

星期三, 5月 06, 2015

Arduino 無法接收 repeated start 的問題

參考:
https://github.com/arduino/Arduino/issues/848

把 twi.c 的 468 行:
    twi_stop();
comment 掉就行了:
    //twi_stop();

星期四, 3月 26, 2015

如何鎖定 Excel 裡的固定欄位

step 1) 選取所要固定的欄位 (反白)
step 2) 按右鍵(下拉式選單)
step 3) click "儲存格格式"
step 4) open the "保護" tab
step 5) unlock "鎖定", then "確定"
step 6) 在左下角"工作表x"按右鍵(下拉式選單)
step 7) click "保護工作表"
step 8) unlock "選取鎖定的儲存格", then "確定"


星期四, 3月 19, 2015

Arduino 的環境下, 把 Array 寫入到 flash ; 而不是 SRAM

在 MCU 的 SRAM 有限情形下, 要把一些表格放置到 flash 的區域下,而非佔用 SRAM

const byte myArray[] =

{
   0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,
   0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08,
   0x03,0x02,0x03,0x04,0x05,0x06,0x07,0x08,
};

使用 PROGMEM 關鍵字, 同時

#include

const byte myArray[] PROGMEM=

{
   0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,
   0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08,
   0x03,0x02,0x03,0x04,0x05,0x06,0x07,0x08,
};

在讀取時, 使用

pgm_read_byte_near(), ex:

int k;    // counter variable

char myChar; 

myChar =  pgm_read_byte_near(myArray + k); 


 


 


 


星期三, 3月 04, 2015

使用 re 模組抓出檔名內的數字


    #() 內的值就是會取得的變動值, \d 代表數字, \d+ 表示多個數字
    import re

    patt = re.compile('NO(\d+)TIME(\d+)')
    mobj = patt.match('NO9TIME1')
    print mobj.groups()  # ('9','2')
    print len(mobj.groups())
    print mobj.group(2)  # 1
   
    # mobj.groups() 會列出 mobj 裡的 group 資料
    # len(mobj.groups()) 就可以知道有多少筆了
   
    # 可使用名稱來讀取抓到的資料 ?P
   
    patt = re.compile('NO(?P\d)TIME(?P\d)')
    mobj = patt.match('NO9TIME2')
    print mobj.group('left_num')  # 9
    print mobj.group('time_num') # 2

    # 如果沒有 match , mobj 為 None

python 讀取目錄內檔案名稱

   
    cur_path = os.getcwd() #得知目前路徑
    for subdir, dirs, files in os.walk(cur_path):
        for file in files:
            # 得到檔案名稱 file

python 寫資料到 xls 檔中

使用 xlwt 模組,但 xlwt 不相容於 python 3.x 
xlwt-future 0.8.0 可以支援 python 3.x

最多支援到 256 column 的資料檔案
用法:
    import xlwt
    from xlwt  import Workbook
   
    wb = xlwt.Workbook(encoding='utf-8')         # open workbook
    ws = wb.add_sheet('First Sheet')                 # add sheet
    ws.write(row_num, col_num,'hello world')    # write data to cell
    wb.save('data_file.xls')                                 # write to xls file


python 3.x print 用法

python 3.x 的 print 無法像 python 2.x 一樣的用法:
3.x: print('hello world')
2.x: print 'hello world'

如果不斷行
3.x: print('hello world', end='')  # 使用空白字元, 或是空字元代替
2.x: print 'hello world',             # 使用 , (逗點)

星期三, 1月 07, 2015

Excel 向下填滿快速鍵

step 1: 從來源 cell 往目的 cell 做選擇的動作
 方式: 在來源cell 上按下 shift 鍵,移動滑鼠選擇範圍再 click

step 2: Ctrl+D 即可完成自動填滿動作