文章程式碼顯示

2019年11月5日 星期二

一起學 Python 119 : 使用 iftop 查看網路流量

使用 sudo iftop 即可看到系統對各個 IP 的連線狀況 進去後可以看到本機跟各種 IP 的連線狀況 在這個 tool 裡面並不是使用帶參數的方式來改變其顯示結果而是使用快捷鍵的方式 如使用 b : 開啟/關閉上方的 bar B : bar 顯示週期切換 ( 2/10/40 sec ) p : port 顯示 在這邊我們可以開啟 port 顯示以及將週期切換至 10 sec 或 40 sec 觀察得知是哪一個 port 一直在佔用網路頻寬 接著使用 sudo lsof -i :PORTNUMBER 其中 PORTNUMBER 就是你要查詢的 PORT 我的...
閱讀更多 »

2019年9月7日 星期六

《筆記》C語言 - 補充_11: 動態配置記憶體空間 calloc 與 struct 與 指標函數 的結合

這邊我就不做過多的解釋,因此部份已經是很深的 C 語言使用 這邊我直接舉一個例子 下例中,我生成十個學生的原始成績(score),並將所有學生的原始成績都加上五(num) 變為 new_score ( new_score = score + 5) #include "stdio.h" #include "stdlib.h" #define numberStudent 10 #define Num 5 typedef struct _Student{ int No; ...
閱讀更多 »

《筆記》C語言 - 補充_11: 動態配置記憶體空間 calloc 與 malloc

這邊我以 calloc 舉例,並請注意到我 free 的對象 #include "stdio.h" #include "stdlib.h" #define numberStudent 10 typedef struct _Student{ int No; int score; }Student, *PTR_Student; int main() { PTR_Student studentTemp = NULL; studentTemp...
閱讀更多 »

《筆記》C語言 - 補充_10: 再戰指標變數、struct 結構 與 void* 的結合

#include "stdio.h" int main() { typedef struct{ int pool_1; int pool_2; }money_pool_small,*PTR_money_pool_small; typedef struct{ int pool_3; int pool_4; int pool_5; int pool_6; ...
閱讀更多 »

2019年9月1日 星期日

《筆記》C語言 - 補充_9: calloc 與普通的變數在內部儲存的方式 (堆(heap) & 棧 (stack) )

1、棧區(stack): 放置為由高地址到低地址 由編譯器(系統)自動分配釋放 ,存放函數的參數值,局部變量的值等。其操作方式類似於數據結構中的棧。 2、堆區(heap):  放置為由低地址到高地址 *往上堆* 一般由程序設計師分配釋放, 若程序設計師不釋放,程序結束時可能由 OS 回收 。 注意它與數據結構中的堆是兩回事,分配方式類似於鍊結。  3、全局區(靜態區)(static) 全局變量和靜態變量的存儲是放在一塊的,初始化的全局變量和靜態變量在一塊區域,...
閱讀更多 »

《筆記》C語言 - 補充_8: 配置記憶體空間 calloc 與 malloc

#include "stdio.h" #include "stdlib.h" typedef struct _Student{ int No; int phone_number; }Student, *PTR_Student; int main() { PTR_Student Amy = NULL; Amy = (PTR_Student)calloc(sizeof(Student),1); printf("[calloc]\r\n"); ...
閱讀更多 »

《筆記》C語言 - 補充_7: struct 指標 搭配 calloc 配置記憶體空間

#include "stdio.h" #include "stdlib.h" typedef struct _Student{ int No; int phone_number; }Student, *PTR_Student; int main() { PTR_Student Amy = NULL; // calloc 會依 Student 這個 struct 的大小配置記憶體空間 // 並且回傳該記憶體空間的起始位址(所以我們將這個位址強制轉型為...
閱讀更多 »

《筆記》C語言 - 補充_6: enum 的實際用處

