2022年6月23日 星期四

題庫參考_2022

#部分出題題庫參考(6/27更新)

選擇題 (單選) 



1. 檔案的副檔名經常被用來作為檔案型態的區別,下列何者"不是"視訊影片檔的副檔名?
(A) avi
(B) wmv
(C) mp4
(D) mp3


2. 下列單位何者可以用來衡量印表機的列印解析度? 
(A) PPM
(B) DPI
(C) CPP
(D) PPT


3. 若開發了一個開源軟體,但"不想"讓之後的使用者將它改為閉源的方式發行,應採用下列何種授權方式?
(A) GPL
(B) BSD
(C) MIT
(D) Apache


4. 常見的創用 CC 授權條款是一種公共著作權授權條款,用來散佈開源硬體的設計文件,在創用 CC 授權條款四個元素、使用中的六種組合裡,下列何者是必然會出現的元素?
(A) 禁止改作(No Derivatives)
(B) 相同方式分享(Share Alike)
(C) 姓名標示(Attribution)
(D) 非商業性(Non-Commercial)


5. IPv4的位址有多少個位元組?
(A) 4
(B) 16
(C) 32
(D) 128


6. 下列有關演算法與程式語言的敘述,何者正確?
(A) 相同的演算法若以不同的程式語言撰寫,其執行效率也不同
(B) 演算法可藉由無限的步驟解決問題
(C) 程式語言是一種邏輯上的推演法則,演算法則是實現的工具
(D) Python是屬於低階程式語言


7. 下列那個IP位址可以通過Firewall的管制,直接在Internet上流通?
(A) 127.0.0.1
(B) 255.255.0.0
(C) 192.168.4.2
(D) 168.95.192.1


8. 網路中每一台主機均需有IP位址,以下何種協定用來自動設定IP位址以方便管理網路?
(A) DNS
(B) ARP
(C) SNMP
(D) DHCP


9. 下列何者"不屬於" AI (Artificial Intelligence)的應用?
(A) 語音辨識
(B) 自然語言處理
(C) 電子商務
(D) 專家系統


10. iBeacon為蘋果所提出的室內定位技術,其主要是應用何種通訊技術?
(A) NFC
(B) WiFi
(C) Bluetooth
(D) LTE


2022年6月22日 星期三

[C程式設計] 字串處理函式:strspn, strpbrk



size_t strspn(const char *str1, const char *str2)  傳回str1包含了str2 字串中的字元,共有有多少個。
char *strpbrk(const char *str1, const char *str2)  傳回str1中出現str2字串中字元的位置。若沒有找到傳回NULL. 

char *d =strpbrk("my phone number is 23167736", "0123456789")
print("%c",d); ==> 卬出2

========================

 以處理HTTP header 的字串為例,  我們要逐行取出HTTP header的內容,  但要如何逐行進行呢? 
以下是使用 strspn(), strpbrk() 函式來完成的
 




參考: 
[1]程式參考

#include <stdio.h>
#include <string.h>

int main ()
{

  char method_str[]="GET         /doc/test.html   HTTP/1.1  \r\n";
   char *url;
   char *protocol;
   char *end;

   url=strpbrk(method_str," \t\n\r") ;
   printf("%s\n",url);
   *url++='\0';


    url += strspn(url, " \t\n\r");
    protocol = strpbrk(url, " \t\n\r");
    *protocol++='\0';


    protocol += strspn(protocol, " \t\n\r");
    end = strpbrk(protocol, " \t\n\r");
    *end++='\0';

  printf("%s\n",method_str);
  printf("%s\n",url);
  printf("%s\n",protocol);


  return 0;


}

[2]   https://github.com/troglobit/merecat/blob/master/src/libhttpd.c




2022年5月30日 星期一

Disables dynamic cpufreq

 



Boot loader程式放入 Pi3中, 一開機剛開始跑的時候,LED 閃爍頻率都很正常 , 但大約經過約10秒左右 , 時間會變快 . 例如LED 0.5sec閃爍一次 , 經過10sec後變快小於0.5sec閃爍,是哪裡的設定需要再做調整修改 ?



#Disables dynamic cpufreq driver

add this line "force_turbo=1" to config.txt  . 

you can also google DVFS to get more information


2022年5月24日 星期二

[ C 語言] 巨集定義

 

[ C 語言]

1.) 在程式檔中 (,c 或.h) 定義 DEBUG  


  #define DEBUG  


2.) 不改變在程式檔, 而是在程式編譯階段去定義 DEBUG    

gcc -DDEBUG  hello.c -o hello 

