Search This Blog

Saturday, January 24, 2026

Custom Linux Image Build Using Yocto on WSL

ကိုယ်သုံးမယ့် Single Board Computer (SBC) က အထူးပြုလုပ်ထားတဲ့ ဟာ့ဒ်ဝဲတွေ နဲ့ ချိတ်ဆက်ထားရင်၊ သူနဲ့ လိုက်ဖက်မယ့် Linux image ကို Yocto သုံးပြီး ပြုလုပ်တာက စိတ်တိုင်းကျရနိုင်သလို၊ နောက်လည်းအလွယ်တကူ ပြန်လုပ်လို့ရတဲ့ အပြင်၊ ပေါ့ပါးသေးငယ်တဲ့ အတွက် ပိုကောင်းပါတယ်။ Linux image ကို build လုပ်ဖို့အတွက် environment ပြင်ဆင်ရတာ အချိန်ကုန်သက်သာ ချင်ရင် WSL နဲ့ Yocto Docker container ကို ပေါင်းပြီး သုံးလို့ရပါတယ်။



Thursday, June 5, 2025

Exploring Edge AI with NXP's FRDM-MCXN947

Read this article in English

Auckland မှာ တလောက ကျင်းပတဲ့ NXP ရဲ့ NXP technology day ကို သွားဖြစ် လိုက်သေးတယ်။ သူတို့ရဲ့ နောက်ဆုံးပေါ် microcontroller တွေ၊ i.MX microprocessor တွေနဲ့ semiconductor technologies တွေ အဓိက ပြတာ။ NXP က ထိပ်သီး Dutch semiconductor ကုမ္ပဏီ တစ်ခု။ ပြီးတော့ automotive ၊ industrial ၊ IoT applications နဲ့ ဆိုင်တာတွေ အများဆုံး ထုတ်တယ်။ လက်ဟောင်း Philips နဲ့ Freescale ရဲ့ Kinetis MCU architecture တွေကို ပေါင်းစပ် လိုက်တဲ့ သူ့ ရဲ့ နောက်ဆုံးထွက် MCX microcontroller တွေထဲက MCXN947 ကိုတော့ တော်တော် သဘောကျတယ်။ ပါဝါ အစားနည်းပြီး၊ လုပ်ဆောင်မှု မြင့်မားတယ်။ နောက်ပြီး NPU ဆိုတဲ့ neural processing unit ပါတော့ on-device AI processing တွေ လုပ်ဆောင်နိုင် တယ်တဲ့။ Edge computing တွေ ပို ခေတ်စား လာတဲ့ အချိန်၊ ဒီလို energy-efficient ဖြစ်ပြီး၊ real-time AI ရတဲ့ hardware သေးသေး တွေက တော် တော် စိတ်ဝင်စား ဖို့ ကောင်းတယ်။


Thursday, January 30, 2020

Multithreading with wxWidgets

C++ program တွေမှာ wxWidgets ကို သုံးပြီး multithreading လုပ်ဆောင်မှု တွေ ပြုလုပ် တဲ့အကြောင်း ဆွေးနွေး ပါမယ်။ ဆွေးနွေးမယ့် နမူနာ ပုံစံ အမျိုးမျိုး က
တို့ ဖြစ်ပါတယ်။

အခြေခံ multithreading နမူနာ နဲ့ သူ့ကို run လိုက်လို့ ရလာတဲ့ ရလဒ် ကို အောက်က link နဲ့ ပုံမှာ ပြထားပါတယ်။

https://github.com/yan9a/wxwidgets/blob/master/thread/thread1/thread1.cpp




Figure 1. thread1.cpp


Simple Multithreading Example

ရိုးရှင်း တဲ့ multithreading နမူနာ အနေနဲ့

https://github.com/yan9a/wxwidgets/blob/master/thread/th-simple/th-simple.cpp

ဆိုတဲ့ ပရိုဂရမ် လေးကို ဆွေးနွေး ပါမယ်။ ပရိုဂရမ် မှာ start ၊ stop ၊ pause နဲ့ resume ဆိုတဲ့ button လေးခု ကို အရင် ထည့် ပါမယ်။ Start button က thread အသစ် တစ်ခု ကို ဖန်တီး ပြီး၊ စတင် ဖို့ပါ။ Stop က နောက်ဆုံး ဖန်တီး လိုက်တဲ့ thread ကို ရှာပြီး ဖျက်ပေး ပါလိမ့်မယ်။ Pause က နောက်ဆုံး စတင် တဲ့ thread ကို ရှာပြီး ခေတ္တရပ် (pause) လုပ်ပေး ပါတယ်။ Resume က အရင်ဆုံး paused လုပ်ခဲ့ တဲ့ thread ကို ရှာပြီး၊ ပြန် run ပေးဖို့ ပါ။

