2020年4月26日 星期日

[C] Error Code

不同的編譯器可能會產生不一樣說明的error code,但都大同小異.
善用Ctrl + F 收尋


2020年4月6日 星期一

[C] 基礎

C只有Call by value

Object: 有占空間的就教物件,所以物件會有明確大小 (eq. int a)

*(int32_t *)(0x11aa) = 0x01;  //location value:*(int32_t *)(0x11aa) , assignment: =

2020年4月5日 星期日

[C] #ifdef #ifndef #elif #else #endif #if defined

1.#ifdef
a.只有一個條件
#ifdef 識別字
   /*若識別字被定義,編譯器會編譯此部分程式*/
#else
   /*否則編譯此部分程式*/
#endif
或
#if defined(CONDITION_1)
   /*若識別字被定義,編譯器會編譯此部分程式*/
#elif
   /*否則編譯此部分程式*/
#endif
/*Example*/
#define CONDITION_1
#ifdef CONDITION_1
   /*編譯此部分程式*/
#else
   /*不編譯此部分程式*/
#endif

2020年3月22日 星期日

[BT/BLE] Beacon/Advertising 藍芽廣播介紹

BLE(Bluetooth Low Energy)的廣播模式,也稱Advertising,少許人稱broadcast.

Google稱為Eddystone, Apple稱為Beacon.
雖然名字不同,但他們都是類似的東西,都是按照BLE的Advertising 格式所構成的.

需要文件載點:
Core Specification and Core Specification Supplement
Eddystone Protocol Specification
iBeacon




2020年3月18日 星期三

[C] 指標

&:取址(reference operator), address of ... (eq.&a:address of a)
*:取值(dereference operator),value of ... (eq.*b:value of b)


各種用法解說:
char *ptr;  //char表示point指向變數的類型,唸做:ptr is a pointer to char

char p[5]; // p is a 5-element array of char
char *p[5]; // p is a 5-element array of pointer to char 
char (*p)[5]; // p is a pointer to a 5-element array of char

另一種解釋
int *ptr[10];
This is an array of 10 int* pointers

int (*ptr)[10];
This is a pointer to an array of 10 int


typedef void (*func)(char);
func是個指標,指向某個函式,而這個涵式有一個資料型態為char的引述,回傳值為void


示意圖:



2020年3月16日 星期一

[C] 讀寫存取.txt.bin

fopen
不採用二進制方式打開,fopen(filename, "r"),只要文件中有一字節為1A,就會停止讀取.如果用fopen(filename,"rb")就不會出現此問題.

rb是只讀取二進位文件:
r:read, b:binary

fseek
很重要,有時候讀不到長度會資料是這部分設定錯誤,意思是游標的位置.