2017年5月29日 星期一

DIY - ESP8266:ESP8266 SDK 回調函數(二十九)

DIY - ESP8266:ESP8266 SDK 回調函數(二十九):

使用 Espressif(樂鑫) ESP8266 的 SDK 編寫無線網路時,需要使用到註冊回調函數(Registered Callback Function)和回調函數(Callback Function),註冊回調函數用作無線網路的註冊或指定呼叫回調函數,回調函數則作為指定動作的事件處理,所以在初始化時註冊了回調函數,當事件發生時,便可以呼叫回調函數來處理事情。

回調函數(Callback Function)
註冊回調函數(Registered Callback Function): 
  1. espconn_regist_connectcb 
  2. espconn_regist_reconcb 
  3. espconn_regist_disconcb 
  4. espconn_regist_sentcb 
  5. espconn_regist_recvc
espconn_regist_connectcb
功能
註冊連接函數,成功連接時回調
函數定義
sint int8 espconn_regist_connectcb
(struct espconn *espconn, espconn_connect_callback connect_cb)
輸入參數
struct espconn *espconn - 相應連接的控制塊結構
espconn_connect_callback connect_cb - 註冊的回調函數
返回
0 - succeed#define ESPCONN_OK 0
0 - Erro,詳見 espconn.h

espconn_regist_reconcb
功能
註冊重連函數,出錯收到重連時回調
函數定義
s int int8 espconn_regist_reconcb
(struct espconn *espconn, espconn_connect_callback recon_cb)
輸入參數
struct espconn *espconn - 相應連接的控制塊結構
espconn_connect_callback recon_cb - 註冊的回調函數
返回
0 - succeed#define ESPCONN_OK 0
0 - Erro,詳見 espconn.h

espconn_regist_disconcb
功能
註冊斷開連接函數,斷開連接成功時回調
函數定義
s int int8 espconn_regist_disconcb
(struct espconn *espconn, espconn_connect_callback discon_cb)
輸入參數
struct espconn *espconn - 相應連接的控制塊結構
espconn_connect_callback discon_cb - 註冊的回調函數
返回
0 - succeed#define ESPCONN_OK 0
0 - Erro,詳見 espconn.h

espconn_regist_sentcb
功能
註冊數據資料發送函,數據發送成功後回調
函數定義
sint int8 espconn_regist_sentcb
(struct espconn *espconn, espconn_sent_callback sent_cb)
輸入參數
struct espconn *espconn - 相應連接的控制塊結構
espconn_sent_callback cb - 註冊的回調函數 註冊的回調函數
返回
0 - succeed#define ESPCONN_OK 0
0 - Erro,詳見 espconn.h

espconn_regist_recvcb
功能
註冊數據資料接收函數,收到數據時回調
函數定義
s int int8 espconn_regist_recvcb
(struct espconn *espconn, espconn_recv_callback recv_cb)
輸入參數
struct espconn *espconn - 相應連接的控制塊結構
espconn_recv_callback recv_cb - 註冊的回調函數
返回
0 - succeed#define ESPCONN_OK 0
0 - Erro,詳見 espconn.h

ESP8266 註冊回調函數程式:
espconn_regist_connectcb(pespconn, server_listen_cb); //註冊連接回調函數
espconn_regist_disconcb(pespconn, server_discon_cb); //註冊斷開連接回調函數
espconn_regist_sentcb(pespconn, server_sent-cb);   //註冊發送資料成功回調函數
espconn_regist_recvcb(pespconn, server_recv_cb);  //註冊接收資料回調函數
 


回調函數(Callback Function):
  1. espconn_connect_callback 
  2. espconn_sent_callback 
  3. espconn_recv_callback
espconn_connect_callback
功能
偵聽或連接成回調
函數定義
void espconn_connect_callback (void *arg)
輸入參數
void *arg - 回調函數參數
返回

espconn_sent_callback
功能
數據發送結束回調
函數定義
void espconn_sent_callback (void *arg)
輸入參數
void *arg - 回調函數參數
返回

espconn_recv_callback
功能
數據發送結束回調
函數定義
void espconn_recv_callback (void *arg, char *pdata, unsigned short len)
輸入參數
void *arg - 回調函數參數
char *pdata –接收數據入口參數
unsigned short len - 接收數據長度
返回

ESP8266回調函數程式:
// Callback for Reconnect
static void ICACHE_FLASH_ATTR
server_recon_cb(void *arg, sint8 err)
{}

// Callback for Disconnect
static void ICACHE_FLASH_ATTR
server_discon_cb(void *arg)
{}

// Callback for Sending Data Success
static void ICACHE_FLASH_ATTR
server _sent_cb(void *arg)
{}

// Callback for Receiving Data Success
static void ICACHE_FLASH_ATTR
server _recv_cb(void *arg, char *pdata, unsigned short len)
{}

2017年5月25日 星期四

MiniScribe 8051A 42MB 硬碟機(Hard Disk Drive)機械部分拆解(三)

MiniScribe 8051A 42MB 硬碟機(Hard Disk Drive)機械部分拆解(三):

MiniScribe 8051A 42MB 硬碟機(HDD / Hard Disk Drive)的機械部分是安裝在一個壓鑄Die Casting盒內,壓鑄盒 P/N ADC1004501001 / 004500404 在香港製造(Made In Hong Kong),由於資料是寫在磁碟磁軌上,精密度很高,避免受塵埃的影響,盒子是要密封的,外面還有伺服馬達(Servo Motor)和主軸馬達(Spindler Motor)。