之前在學 enum 的時候一直覺得這東西的用處不大 直到進入業界之後,才知道這東西使用的頻率實在太高了 於是我就寫了一個例子來做為一個示範,模擬一下 enum 的實際用處是什麼 在一個小型的專案裡面(例如只有你一個人) ,你大可以不使用 enum 但只要程式變的很大,沒使用 enum 甚至是 struct 的狀況下,程式碼的可讀性就會很差 這邊我用一個 "判斷風扇狀態" 的實際案例做為演示 此例子演示了使用 enum 後,雖然在剛開始做宣告的地方必須多下一點功夫 但這可以讓你後續的程式邏輯都可以用...
閱讀更多 »

2019年8月31日 星期六

一起學 Python 114 : 使用 pyinstaller 庫打包為 exe 檔案

使用 pyinstaller 打包為 exe 檔案 若使用 pyinstaller -D '檔案位置'  則會將所須要的檔案全部包為一個資料夾 打包完成的資料會放置於  C:\Users\USER\dist 檔案大小為 565 MB 若單純使用 -F 則會生成一個單一的 .exe 檔案 檔案大小為 203 MB 我的 Youtube 頻道,一定要訂閱 我將定期推出程式語言的新手教學...
閱讀更多 »

一起學 Python 113 : 使用 timeit 庫 計算 函式執行時間

from timeit import timeit import numpy as np def FuncA(): a = np.arange(100000) b = np.arange(100000) c = a**2 + b**2 return c print( "Start to execute FuncA" ) # timeit ( '函數名稱' , 'from __main__ import 函數名稱', number =...
閱讀更多 »

2019年1月27日 星期日

《入門》寫程式Arduino教學 - 10 : 按鈕開關 以及 防機械彈跳

機械開關往往會有機械彈跳的問題 所產生的結果就是明明按鈕指有被按一下,但 Arduino 確認為按了很多下 這不是 Arduino 的問題,而是所有的微控制器因為其感測速度太快而產生 解決機械彈跳最簡單的辦法就是使用 debounce 函式庫 直接上程式碼 #include "Bounce.h" #define Btn 2 Bounce bouncer = Bounce( Btn,40 ); // 若將 40 這個數字改大 debounce 效果會更好 //...
閱讀更多 »

《高階》寫程式Arduino教學 - 12:Arduino Uno 睡眠以及看門狗定時喚醒

程式碼於 Blogger 中難以呈現,請連結至 Github 實現功能 : 使 Arduino Uno 進入休眠模式,且每隔 24 秒鐘才醒來一次 可以大幅降低 Arduino Uno 的耗電量 我的 Youtube 頻道,一定要訂閱 我將定期推出程式語言的新手教學影...
閱讀更多 »

2019年1月22日 星期二

NodeMCU 教學 - 17:WeMos D1 mini (NodeMCU) 配合 PT6961 小時鐘

此文用於分享程式碼給由 Facebook message 提問的呂先生 #include "ESP8266WiFi.h" #include "BlynkSimpleEsp8266.h" #include "WidgetRTC.h" #include "OasisLED.h" // ===== 連線環境設置 ===== char ssid[] = "yourNetwork"; // your network SSID (name) char pass[] = "secretPassword"; // your network password (use for WPA, or use...
閱讀更多 »

2019年1月19日 星期六

《進階※應用篇》寫程式Arduino教學 -13:0.96吋 OLED (128*64) 電壓錶

請先使用前篇文章的 I2C SCANNER 掃描一下 I2C 的 Address 接著需下載兩個 Library 如下連結 https://github.com/adafruit/Adafruit_SSD1306 https://github.com/adafruit/Adafruit-GFX-Library 解壓縮後丟到 C:\Program Files (x86)\Arduino\libraries 裡面即可 需注意我的 OLED 為 128*64 若你不是的話可能需要修改 Adafruit_SSD1306.h...
閱讀更多 »

2019年1月14日 星期一

《進階※應用篇》寫程式Arduino教學 -11:Lora 長距無線傳輸 SX1278 1W 433MHZ 繼電器同步應用