Friday, December 28, 2018

Curve Plotting with C++

C++ program တွေမှာ curve plotting လုပ်ဖို့ လိုလာရင် သုံးလို့ ရမယ့် နည်းလမ်း တချို့ကို ဆွေးနွေး ချင်ပါတယ်။ သုံးကြည့်မယ့် tools တွေက
တို့ ဖြစ်ပါတယ်။

Gnuplot

Gnuplot ကို Ubuntu ပေါ်မှာ install လုပ်ဖို့ အတွက် အောက်က command တွေကို သုံးနိုင် ပါတယ်။

$ sudo apt update
$ sudo apt install gnuplot


Install လုပ်ပြီး တဲ့ အခါ gnuplot ကို အောက်ပါ အတိုင်း စနိုင် ပါတယ်။

$ gnuplot


ပြီးတဲ့ အခါ လက်ရှိ ဗားရှင်း စတဲ့ အချက်အလက် တွေပေါ်လာ ပြီးတဲ့ အခါ gnuplot ရဲ့ prompt ကို ရောက်သွား ပါမယ်။ နမူနာ အနေနဲ့ sin(x) ကို plot လုပ်ကြည့်ပြီး၊ cos2(x) ကို ပါ အောက်က အတိုင်း ထပ် plot လုပ်ကြည့် လိုက်ရင် Figure. 1 မှာ ပြထား သလို တွေ့ရ ပါလိမ့်မယ် [Mig18]။ Gnuplot ကနေ ထွက်ဖို့ အတွက် q ကို ရိုက်ထည့် နိုင် ပါတယ်။

> plot sin(x)
> replot cos(x)**2
> q



Figure 1. Plotting sin(x) and cos2(x) to test gnuplot.


Friday, November 23, 2018

Using Parallel Port on Linux with C++

Linux ပေါ်မှာ Paraller port ကို digital input output တွေ အနေနဲ့ အသုံးပြု ဖို့ [Lin15a,Coo08a] C++ class နဲ့ နမူနာ ပရိုဂရမ် တွေကို အောက်က link မှာ တွေ့နိုင် ပါတယ်။

https://github.com/yan9a/parallel-port


Figure 1. wxWidgets example using paraller port as digital output and input.


Thursday, November 22, 2018

MySQL Connector/ODBC 8.0 on Linux

Microsoft ရဲ့ MsSQL server ကို ODBC driver သုံးပြီး C++ နဲ့ သုံးခဲ့ သလိုပဲ Oracle ရဲ့ MySQL server ကို လည်း MySQL Connector/ODBC 8.0 driver ကို တပ်ဆင်ပြီး အသုံးပြု နိုင်ပါတယ်။ ကောင်းတဲ့ အချက်က တော့ C++ program တွေကို ဘာမှ ပြောင်းစရာ မလိုပဲ DSN ကို ပဲ ပြောင်းပြီး သုံးလိုက် ရုံပါပဲ။

SBC အမျိုးမျိုး၊ Platforms အမျိုးမျိုးမှာ သုံးချင်တာမို့ MySQL Connector/ODBC 8.0 ကို source ကနေ build လုပ်ပြီး တပ်ဆင် အသုံးပြု တဲ့ အကြောင်း ဆွေးနွေး ပါမယ်။ စစခြင်း အောက်က tools တွေကို စက်ထဲမှာ တပ်ဆင်ထားဖို့ လိုပါတယ်။
sudo apt install mysql-client libmysqlclient-dev
sudo apt install unixodbc unixodbc-dev
sudo apt install libgtk-3-dev cmake
sudo apt install libssl-dev

Friday, October 5, 2018

Using MS SQL Server from C++ with wxWidgets

MS SQL server ကို ODBC API နဲ့ C++ ပရိုဂရမ် ရေးပြီး ဆက်သွယ် အသုံးပြု တဲ့ အကြောင်း ဆွေးနွေး ပါမယ် [Eas18]။ အဲဒီနောက် Class module တစ်ခု ဖန်တီးပြီး wxWidgets GUI application တွေမှာ SQL server တွေကို သုံးတဲ့ နမူနာ တစ်ခုကို ဆက်လက် ဖော်ပြ ပါမယ်။ Unix နဲ့ Linux စက်တွေ အတွက်တော့ အောက်က လင့်ခ်