MiniScribe 8051A 42MB 硬碟(HDD)機械部分
首先將壓鑄盒上的五顆固定螺絲拆除,由於面盒和底盒中間有膠邊封實,防止塵埃進入和防震功能,要用螺絲批輕輕拗開,分開面盒和底盒,見到內有兩片用作儲存的磁碟和用作讀寫的磁頭組。
 
MiniScribe 8051A 42MB 硬碟(HDD)
MiniScribe 8051A 42MB 硬碟(HDD)機械部分的機械部分
MiniScribe 8051A 42MB 硬碟(HDD)的機械部分面殼
磁碟直徑是 95mm, 厚度是 1.26mm,重量是 22.88g,共有兩片,讀寫磁頭共兩組,分別負責兩片磁碟的讀寫工作。

MiniScribe 8051A 42MB 硬碟(HDD)的兩片磁碟
MiniScribe 8051A 42MB 硬碟(HDD)的兩組讀寫磁頭
MiniScribe 8051A 42MB 硬碟(HDD)的兩組讀寫磁頭
主軸馬達(Spindler Motor)是 Nidec 製造 P/N 2986-4DFA-02A。
 
MiniScribe 8051A 42MB 硬碟(HDD)的主軸馬達(Spindler Motor)
MiniScribe 8051A 42MB 硬碟(HDD)的螺絲配件
2017年 5月 25日 天氣報告
氣溫:26.6@ 20:20
相對濕度:百分之 82%
天氣:大致多雲

2017年5月24日 星期三

MiniScribe 8051A 42MB 硬碟機(Hard Disk Drive)電子部分拆解(二)

MiniScribe 8051A 42MB 硬碟機(Hard Disk Drive)硬碟機(Hard Disk Drive)電子部分拆解(二):

MiniScribe 8051A 42MB 硬碟機(HDD / Hard Disk Drive)於 1989年在香港生產製造(Made in Hong Kong)的 42MB 3.5吋硬碟(HDD,Hard Disk Drive),8051A 型號是 P/N HDA47745E,用一個 5.25吋的外框固定,方便安裝在電腦內,硬碟實際尺寸 145mm × 102mm × 37mm,重量有625g。

MiniScribe 8051A 42MB 硬碟(HDD)
MiniScribe 8051A 42MB 3.5吋硬碟的 PCB 板的 IC 集成度不高,PCB 板尺寸是 195mm × 147mm × 43mm,重量是 102g。

MiniScribe 8051A 42MB 硬碟(HDD)兩邊各有兩顆螺絲固定
MiniScribe 8051A 42MB 硬碟(HDD)的 5.25吋外框
MiniScribe 8051A 42MB 硬碟(HDD)
拆除 NEC D3142 硬碟 PCB 板上的四顆固定螺絲和卸除連接器便可以分離硬碟機械部分,硬碟 PCB 板上共有 12枚 IC(10 枚在板上和2 枚在板下) 和 3枚 Hybrid IC。

MiniScribe 8051A 42MB 硬碟(HDD)PCB板上的四顆固定螺絲
MiniScribe 8051A 42MB 硬碟(HDD)PCB 板的頂部
MiniScribe 8051A 42MB 硬碟(HDD)PCB 板的底部
MiniScribe 8051A 42MB 硬碟(HDD)PCB 板的主要 IC:
No.
P/N
Brand
Decription
U1
HD63B03R10P
Hitachi
8-bit CMOS Micro Processing Unit
U2
74ACT373
NS
Octal Transparent Latch with 3-STATE Outputs
U3
AT27C256
Atmel
256K (32K x 8) 5-volt Only Flash Memory
U4
?
?
?
U5
?
?
?
U6
7406
TI
Hex Inverter Buffers/Drivers With Open-Collector Outputs
U7
26C256L
NCR

U8
16L8-25C
TI
Programmable Logic Device
U9
16L8-15C
TI
Programmable Logic Device
U10
MC68HC11A0FN
Motorola
8-Bit Microcontroller
U11
AT27C256
Atmel
256K (32K x 8) 5-volt Only Flash Memory
U12
7406
T1
Hex Inverter Buffers/Drivers With Open-Collector Outputs
U13
LM358
?
Low Voltage Amplifier
U14
L272
ST
Dual Power Operational Amplifier
U15
ZN558D
Plessey
8-Bit Latched Input Monolithic D/A Converter (DAC)
U16
MC34074P
Motorola
Operational Amplifier
U17
01110001
?
?
U18
VGC7212-0676
VLSI
?
U19
0111002A
Miniscribe
?
U20
?
?
?
U21
?
?
?
U22
0111001A
Miniscribe
?
U23
74ACT373
NS
Octal Transparent Latch with 3-STATE Outputs
U24
74ALS00
T1
Quadruple 2-Input Positive-NAND Gates
U25
?
?
?
U26
?
?
?
U27
74HCT04T
Philips
Hex inverter
U28
CL-SH260-15PC-D
Cirrus Logic
Enhanced PC XT/AT Disk Controller

2017年 5月 24日 天氣報告
氣溫:25.4@ 23:10
相對濕度:百分之 90%
天氣:微雨