2016年10月31日 星期一
[MCU] PIC 24FJ64GA002 燒錄電路
看到"從PIC開始! RC伺服機機器人製作入門"上的燒錄電路,動作DIY一下。
(由於不確定書中電路圖是否能PO,所以只PO成品)
正面照1
正面照2
背面照(焊接技術不好傷眼,多包函)
零件表:
KT-10 電木板 NT 10
OK 線一捲 NT 35 (其實只用到一點點)
電源2.1母頭含線 NT 12
1/2 W 10K歐姆電阻 NT 1
10 uF 積層陶瓷電容器 NT 38
28-pin DIP ZIF sockets NT 135
讀取ID成功
心得:
(1)使用PICKET 3 建議供電3.3V。
(2)10 uF 積層陶瓷電容器真難買,長明街找了3家都沒有賣,
最後在RS網站上購買到。
https://twcn.rs-online.com/web/p/ceramic-multilayer-capacitors/8118373/
參考連結
http://shop.robotkingdom.com.tw/books/pic-rc.html
(由於不確定書中電路圖是否能PO,所以只PO成品)
正面照1
正面照2
背面照(焊接技術不好傷眼,多包函)
零件表:
KT-10 電木板 NT 10
OK 線一捲 NT 35 (其實只用到一點點)
電源2.1母頭含線 NT 12
1/2 W 10K歐姆電阻 NT 1
10 uF 積層陶瓷電容器 NT 38
28-pin DIP ZIF sockets NT 135
8 PIN 90度排針座 NT 2
---------------------------------------------
合計 233
---------------------------------------------
合計 233
讀取ID成功
心得:
(1)使用PICKET 3 建議供電3.3V。
(2)10 uF 積層陶瓷電容器真難買,長明街找了3家都沒有賣,
最後在RS網站上購買到。
https://twcn.rs-online.com/web/p/ceramic-multilayer-capacitors/8118373/
參考連結
http://shop.robotkingdom.com.tw/books/pic-rc.html
從PIC開始! RC伺服機機器人製作入門
2016年10月15日 星期六
[賣摳Soft] Ubuntu 16.04 LTS 安裝.Net Core
參考以下網址
https://www.microsoft.com/net/core#ubuntu
會有二個,記得選擇下方的16.0.4 ,不要用到上面的14.04
共有3個指令
操作畫面截圖
接下來安裝.Net Core SDK
建立一個測試Hello World專案資料夾
進入專案資料夾
初始化專案
第一次執行dotnet core會出現這個畫面
跑了約1分鐘後,會告訴你新的C#專案建好了
這時候資料夾中就會Program.cs以及project.json了
程式碼主要是寫在Program.cs裡面,我們來看一下它裡面有什麼
而project.json則是一些專案的Properties
接下來我們來透過NuGet 還原一下,在project.json中指定的相依性套件。
編譯 &執行 (如果編譯有出錯就不會執行了)
成功印出Hello World!
到這裡,你的.Net core基本上是安裝成功的,接下來我們來自己寫一小段程式。
編輯Program.cs
程式碼如下
我們沒改動套件,所以直接編譯 & 執行
忘了Window Form 吧~在.Net Core中沒這東西
參考網址:
https://www.microsoft.com/net/core#ubuntu
https://www.microsoft.com/net/core#ubuntu
會有二個,記得選擇下方的16.0.4 ,不要用到上面的14.04
共有3個指令
sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ xenial main" > /etc/apt/sources.list.d/dotnetdev.list'
sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893
sudo apt-get update
操作畫面截圖
接下來安裝.Net Core SDK
sudo apt-get install dotnet-dev-1.0.0-preview2-003131
建立一個測試Hello World專案資料夾
mkdir hwapp
進入專案資料夾
cd hwapp
初始化專案
dotnet new
第一次執行dotnet core會出現這個畫面
跑了約1分鐘後,會告訴你新的C#專案建好了
這時候資料夾中就會Program.cs以及project.json了
程式碼主要是寫在Program.cs裡面,我們來看一下它裡面有什麼
而project.json則是一些專案的Properties
接下來我們來透過NuGet 還原一下,在project.json中指定的相依性套件。
dotnet restore
編譯 &執行 (如果編譯有出錯就不會執行了)
dotnet run
成功印出Hello World!
到這裡,你的.Net core基本上是安裝成功的,接下來我們來自己寫一小段程式。
編輯Program.cs
nano Program.cs
程式碼如下
我們沒改動套件,所以直接編譯 & 執行
dotnet run
忘了Window Form 吧~在.Net Core中沒這東西
參考網址:
https://www.microsoft.com/net/core#ubuntu
2016年10月9日 星期日
「C#] 取得空的磁碟機代碼
最近要做動態掛載遠端磁碟,所以寫了一個method,
可以取得目前沒用到的磁碟代號。
會回傳A~Z,如果回傳的是空白,則代表己經沒有空的磁碟機代號了。
參考來源:
https://hardforum.com/threads/c-getting-free-drive-letters.1208456/
可以取得目前沒用到的磁碟代號。
public char getFreeLabel() { char letter = ' '; ArrayList driveLetters = new ArrayList(26); // Allocate space for alphabet for (int i = 65; i < 91; i++) // increment from ASCII values for A-Z { driveLetters.Add(Convert.ToChar(i)); // Add uppercase letters to possible drive letters } foreach (string drive in Directory.GetLogicalDrives()) { driveLetters.Remove(drive[0]); // removed used drive letters from possible drive letters } foreach (char drive in driveLetters) { // get first unused drive letters letter = drive; break; } return letter; }
會回傳A~Z,如果回傳的是空白,則代表己經沒有空的磁碟機代號了。
參考來源:
https://hardforum.com/threads/c-getting-free-drive-letters.1208456/
「Raspberry PI」啟用Webcam拍照
Raspberry 如果要啟用webcam拍照,除了用OpenCV之外,
還有一個簡單方法,安裝fswebcam這個套件。
安裝過程大致上長這樣
拍一張,存成test.jpg (採用預設的解析度,大概是320*240 左右)
指定拍照解析度(如果Webcam不支援的話,fswebcam會自動調整成最接近的解析度)
訊息大致上長這個樣子,注意 Adjusting resolution from 1024x720 to 640x480. 代表相機不支援1024x720,被強制改成640x480了
以上拍照後,相片上都會有個banner寫著拍照時間等等,如果不要的話,可以加上
--no-banner這個參數,相片就不會有多餘的資訊被打上去。
如果拍照出來是黑黑的一片,注意一下是否有發生如下的訊息
俺試了2支Webcam,羅技C310 是OK的,但是C 170 就會出現這個錯誤訊息。
俺查詢了相關資料後,做了一個嘗試,改變 palette format 為YUYV後正常,
推測應該是Webcam硬體支援上的問題。
正常取得照片
參考資料:
USING A STANDARD USB WEBCAM
fswebcam - gd-jpeg: JPEG library reports unrecoverable error
還有一個簡單方法,安裝fswebcam這個套件。
sudo apt-get install fswebcam
安裝過程大致上長這樣
pi@boywhy-pi2:~ $ sudo apt-get install fswebcam
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
pypy-upstream-doc wiringpi
Use 'apt-get autoremove' to remove them.
The following NEW packages will be installed:
fswebcam
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 44.0 kB of archives.
After this operation, 105 kB of additional disk space will be used.
Get:1 http://mirrordirector.raspbian.org/raspbian/ jessie/main fswebcam armhf 20140113-1 [44.0 kB]
Fetched 44.0 kB in 1s (35.9 kB/s)
Selecting previously unselected package fswebcam.
(Reading database ... 126790 files and directories currently installed.)
Preparing to unpack .../fswebcam_20140113-1_armhf.deb ...
Unpacking fswebcam (20140113-1) ...
Processing triggers for man-db (2.7.0.2-5) ...
Setting up fswebcam (20140113-1) ...
pi@boywhy-pi2:~ $
拍一張,存成test.jpg (採用預設的解析度,大概是320*240 左右)
fswebcam test.jpg
指定拍照解析度(如果Webcam不支援的話,fswebcam會自動調整成最接近的解析度)
fswebcam -r 1280x720 image2.jpg
訊息大致上長這個樣子,注意 Adjusting resolution from 1024x720 to 640x480. 代表相機不支援1024x720,被強制改成640x480了
pi@boywhy-pi2:~ $ fswebcam -p YUYV -r 1024x720 test.jpg
--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
Adjusting resolution from 1024x720 to 640x480.
--- Capturing frame...
Captured frame in 0.00 seconds.
--- Processing captured image...
Writing JPEG image to 'test.jpg'.
pi@boywhy-pi2:~ $
以上拍照後,相片上都會有個banner寫著拍照時間等等,如果不要的話,可以加上
--no-banner這個參數,相片就不會有多餘的資訊被打上去。
fswebcam -r 1280x720 --no-banner image3.jpg
如果拍照出來是黑黑的一片,注意一下是否有發生如下的訊息
GD Error: gd-jpeg: JPEG library reports unrecoverable error: Not a JPEG file:
俺試了2支Webcam,羅技C310 是OK的,但是C 170 就會出現這個錯誤訊息。
俺查詢了相關資料後,做了一個嘗試,改變 palette format 為YUYV後正常,
推測應該是Webcam硬體支援上的問題。
pi@boywhy-pi2:~ $ fswebcam -p YUYV test.jpg
--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
Adjusting resolution from 384x288 to 352x288.
--- Capturing frame...
Captured frame in 0.00 seconds.
--- Processing captured image...
Writing JPEG image to 'test.jpg'.
pi@boywhy-pi2:~ $
正常取得照片
參考資料:
USING A STANDARD USB WEBCAM
[C#] String自動斷行
在使用Label遇到就是文字斷行問題,在網路上找到一個解法,寫成一個Method紀錄一下
參考資料:
//透過一個RichTextBox來做斷行功能, sourcetext為字串,width在螢幕上要顯示的寬度 private string autoLinebreak(string sourcetext, int width) { //宣告一個RichTextBox來用(不會出現在畫面上) RichTextBox rtbWrap = new RichTextBox(); //設定RichTextBox自動換行(不會引響原本的字串,所以後還是要是依據斷行結果,做字串上的處理) rtbWrap.WordWrap = true; //設定RichTextBox寬度(你想要讓文字顯示在畫面上最大的寬度) rtbWrap.Width = width; //指定字串給RichTextBox rtbWrap.Text = sourcetext;
//初始化回傳斷行結果的字串 string resultstr = ""; //初始化變數
int i = 0;
//GetFirstCharIndexFromLine,當i行第一個字元不存在(這行沒東西),會回傳-1,
//否則會傳i行第1個的Index(就像Array中的Index) while (rtbWrap.GetFirstCharIndexFromLine(i) != -1) { int thislineindex = rtbWrap.GetFirstCharIndexFromLine(i); int nextlineindex = rtbWrap.GetFirstCharIndexFromLine(i + 1);
//沒有下一行了,可以在這個地方切斷,並補上斷行。程式執行完這一輪就停了 if (nextlineindex == -1) { resultstr += sourcetext.Substring(thislineindex) + "\n"; }
//找到這一行以及下一行的Index,補上斷行符號
else { resultstr += sourcetext.Substring(thislineindex, nextlineindex - thislineindex) + "\n"; }
//i+1 ,進行迴圈下一輪 i++; } //釋放RichTextBox資源 rtbWrap.Dispose(); //回傳斷行完畢的字串 return resultstr; }
參考資料:
[C#]幫我換行謝謝
訂閱:
文章 (Atom)