(等同在hello.c 內加入了#define DEBUG   這一行 )




2022年4月30日 星期六

[C 語言] 有無const 的差異?

 


char *s : 表示s 指標指向一個character
constant char *s : 表示s 指標指向一個constant character; 也就是所指向的字元不能被修改
可以參考底下範例, 觀察有無const 的差別.

#include <stdio.h>
int main()
{
const char str[]="hello";
str[0]='H';
printf(str);
return 0;

}

若是寫 const char *str="hello";
這str 本來就指向read only 的"hello"字串區域, 所以本來就不能更改, 因此
這兩個寫法結果沒有差異, 但用const char * str寫法可以讓別人知道, 不會透過str 來改變指標所指的內容.

char *str="hello"; 
const char *str="hello";


2022年3月15日 星期二

[MCU單晶片 Q&A] ADC工作頻率

 

Question:
要怎麼知道Fosc 是16MHz呢? Fosc 是MCU的固定property 還是是個可以設置的參數呢?

Answer: 
這是外部提供 16MHz 的 Crystal oscillator
p.s. 可參考上課文件的的電路圖  (WengPICV2_sch.pdf )


2022年3月13日 星期日

[MCU單晶片 Q&A] 中斷

 

Question:

PPSunlock() 和PPSlock() 功能為何呢? 為什麼要用這兩個PPSunlock和PPSlock去包住RPI function? 使用PPSlock()和PPSunlock() 為什麼要把GIEH 中斷關掉呢? 因為沒看到文件上有這樣說明, 但是PPS 裡的function 有關掉中斷後面再回復的動作




Answer: 

   這是PPS 使用的規定, 如此才可以 remap Pin 腳功能, 
   可以參考PIC18F46J50 文件描述, 關於PPS 主題 10.7.4.1 Control Register Lock  

2022年3月9日 星期三

[MCU單晶片 Q&A] I2C 操作


[I2C 操作]
Question : 在I2C的START function 裡要先檢查SDA 是否已經為0,來決定是否進行後面是否要將SCL=0和SDA=1的動作,這樣和範例是藉由Din 來判斷是一樣的嗎? 而 Din 是SDA接腳的接收輸入接腳,為什麼要定義這個接腳呢?而沒有SCL的輸入接腳的定義




Answer : 
確認SDA 是否真的在Low level的狀態, 實際的作法是去讀取PORT 暫存器, 而不是去讀取TRIS暫存器. 為何在I2C START時,要判斷SDA為LOW呢? 因為我們進行I2C START動作, 是將SDA=1 (而原本SCL若在High), 則會變成多產生一個I2C STOP的動作,才再產生I2C START的動作。






Each port has three registers for its operation. These registers are:
  • TRIS register (data direction register)
  • PORT register (reads the levels on the pins of the device)
  • LAT register (output latch)





2022年2月25日 星期五

PCB Layout 入門教學(八) ---PCBA 人工打件


PCB 佈線圖完成後,產生所謂Gerber File 給PCB 加工廠後,就可以生產出PCB 電路版了。接著就是照BOM表的電子零件清單備料。當然也會有統包的公司,包含PCB、備料、打件、樣品生產的服務。一個PCB空板經過SMT打件,或經過DIP插件的整個製程,簡稱PCBA (PCB Assembly)。

SMT 自動打件的流程為:製作鋼板、PCB板定位、上錫膏、貼裝機貼裝、過回焊爐、成品檢驗。但如果是原型樣品,或僅需小批量生產,如100~200片,想要試試看"人工打件",就是沒有SMD貼裝機啦,那你也可以自行DIY,本篇文章就是要分享人工打件的方法,適合Maker 族群。


(1) 製作鋼板: 為PCB 板製作一個鋼板,這是一次性的成本。鋼板上有洞的地方就是等等要上錫的位置。


 
 

(2)上錫膏:

 

將錫膏均勻抹平在鋼板的洞上,拿掉鋼板後如下圖所示。



(3.) 人工貼裝機: 依照Layout 圖,將元件正確擺放。在融錫前,錫膏的黏度剛好可以稍微黏住PCB表面的電子零件,所以有些微的晃動也不會使元件偏移。
 




(4.)  手工迴銲爐: 需要一個加熱台來加熱融錫,如此電子零件就被銲接在PCB上了。










(5.) 成品:
  
    大功告成! 每一個零件就像由機器自動定位來擺放一樣。好吧! 這就人工打樣的過程 ^_^ 





額外分享:
 
這是專業SMT機台的打件速度~



 
上錫膏也是自動化流程的一部份