經過基礎篇與應用篇後,我實作了一個繼電器同步的應用 事實上這個實作應用的可用之處很廣泛 畢竟繼電器這東西在工控領域已經無所不在了 會做這個應用事實上還有一個故事 當時我剛拿到 Lora 模組,正想說要做什麼應用時 有人找我來幫他解決一個問題 問題是這樣的 : 在一個山區有上下兩個水塔,兩個水塔之間直線距離約 1.5km 當上水塔的水位過低時,下水塔會啟動幫浦把水打上去 本來上下水塔之間是走地下電纜靠兩個控制器來探測浮球與控制抽水馬達 但貌似是地下電纜的線斷了,但因為在地底下,根本無法查出線斷在哪裡 所以就委託我做一個無線訊號傳輸的應用 這問題正好可以使用...
閱讀更多 »

《進階※應用篇》寫程式Arduino教學 - 10:Lora 長距無線傳輸 SX1278 1W 433MHZ 進階 收發 2Bytes

將前篇的發送端程式碼修改為 "發送兩個 Bytes 數據的程式碼" 該程式碼中使用了 Serial.readBytes() 函式,並指定接收 2 Bytes 發送端(發送2 Bytes) #include "SoftwareSerial.h" #define LED 13 #define AUX 5 void waitAUX(); SoftwareSerial mySerial(2, 3); // RX, TX byte incoming2Byte[2]={0xFF,0xFF};...
閱讀更多 »

《進階※應用篇》寫程式Arduino教學 - 09:Lora 長距無線傳輸 SX1278 1W 433MHZ 進階

此篇不同於基礎篇 我額外使用了  SoftwareSerial.h 將 uart 通訊口獨立出來,以免跟 Arduino IDE 的監看視窗打架 並且我將 "接收端的地址+波段" 與 "數據" 分隔開來 發射端代碼(同樣發射一個byte) #include "SoftwareSerial.h" #define AUX 5 #define LED 13 SoftwareSerial mySerial(2, 3); // RX, TX const...
閱讀更多 »

2019年1月12日 星期六

《進階※應用篇》寫程式Arduino教學 - 08:Lora 長距無線傳輸 SX1278 1W 433MHZ 基礎

先前使用過 RF 與 uart 無線傳輸後,一直想碰碰更長距離的傳輸 畢竟先前使用的無線傳輸其功率較小 頂多傳個 100m 就是極限了 甚至使用 RF 433MHz 只能無線傳輸個 5~6 米 ,而且拐個彎遇到水泥牆就斷線了 這讓我覺得很不便,如果不能長距離傳輸我何必弄的這麼麻煩呢? Lora 是這幾年才出現的無線傳輸協議 其號稱可以傳輸到 km 等級的 於是我就到沒屋頂拍賣買了一組來玩玩 我購買的 Lora 模組規格為以下 商品型號:E32 (433T30D)....
閱讀更多 »

2019年1月10日 星期四

《高階》寫程式Arduino教學 - 11:Arduino Nano 外部中斷 以及 Serial.print 仿格式化輸出

/* 此例中我使用的 button 為常閉型(若設置為pull-up模式則在按鈕未按下時為 LOW) #define button_pin 2 volatile unsigned long current_time = 0; //單位:msec volatile unsigned long duration_time = 0; //單位:sec volatile unsigned int start_flag = 0; volatile unsigned long last_interrupt_time = 0; volatile unsigned long interrupt_time...
閱讀更多 »

2018年12月29日 星期六

NodeMCU 教學 - 17:ESP8266 看門狗 WatchDog 關閉 ESP.wdtDisable() 使用法則

使用  ESP.wdtDisable() 關閉 Watchdog 指令的情況下,其 ESP8266 仍然會在約 8.35 秒左右觸發 Watchdog ,而這個 Watchdog 屬於 Hardware watchdog 此時版子會卡住,無法自動重啟,報出如下 圖(一) 訊息 ets Jan  8 2013,rst cause:4, boot mode:(1,6) wdt reset  接著,按了板上的 Reset 按鈕,仍然過了...
閱讀更多 »

↓↓↓ 連結到部落格方針與索引 ↓↓↓

Blog 使用方針與索引