2020年3月31日 星期二

[Notepad++] 找到某段字並全部刪除




主要是利用搜尋 "Search Mode"的 Regular Expression 的功能,

比方我想將下列文字檔, 每一行都有 "(別名: XXXXX " 的文字, 想要刪除, 

可以在輸入以下內容

Find what :   [(別名].*

Replace with:        (這裡包留空白,不要填)

  [你想要找到的字]
.* 接下來的字

 [(別名].*  ==> 所以表示是你想要找到 以 (別名 為開頭的任何字串..., 然後換成空的





有些時候你想要刪除所有的程式註解..例如

# 這一行是註解

Find what :   [^#].*

可以先找到以 # 為行首的註解 , 將它換成空白行 ,之後再利用notepad++ 的 "Edit-> Line Operation--> Remove Empty Lines" 去刪除空白行, 就大空告成.




2020年3月18日 星期三

[C語言]Code:blocks 編譯多個檔案



在專案愈來愈大時,就不會再把所有功能寫在一個檔案裡,會將不同功能寫在不同檔案中,因此當要同時編譯多個檔案時,就是要先去建立專案,然後將多個原始檔加入到專案中, 然後再build 專案。

底下以Code:blocks 建立專案為例


1. 建立新專案 File-> New-> Project




2. 選擇Console application



3.選擇C


4. 建立專案名稱及專案存放位置




5. 在專案管理視窗(Shfit-F2) 替專案新增原始檔案, 原始檔案(.c. h)可以先複製到專案資料匣下





6. 專案加入

2020年2月22日 星期六

[C語言]如何設計一個表格

[進階C程式設計] 如何設計一個表格


資料結構的設計
typedef struct _table{
  int row;
  int column;
  int **data;

}Table;

typedef  Table * pTable;

//產生表格決定欄列大小
pTable create_table(int row,int column);

//刪除表格 release memory
void delete_table(pTable ptbl);
//卬出表格內容
void dump_2d(int row,int column, int **a );




相關文章





工商廣告: #APCS程式設計營隊 課程特色 : 工程師級的師資、精編的APCS講義、豐富的程式演練、優質的電腦教室、詳細的考古題解說 #開課時間 : 2020年 暑假開課 #上課教室: 台北: 艾鍗學院電腦教室(台北市重慶南路1段) 台中:逄甲大學電腦教室 高雄:中山大學電腦教室 更多資訊:http://bit.ly/34wHMwg

2020年2月18日 星期二

code:blocks的Function List (Symbols browser)



使用code:blocks 也有和 notepad++樣的 Function List , 開啓了這個功能才可以很
方便的快速移動到不同的函式去.


Settings -> Editor -> Code Completion -> Symbols browser

Check 'Display as free floating / docking window'







2019年12月30日 星期一

[python] Why Enclosing Function?




有時候函式某些參數, 可能只要第一次代入後,

而之後呼叫時參數都是相同的, 不希望每次呼叫都要一直代入相同的參數… 



  1. 使用global 變數 ? 程式結構不佳
  2. 使用預設參數? 但預設的又不是我想要的, 也是等於每一次呼叫都要代入
  3. 拿掉該參數? 但因為至少第一次呼叫時可能要代入不同的值, 但拿掉後此函數後就無法有代入參數的能力了


.


更多python程式設計請參考 Python 程式設計

2019年12月16日 星期一

什麼是Device Tree?



什麼是Device Tree?

目前Raspberry Pi 3 的kernel 核心為 4.4.y, 只可以使用 Device Tree 來描述 Internal SoC 及 External (Board level) 的硬體資源.

Device Tree 就是把 Platform Device 架構中用來描述硬體資源的部份給抽出來, 因為Platform Device 的檔案是用C code去描述的, 但概念上硬體資源的描述應和程式無關也與Linux版本無關. 用C 去描述很慘, 因為只要重新定義硬體資源都要重新編譯核心, 很浪費時間. 再來, 要去描述硬體資源,如果不熟悉C的語法, 也很難去寫 ,因為C語法不對會導致編譯失敗。

 Device Tree架構, 解決了上述這些問題, 不用懂C也能定義硬體資源, 如此硬體工程師也可以做了,因為pin 腳拉那根做什麼功能, 硬體工程師最清楚 ,不然做軟體,寫code的人就要自己去對線路圖 (也不是不行, 但如果有對的人做掉, 豈不更快!)


硬體資源: 包含 SoC-level (.dtsi)及 board level (.dts)

  1. 描述CPU, RAM size
  2. 描述 Memory-mapped 上的元件, PWM、UART、I2C、SPI等晶片內部元件的描述, 如暫存器位址及大小, 中斷號碼、DMA,, pinctrl
  3. 描述外部連接裝置, 如裝置規格, 以flash來說,包含 page size, flash size等資訊, 通常寫device driver會從這裡取得裝置資訊. 外部裝置通常使用 device tree overlay (產生.dtbo)的方式而不要直接修改.dts.
Device Tree  
1.  不用重新 compile source code 即可以更改系統的 configuration
2.  當硬體只有小小的更改,只需要 dts 檔小改, 然後再重新編譯出dtb即可。
3.  可以重複使用已存在的 dts 檔在其他地方,也可以覆蓋過去定義的功能
4.  移除 C code ,使得硬體的描述架構更清楚。 




實測:

(1) 加入MCP3008 ADC device到 device tree 中, 會自動掛載 .compatible="mcp3008" 的驅動程式. 

> dtc -@ -I dts -O dtb -o mcp300x.dtbo mcp300x.dts
sudo dtoverlay ./mcp300x.dtbo

(2) 讀取ADC channel 0

cat /sys/bus/iio/devices/iio:device0/in_voltage0_raw





References