Using Microsoft SQL Server from Linux Machines with ODBC & FreeTDS
(http://coolemerald.blogspot.com/2018/10/using-microsoft-sql-server-from-linux.html)


မှာ ဖော်ပြ ထားတဲ့ အတိုင်း FreeTDS နဲ့ ODBC ကို တပ်ဆင် ထားဖို့ လို ပါတယ်။

Using Microsoft SQL Server from Linux Machines with ODBC & FreeTDS

FreeTDS က Unix နဲ့ Linux စက်တွေ အတွက် Microsoft SQL Server နဲ့ Sybase databases တွေကို ဆက်သွယ် အသုံးပြု ရတဲ့ လိုင်ဘရီ တွေ ဖြစ်ပါတယ် [Fre16]။ FreeTDS C libraries တွေက free, opensource ဖြစ်ပြီး GNU LGPL လိုင်စင် ဖြစ်ပါတယ်။ ဒီ အပိုင်း မှာ Windows စက် တစ်ခု ခု မှာရှိတဲ့ mixed mode authentication နဲ့ တပ်ဆင် ထားတဲ့ MS SQL server ကို Linux စက် ကနေ FreeTDS နဲ့ ဆက်သွယ် အသုံးပြု တဲ့ အကြောင်း ဆွေးနွေး ပါမယ်။ MS SQL server က TCP/IP နဲ့ remote ဆက်သွယ်မှု ကို ခွင့်ပြု ထားပြီး၊ username နဲ့ password ကို အသုံးပြုပြီး ဆက်သွယ် နိုင်ဖို့ လိုပါတယ်။

MS SQL server က Microsoft နဲ့ Sybase တို့ ပူးပေါင်း ဆောက်ရွက်မှု ကနေ မွေးဖွား လာတာ ဖြစ်ပါ တယ်။ ဒါကြောင့် သူ့တို့ ရဲ့ SQL server တွေက ဆင်တူ ကြပြီး၊ client တွေက နေလှမ်း ဆက်သွယ် အသုံးပြု တဲ့ communication protocol က စ ထပ်တူ နီးပါး တူညီ ပါတယ်။ အဲဒီ protocol ကို Tabular Data Stream (TDS) လို့ ခေါ်ပါတယ်။ TDS ကို open source အနေနဲ့ implementation လုပ်တဲ့ project ကို Brian Bruns စတင်ခဲ့ ပြီး၊ FreeTDS လို့ နာမည် ပေးခဲ့ တာပါ။

Thursday, October 4, 2018

MySQL Connector C++ 8.0 with wxWidgets

MySQL Connector C++ 8.0 ကို wxWidgets နဲ့ တွဲသုံး တဲ့ နမူနာ တစ်ခု ကို ဖော်ပြ ချင် ပါတယ်။ wxWidgets ထည့်သွင်း အသုံးပြုပုံ နဲ့ MySQL server, MySQL Connector C++ 8.0 တို့ တပ်ဆင် အသုံးပြု ပုံ အသေး စိတ်တွေ ကို အောက်က လင့်ခ် တွေမှာ ဖော်ပြ ထားတဲ့ အရင်ပို့စ် တွေ မှာ တွေ့နိုင် ပါတယ်။

ceMySQL.h Cross-platform C++ programming with wxWidgets

Using MySQL Database with C++ on Various Platforms Including ARM Single Board Computers

အဲဒီ အတွက် ဆက်သွယ် အသုံးပြု မယ့် MySQL server မှာ mytest ဆိုတဲ့ database နဲ့၊ အထဲမှာ mytable ဆိုတဲ့ table ကို Figure 1 မှာ ပြထား တဲ့ အတိုင်း MySQL Workbench နဲ့ ဖန်တီး ထားလိုက် ပါမယ်။


Figure 1. Creating a database 'mytest' and a table 'mytable' using MySQL Workbench.


Wednesday, September 19, 2018

Safe and easy DIY Home Energy Monitor Using Current Transformer with Arduino, Raspberry Pi, or Beaglebone Black

အိမ်မှာ ရှိတဲ့ လျှပ်စစ် အသုံး အဆောင် တွေရဲ့ စွမ်းအင် အသုံး ပြုမှု ကို စီစစ် တိုင်းတာ ဖို့ အတွက် ရိုးရှင်း ပြီး၊ အခြေခံ ကျတဲ့ energy monitor တစ်ခု ကို လုပ်ကြည့် ပါမယ်။ တိုင်းတာ အသုံး ပြုတဲ့ နည်း အများကြီး ရှိပေ မယ့် သင်ယူ လေ့လာမှု အတွက် အထောက် အကူ ဖြစ်ဖို့ ရော၊ အန္တရာယ် ကင်းဖို့ အတွက်ပါ သင့်တော်မှု ရှိမယ် ထင်တဲ့ YHDC Current Transformer SCT-013-000 [YHD18] ကို သုံးဖို့ ရွေးချယ် လိုက်ပါ တယ်။ သူက split-core ဖြစ်ပြီး တိုင်းတာ ချင်တဲ့ ဗို့အား မြင့် ဝါယာ လိုင်း တွေကို ဘာမှ ဖြုတ် စရာ မလိုပဲ ဝါယာ ပေါ်ကို ပတ်ပြီး ကလစ် တပ်လိုက် ဖို့ပဲ လိုတာမို့ non-invasive ဖြစ်ပြီး၊ အန္တရာယ် လည်းကင်း၊ အသုံးပြုဖို့လည်း လွယ်ကူ ပါတယ်။ အဲဒီ လို ပတ်တဲ့ အခါ Figure 1 ရဲ့ ညာဖက် ဆုံးမှာ ပြထား သလို ဝါယာ တစ်စ ကိုပဲ ပတ်ရ မှာဖြစ် ပါတယ်။


Figure 1. (ဘယ်ဘက်) SCT-013 က split core ဖြစ်တဲ့ အတွက် ကလစ်ကို ဖွင့်ပြီး ဝါယာ ပေါ်ကို အလွယ် တကူ တပ်ဆင်နိုင် ပါတယ်။ (အလယ်) ဝါယာ အကုန်လုံးကို ပတ်လိုက်ရင် အဝင် နဲ့ အထွက် ပြန်ကြေပြီး core ထဲမှာ ဖြတ်စီး တဲ့ စုစုပေါင်း current က သုည ဖြစ်သွား တဲ့ အတွက် တိုင်းလို့ မရ ပါဘူး။ (ညာဖက်) ဝါယာ တစ်စ ကို ပဲ core ထဲမှာ ပတ်ဖို့ လိုပါတယ်။


Friday, August 10, 2018

DIY Programmable Function Generator Using Arduino Uno

Arduino Uno ကို function generator အနေ နဲ့ သုံးပြီး လိုချင် တဲ့ low frequency waveform တွေကို စိတ်ကြိုက် ထုတ်နိုင် ပါတယ်။ သူ့ရဲ့ အားသာချက် က လိုသလို ပရိုဂရမ် ရေးပြီး စိတ်ကြိုက် customize အမျိုးမျိုး ထုတ်နိုင်၊ အချိန် အလိုက် ပြောင်းနိုင် တာဖြစ်ပြီး၊ အားနည်း ချက်ကတော့ အရမ်း မြင့်တဲ့ frequency တွေကို ထုတ် မပေးနိုင် တာ ဖြစ်ပါတယ်။ Arduino ရဲ့ analog output က pwm သုံးထား တာမို့ ရလဒ် ပိုကောင်းအောင်၊ pwm frequency ကို 8 kHz လောက် ပြောင်းထား ပါတယ်။ ဒီထက် ရလဒ် ပိုကောင်း ချင်ရင် DAC နဲ့ တွဲသုံး လို့လည်း ရပါတယ်။


Figure. Arduino function generator ၏ အထွက်ကို oscilloscope ဖြင့် တိုင်းတာ ရရှိပုံ။


Wednesday, August 1, 2018

Using MySQL Database with C++ on Various Platforms Including ARM Single Board Computers

Database server တွေကို ဆက်သွယ် အသုံးပြု တဲ့ C++ application တွေ ရေးသား တဲ့ အကြောင်း ဆွေးနွေး ပါမယ်။ MySQL (မိုင် အက်စ် ကျူ အယ်) က Oracle ရဲ့ open source ဖြစ်တဲ့ database management system တစ်ခု ဖြစ် ပါတယ်။ သူက free ရနိုင်ပြီး၊ robust ဖြစ်ရုံ မက ပဲ platforms တော်တော် များများ ပေါ်မှာ အလုပ်လုပ် ပါတယ်။ Odroid လို 32 bit armv7 achitecture SBC လေးတွေ ပေါ်မှာ တောင် source ကနေ build လုပ်ပြီး run နိုင်ပြီး၊ functionality တွေ စုံသလို၊ user interface မျိုးစုံ ရှိတာ မို့ နမူနာ အနေနဲ့ MySQL database serser ကို ဆက်သွယ် အသုံးပြု ပါမယ်။

MySQL server ကို traditional အတိုင်း relational database ပုံစံ နဲ့ သုံးလို့ ရသလို၊ schema ကို အသေ သတ်မှတ် စရာ မလိုတဲ့၊ NoSQL လို့လည်း ခေါ်ကြတဲ့ document store အနေနဲ့ လည်း သုံးလို့ ရပါတယ်။ Relational database မှာ သိမ်းမယ့် table ရဲ့ column အားလုံး ကြိုသိ ပြီး schema ကြိုသတ်မှတ် ဖို့ လိုပေမယ့်၊ document store ကတော့ schema flexible ဖြစ်ပြီး JSON object နဲ့ ကိုယ်စားပြု ဖော်ပြ ပါတယ်။ ဒီ နေရာမှာ relational model ရဲ့ power နဲ့ document store ရဲ့ flexibility ကို ပေါင်းစပ် အသုံးပြု လို့ ရအောင် X DevAPI ကို သုံးပြီး application တွေ ပြုလုပ် တဲ့ အကြောင်း ဆွေးနွေး ပါမယ်။

Monday, May 14, 2018

MCP3008 - Analog to Digital Converter with SPI Interface

MCP3008 က Microchip က ထုတ်တဲ့ 8-channel, 10-bit analog to digital converter ဖြစ်ပါတယ်။


Figure. MCP3008 ၏ pin များ။


သူ့ကို single ended analog input အနေနဲ့ ရှစ်ခု သုံးလို့ ရပြီး၊ differential input pair အနေနဲ့ ဆို လေးစုံ သုံးလို့ ရပါတယ်။ Power supply ဗို့ 2.7 V ကနေ 5 V အထိ သုံးလို့ ရပြီး၊ အပူချိန် -40 °C ကနေ +85 °C အထိ ခံနိုင် ပါတယ်။ SPI interface ဖြစ်ပြီး mode 0 ဒါမှ မဟုတ် mode 3 နဲ့ သုံးနိုင် ပါတယ်။

Friday, March 9, 2018

DIY Smart Surveillance Camera Using Raspberry Pi Camera and C++

RPi ကို သုံးပြီး smart surveillance ကင်မရာ တစ်ခု ကို ကိုယ်တိုင် ပြုလုပ် ဖန်တီး ကြည့် ပါမယ်။ ပုံမှန် ဘာမှ ထူးခြားမှု မရှိတဲ့ အချိန်မှာ 5x speed နဲ့ နေ့စဉ်၊ ဒါမှ မဟုတ် နာရီ အလိုက် ဗွီဒီယို ဖိုင်တွေ ခွဲပြီး record လုပ်ပေး နိုင် အောင် လုပ်ပါမယ်။ ဖမ်းယူ ရရှိတဲ့ ပုံရိပ် တွေကို analysis လုပ်နေပြီး လူ့ ကိုယ်ခန္ဓာ တွေကို တွေ့တာ နဲ့ ပုံမှာ အစိမ်းရောင် စတုဂံ နဲ့ ဘောင်ခတ် ပြပြီး၊ ပုံမှန် speed နဲ့ ပြောင်းပြီး record လုပ် ပါမယ်။ Passive infrared sensor (PIR sensor) ကိုပါ သုံးပြီး sensor က လူရိပ် ကို အာရုံခံ မိရင် လည်း၊ ပုံရိပ် မှာ အနီရောင် indicator ပြပြီး၊ ပုံမှန် နှုန်းနဲ့ ပြောင်း record လုပ်နိုင် ပါမယ်။

ဒီ နမူနာ ပရိုဂရမ် မှာ လုပ်လို့ ရတဲ့ အကြောင်း ကုဒ် အကြမ်း ရေးကြည့် ရုံ ဖြစ်ပြီး၊ တစ်ခုခု ထူးခြားရင် ကိုယ့်ရဲ့ အီးမေးလ် ကို လှမ်းပို့ တာ၊ အိမ်က လူတွေ ရဲ့ မျက်နှာကို မှတ်မိတာ၊ သတ်မှတ် ထားတဲ့ အချိန် အပိုင်း အခြား အလိုက် လိုသလို record လုပ်တာ စတာ တွေကို စိတ်ကူး ရှိရင် ရှိသလို ထပ်ဖြည့် နိုင် ပါတယ်။

Figure. PIR sensor ကို ချိတ်ဆက်ခြင်း။


Monday, January 22, 2018

UDP/TCP Socket Programming with wxWidgets

  1. နိဒါန်း
  2. UDP
  3. TCP
  4. အကိုးအကားများ

နိဒါန်း

wxWidgets နဲ့ UDP ၊ TCP တို့ကို သုံးပြီး network ပေါ်မှာ ဒေတာ အပြန် အလှန် ပေးပို့ ဆက်သွယ် တဲ့ အကြောင်း ဆွေးနွေး ချင် ပါတယ်။ အဲဒီ အတွက် wxWidgets ကို တပ်ဆင် ထားဖို့ လိုပါ တယ်။ သူ့ကို platform အမျိုးမျိုး အတွက် တပ်ဆင်တဲ့ အကြောင်း တွေကို အောက်က လင့်ခ် မှာ ဖတ်နိုင် ပါတယ်။
အင်တာနက် စတဲ့ network တွေ ပေါ်မှာ TCP ဒါမှမဟုတ် UDP တွေသုံးပြီး စက်တစ်ခု နဲ့ တစ်ခု ဒေတာ တွေ အပြန်အလှန် ပို့ဖို့ အတွက် socket တွေကို အသုံးပြု နိုင် ပါတယ်။ ခေတ်ပေါ် operating system တွေ အားလုံးက socket layer ကို အထောက် အပံ့ ပေးကြ ပေမယ့် platform ပေါ်မူ တည်ပြီး socket ကို အသုံး ပြုရတဲ့ ပုံစံ တွေက အမျိုးမျိုး ကွဲပြား နိုင်ပါတယ်။ wxWidgets မှာ အောက်ခံ platform အတွက် ပူစရာ မလိုပဲ အလွယ် တကူ အသုံးပြုနိုင်တဲ့ socket class ပါ ပါတယ်။ အဲဒီ class ကို မတူညီတဲ့ ပုံစံ နည်းလမ်း အမျိုးမျိုး နဲ့ အသုံးပြုနိုင်ပြီး၊ အသုံးပြုပုံ နမူနာ တချို့ကို အောက်မှာ ဆက်ပြီး ဖော်ပြထား ပါတယ်။


Thursday, November 23, 2017

OpenCV with wxWidgets

  1. နိဒါန်း
  2. Linux
  3. Windows
  4. အကိုးအကားများ

နိဒါန်း

OpenCV ကို wxWidgets နဲ့ တွဲသုံး တဲ့ အကြောင်း ဆွေးနွေး ချင် ပါတယ်။ အဲဒီ အတွက် OpenCV နဲ့ wxWidgets တို့ကို တပ်ဆင် ထားဖို့ လိုပါ တယ်။ သူတို့ ကို platform အမျိုးမျိုး အတွက် တပ်ဆင်တဲ့ အကြောင်း တွေကို အောက်က လင့်ခ် တွေမှာ ဖတ်နိုင် ပါတယ်။

Linux

Linux နဲ့ terminal ပေါ်မှာ command ရိုက်ထည့် ပြီး build လုပ်တာ လွယ်ကူ ရိုးရှင်း ပါတယ်။ နမူနာ အနေနဲ့ wxcvsimple.cpp (online) ဆိုတဲ့ ရိုးရှင်း တဲ့ ပရိုဂရမ် လေး တစ်ခု ရေးကြည့် ပါမယ်။ ပရိုဂရမ် အစမှာ Application ရဲ့ OnInit() ဆိုတဲ့ method ထဲမှာ
wxInitAllImageHandlers();
ဆိုတာကို ထည့်ပါမယ်။ အဲဒီနောက် MyFrame ဆိုတဲ့ wxFrame ရဲ့ derived class ထဲမှာ ပုံရိပ် တွေကို ဖော်ပြဖို့ wxStaticBitmap variable တွေကို ကြေငြာ လိုက် ပါမယ်။ MyFrame ရဲ့ constructor မှာ wxStaticBitmap တွေကို ဖန်တီးဖို့ အောက်က ကုဒ် ကို သုံးနိုင် ပါတယ်။

Monday, November 20, 2017

OpenCV on Linux using g++, CMake, Qt, Code::Blocks

  1. နိဒါန်း
  2. GCC ၊ CMake တို့ဖြင့် အသုံးပြုခြင်း
  3. Qt ဖြင့် အသုံးပြုခြင်း
  4. Code::Blocks ဖြင့်အသုံးပြုခြင်း
  5. အကိုးအကားများ

နိဒါန်း

OpenCV ကို Linux တွင် တပ်ဆင် ရန် ပထမ အဆင့် အနေနှင့် အောက်ပါ packages များ စက်ထဲ တွင် ရှိရန် လိုအပ် သည် [Ope17g]။
  • GCC 4.4.x or later
  • CMake 2.6 or higher
  • Git
  • GTK+2.x or higher, including headers (libgtk2.0-dev)
  • pkg-config
  • Python 2.6 or later and Numpy 1.5 or later with developer packages (python-dev, python-numpy)
  • ffmpeg or libav development packages: libavcodec-dev, libavformat-dev, libswscale-dev
  • [optional] libtbb2 libtbb-dev
  • [optional] libdc1394 2.x
  • [optional] libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libdc1394-22-dev
ထို packages များအား စက်ထဲသို့ ထည့်သွင်း လိုပါက Synaptic Manager သုံး၍ သော် လည်းကောင်း၊ terminal တွင် အောက်ပါ စာရင်း များပါ command များ ရိုက်နှိပ်၍ သော် လည်းကောင်း ထည့်နိုင် သည်။

Friday, October 27, 2017

Cross-platform C++ programming with wxWidgets

  1. နိဒါန်း
  2. Windows တွင်တပ်ဆင်ခြင်း
  3. Linux တွင်တပ်ဆင်ခြင်း
  4. Mac တွင်တပ်ဆင်ခြင်း
  5. အကိုးအကားများ

နိဒါန်း

wxWidgets က Windows ၊ Linux နဲ့ Mac OSX အစ​ ရှိ​တဲ့ ပ​လက်​ဖောင်း အမျိုး​မျိုး ပေါ်​မှာ GUI applications တွေ ရေး​ဖို့ အတွက် C++ library ပါ။ သူ​နဲ့ GUI code တွေ ရေး​ပြီး​ ရင် ပ​လက်​ဖောင်း အမျိုး​မျိုး ပေါ်​မှာ ကုဒ် ကို သိပ်​ပြင်​ စရာ မ​လို​ပဲ တန်း​ပြီး compile လုပ်၊ run လုပ်​လို့​ ရ​ပါ​တယ်။

wxWidgets ​က free လည်း​ပေး open source လည်း ​ဖြစ် တဲ့ software ပါ။ ကိုယ်​ပိုင် ဆော့​ဝဲ တွေ​ ထုတ်​မယ်​ ဆို​ရင် လည်း ဘာ​မှ ကန့်​သတ်​ချက်​ တွေ မ​ရှိ​ ပါ​ဘူး [wxW98]။ အဲဒါက Qt နဲ့ အဓိက ကွာခြားချက် ပါ။ Qt က LGPLv3 လိုင်စင် ကို free ပေးထားပြီး၊ ကိုယ်ပိုင် စီးပွားရေး အတွက် သုံးမယ် ဆိုရင် ကန့်သတ်ချက် တချို့ ရှိတာကြောင့် လိုင်စင် ဝယ်ဖို့ လိုကောင်း လိုနိုင် ပါတယ် [Qt17]။

Native platform ကို တတ်နိုင် သလောက် သုံးထား တာမို့ wxWidgets သုံးလို့ ရလာတဲ့ GUI တွေဟာ သုံးတဲ့ platform နဲ့ လိုက်ဖက်ပြီး ပင်ကို အမြင် အတိုင်း တသားထဲ ကျ တာကို ခံစား ရမှာပါ [wxW12]။ Standard C++ ကိုပဲ သုံးထားပြီး Qt တို့လို အထူး extension တွေ မသုံးထား တဲ့ အတွက် ရှုပ်ထွေးမှု နည်းတာ ကလည်း ကောင်းတဲ့ အချက် တစ်ခုပါ။

wxWidgets နဲ့ ရလာတဲ့ binary application တွေဟာ သေးငယ် ပေါ့ပါး တာမို့ embedded system တွေအတွက် အထူး သင့်တော် ပါတယ်။ နောက်တစ်ခါ library အရွယ်အစား တွေ ယှဉ်ရင်လည်း ဥပမာ အနေနဲ့ Qt library ကို တပ်ဆင်ရင် \(\approx 200\) MB လောက် အရွယ် ရှိပေမယ့် wxWidgets library က \(\approx 30\) MB လောက်ပဲ ယူပါတယ်။

wxWidgets က C++ အတွက် သာ မကပဲ python, perl, php, java, lua, lisp, erlang, eiffel, C# (.NET), BASIC, ruby နဲ့ javascript အတွက် တောင်မှ bindings [wxW15a] တွေ ရှိပါတယ်။ wxWidgets က တော်တော် ပြည့်စုံ ရင့်ကျက် တဲ့ GUI toolkits ဖြစ်ပြီး၊ utility classes လည်း အများကြီး ရှိတာမို့ ကောင်းမွန် သင့်တော် တဲ့ GUI toolkits အနေနဲ့ ညွှန်းဆို ချင်ပါတယ်။

wxWidgets ကို အသုံးပြုတဲ့ သူတွေ၊ အဖွဲ့အစည်းတွေ အများကြီး ရှိပြီး အဲဒီ အထဲမှာ လူသိများ တာတွေက NASA, AMD, Xerox, နဲ့ Open Source Applications Foundation (OSAF) တို့ ဖြစ်ပါတယ်။ ထင်ရှားတဲ့ wxWidgets applications တွေက AVG AntiVirus, Audacity, Filezilla, Code::Blocks, CodeLite တို့ ဖြစ်ပါတယ်။

Wednesday, September 13, 2017

Pixy

Arduino, Raspberry Pi, BeagleBone စတာ တွေနဲ့ Computer Vision အလွယ်တကူ တွဲသုံး ချင်ရင် Pixy (http://cmucam.org/projects/cmucam5) ဆိုတဲ့ Vision System လေး သုံးရတာ လွယ်ကူ အဆင်ပြေ ပါတယ်။ ကိုယ် detect လုပ်ချင် တဲ့ အရာ ဝတ္တု တွေရဲ့ အရောင် ကို သင်ပေး ပြီးတာနဲ့ သူတို့ ကို အာရုံခံ ပေးပြီး နေရာ၊ အရွယ် စတာ တွေကို UART, SPI, I2C အစရှိတဲ့ interface တွေ နေ ပို့ ပေးနိုင် ပါတယ်။

Thursday, August 3, 2017

KiCad အားစတင်အသုံးပြုခြင်း

KiCad ဆိုတဲ့ free software လေးက PCB ဆားကစ်ဘုတ်တွေ ဒီဇိုင်း လုပ်ဖို့ တော်တော် အဆင်ပြေတယ်။ အလကားပေးထားတာရယ်၊ ကန့်သတ်မှုတွေ မရှိပဲ စိတ်ကြိုက်သုံးနိုင်တာတွေရယ်ကိုတော်တော်သဘောကျမိတယ်။ စီးပွားဖြစ် အမြောက်အများထုတ်ရင် အသုံးဝင်တဲ့ BoM ၊ Gerber ဖိုင် လိုမျိုးတွေထုတ်ဖို့၊ ဒီဇိုင်းကို 3D မြင်ကွင်းနဲ့ ကြည့်ဖို့ တွေအတွက်ပါ ကိရိယာတွေပါတယ်။ Olimex တို့လို နာမည်ကြီး development ဆားကစ်ဘုတ် ပစ္စည်းကိရိယာ တွေလုပ်ရောင်းတဲ့ ကုမ္ပဏီတွေတောင် အခုနောက်ပိုင်း KiCad ကို ပြောင်းသုံးတယ်ဆိုပါတယ် [KiCad on Wikipedia]



ကျွန်တော် ကိုယ်တိုင်လည်း ဆားကစ်ဘုတ် တချို့လုပ်ပြီး သုံးကြည့်တာ အားလုံး အဆင်ပြေတာ တွေ့ရတယ်။ ဒါနဲ့ ကိုယ်တိုင်သုံးကြည့်လို့ ရတဲ့ အတွေ့အကြုံ၊ နည်းလမ်းလေးတွေကို စုပြီး မှတ်ထားချင်တာနဲ့ ၊ သူ့ရဲ့ Getting Started guide နဲ့ပေါင်းစပ်ပြီး၊ ကောင်းမယ်ထင်တဲ့ နမူနာလေးတွေနဲ့ မြန်မာလို KiCad သုံးနည်းစာအုပ်လေး ရေးဖြစ်တယ်။ စိတ်ဝင်စားရင် အောက်ကလင့်ခ်မှာ ယူပြီး ဖတ်ကြည့်ပါဦး။

https://yan9a.github.io/KiCad/kicadmm.pdf