發表文章

目前顯示的是 2017的文章

[linux] 網路指令

ifconfig 查詢網路卡狀態 brctl 查詢bridge /proc/net/bonding 下 可查詢bonding狀態

[Python] ctype 的型態小記

ctype的形式可參考 官網 ctypes type C type Python type c_bool _Bool bool (1) c_char char 1-character string c_wchar wchar_t 1-character unicode string c_byte char int/long c_ubyte unsigned   char int/long c_short short int/long c_ushort unsigned   short int/long c_int int int/long c_uint unsigned   int int/long c_long long int/long c_ulong unsigned   long int/long c_longlong __int64  or  long   long int/long c_ulonglong unsigned   __int64  or  unsigned   long   long int/long c_float float float c_double double float c_longdouble long   double float c_char_p char   *  (NUL terminated) string or  None c_wchar_p wchar_t   *  (NUL terminated) unicode or  None c_void_p void   * int/long or  None 上圖引用自官網 另外標示,如果使用uint_32t等等型態,可利用c_uint32 如果是char的陣列,則可以直接利用char*字串長度 而結構(Struct)的建構則為: from ctype import * class Structex(Structure): _fields_ = [ ('name', c_char *10), #= c , char[10] ('age', c_int) #= c , int ] 利用_fields_和上表可以

[Python] 觀念小記

可變、不可變 參數分為可變、不可變兩種型態,不可變的有int,float,string ex: str = 'abc'  , str[1] = 'a' , str[1] = 'd' -> error 不可 原因: Python變數使用參照方式,不可變形態中都是單一參照,不能對單獨內容改變 自訂義函式 定義中可以設定default值,但有設定的需在未設定的後面 ex: def add(a , b=0) -> ok  ,  def add (a = 1 ,b) -> error 輟星運算式 * , **  對函式輸入執行拆解 *拆解list , ** 拆解dictionary ex: def add(*arg) -> add(1,2,3)  -> 輸入arg 為list -> arg=[1,2,3] 閉包和裝飾器 Python中 函式可以利用函式為輸入,在函式內有函式 又稱為閉包 利用此特性建立裝飾器 @ 閉包 ex: def add(num1): def add2(num2): return num1+num2 return add2 利用gen_power(2)(3) 分別當成輸入 num1 和 num2 ,輸出為5 可以看出來num1會傳遞至下一層def中 藉此方法修飾函式,製作成裝飾器 ex: 想製作一個通用的輸出decorator def print_func(title): def decorator(func): def modified_func(*args,**kwards): result =func(*args,**kwards) print title , result return modified_func return decorator @print_func(title='result:') def add(*lst): return sum(lst) 執行 add(1,2,3) 輸出 result: 6 decorator的執行流程 print_func -> d

[役男忘] 成功嶺的那十二天

紀錄一下研發替代役的那十二天 簡單幾句帶過讓未來的我有機會回首當初過了怎樣的生活 進去後最不自由的除了手機網路外,就是廁所時間 上廁所變成了集體行動,下意識的忍忍忍 我想是造就很多人久久沒便意的原因吧 研發替代役果然是替代役,在太陽下太久長官還會擔心你會不會曬昏 國高中的老師都不太會理你的說 食物的部分是類似國小營養午餐,但是比較清淡而且都放很久 中午的餐大概十點就到了,因此常常吃起來軟爛軟爛 幹部們看到我們加菜都很驚訝 沒事絕對不要去主動當什麼小老師,的確很有道理 因為那些微量加分還是比不上內務好好整理 當了唯一一個沒有榮譽價的過水小老師,另類特色 連最後名單上我的職位都不是小老師,真的一個義工路線 不滿就在到底三天大爆發,開始偷懶打混 才發現人家說得有道理,當你認真的時候別人打混 結果獎勵一樣,甚至你比別人差 這時侯還真的會覺得自己像笨蛋~ 也讓我學到,在什麼場合就要用什麼態度 別帶著以為別人會發現你的努力地傻傻心態幹下去 整體來說算是有趣的經驗 大家一起過水,跟小老師們談論 過水班的學長人都很好,也讓我們有更多悠閒時間 十二天前後較慢以外,中間真的是非快 許許多多的規定在出來後才覺得有趣 當兵十二天真的沒什麼,但是認識一群有力的夥伴們也不錯

Raspberry Pi3 利用藍芽連結手機terminal

圖片
使用程式為python3,做法和一般藍芽使用socket不同。 Raspberry Pi 的藍芽配對成功後,無法直接透過手機app連線 程式兩端無法建立連線,尋找網路上的方法整合後大致概念如下 建立SPP連線,利用虛擬的Serial串口和藍芽端結合 並且修改藍芽端連線的設定檔,使其能夠在兼容模式下被連結 1. 修改藍芽設定檔 在console 中 輸入 $sudo nano /etc/systemd/system/dbus-org.bluez.service 修改設定檔 找到 ExecStart 將其修改成,以兼容模式執行 ExecStart=/usr/lib/bluetooth/bluetooth -C 並在其下方新增 ExecStartPost=/usr/bin/sdptool add SP 添加至SP Profile 修改完畢後存檔重新啟動 2.把需要的藍芽裝置加入信任名單 $sudo bluetoothctl 執行藍芽程序 $ agent on pair 98:23:33:44:55:66 你的藍芽地址 並且 加入信任名單 trust 98:23:33:44:55:66 $sudo rfcomm watch hci0 //開啟監控 等待連線 (監聽藍芽) 使用手機上的藍芽terminal 進行連線 顯示如下 表示連線成功,便可以透過serial 的方式擷取資料。

Matlab連線Mysql教學

圖片
使用Matlab連線Mysql簡易教學 1. 先去 Matlab官網 去看你所使用的資料庫類型 2.以下範例皆使用一般常見的Mysql資料庫,至此 下載 mysql的jar庫,兩個都可以 3.將資料解壓縮打開資料夾,找到mysql-connector-java-5.1.41-bin.jar,版本不一定相同,請找字尾是.jqr檔案 4. 將此.jar檔案複製到你的Matlab安裝資料夾下的 \java\jar 下,例如MATLAB\2016b\java\jar 5. 到Matlab安裝資料夾下的toolbox下的local,修改classpath.txt檔案,請使用管理員權限 6.貼上這一行$matlabroot/java/jar/mysql-connector-java-5.1.41-bin.jar,版本號看你下載的.jar版本 7.重新啟動Matlab 8.指令的格式如下,如果順利以下程式都會進行,如果失敗可以在指令列貼上conn那行,並且看輸出資料中的message偵錯 %設定mysql 連線資料 database('database','name','password','driver','url') % 格式參考 https://www.mathworks.com/help/database/ug/database.html#btcmnv1 conn = database('資料庫名稱','使用者名稱','密碼','com.mysql.jdbc.Driver',url); url範例:如果是本機則使用 'jdbc:mysql://127.0.0.1:3306/' sql='SELECT * FROM 表單'; curs = exec(conn,sql,maxTimeout); maxTimeout為最大讀取的等待時間,可有可無 curs = fetch(curs); 得到cursor後開始讀取cursor的資料 DATA = curs.Data;

[心情小雜]其實很簡單

圖片
一直很喜歡蔡健雅的空白格 聽到周興哲的也覺得很不錯 其實很簡單,一切也沒有太複雜,只是消逝了所以不習慣 決定是好是壞,沒人知道,互相承擔 不是恨不是愛,一抹太過清晰的畫面,才被拉進夢中 眼睛閉上後,想著或許不需要醒來 只是夢終究會醒,讓身體隨著風前進 空氣中沒有熟悉的味道,塞滿了寒冷和孤寂 不是恨不是愛,做過太多錯誤的選擇,才會悔恨流淚 如果那樣,可以造出更多美好,如果這樣,可以留下更多笑容 其實很簡單,兩個人的愛由兩人分擔 其實很簡單,兩個人之間有著太多的空白格 也緊握過,也放鬆過,也努力過,也放棄過 卻沒有忘記過,不是遺憾著什麼 只是美好的畫面突然出現在眼前 轉眼間才消逝明白現實的處境 留下兩行淚是證明曾經愛過 胸口壓抑悶痛顯示出愛的濃 也沒有恨 也沒有愛 回憶中歡笑的畫面依舊美麗 回憶中吵鬧的痛苦依舊繞心 只是後悔我沒有好一點勇敢一點 只是後悔我沒有少說一句多說一句 當一切都來不及,才想起還有多少個抱歉藏在心裡 唯一能了然於心的 只剩下愛的盡心盡力

[Android Studio]Bluetooth Chat 接收問題

使用android studio的範例Bluetooth Chat的時候 會發生傳輸的問題,主要問題在於資料無法接收,但是能夠傳出 找了一下發現跟舊版有所不同的地方是在於資料接收時讀取的方式 舊版在ConnectedThread中 讀取的方式是使用while(true)的方法 新版則是判斷是否連接上裝置 while( mState == STATE_CONNECTED) 但發現在更改狀態之前,就已經先行啟動Thread 因此會造成第一次while發生跳出迴圈的問題 之後就不會再次重新進入迴圈 資料接收也會因此發生問題 因此只要改變setState的順序便能夠順利解決問題 藍芽傳輸的資料每次都能夠順利接收。

[Android Studio] InputStream在Bluetooth Chat中擷取方法

Bluetooth Chat範例中 擷取資料流的方式,主要是透過監聽當InputStream中能讀取資料時 就將資料送出 不過當要傳送大量資料時 常常會因此而將資料截斷 可利用此方法,讓讀取資料大小為多少時才送出資料。 if(bytes < NeedBytes) { bytes += mmInStream.read(buffer,bytes,NeedBytes-bytes); //接收剩下字串 從原本位置到後面位置 } else { mHandler.obtainMessage(Constants.MESSAGE_READ, bytes, -1, buffer) .sendToTarget(); bytes=0; } 建立兩個變數 一個是要接收的bytes數量 ,另外則是現在所接收到的數量 等實際接收到全部字串後,在一次將資料全部輸出至UI 以此簡單的設定法 便可以完成接收特定數量的資料流方法

[單晶片]NEO-6M-0001透過U-center設定簡介

圖片
以下將介紹如何讓NEO-6M和U-center連接,並進行設定改動 1.將Neo-6m-0001開發版的TX RX接好後 連線電腦 2.下載U-Center軟體 3.開啟U-Center軟體 4.選取正確的COM Port,並調整Badurate 5.從View->Statistic View中來確認是否有成功連接,有的話視窗內會有許多數字在跳動 6.利用View->Configuration View 來進行設定 7.設定範例:設定Baudrate 7-1首先進入RMX中設定,將Save configuration打勾,才會將資料送入感測器中,並儲存,打勾後按下左下角的Send 7-2之後移動到PRT設定需要的數值之後,按下左下角的Send 7-3離開始會顯示視窗問你是否儲存,按下Yes,之後關閉U-center並且重新將NEO-6M上電,便完成設定。