基于以太網(wǎng)的電力智能監(jiān)控終端的研究
4.2 軟件實(shí)現(xiàn)
1) 初始化W3100
初始化W3100時(shí),應(yīng)首先對其進(jìn)行硬復(fù)位,然后設(shè)定MAC地址及IP,最后初始化SOCKET接口。
ResetEthernet(); //硬復(fù)位W3100
InitW3100A(); //初始化W3100
InitNetConfig(); //配置以太網(wǎng)卡參數(shù)
InitSocket(); //初始化SOCKET
2) 中斷服務(wù)程序
根據(jù)W3100的使用手冊,在系統(tǒng)中提供一個(gè)硬件中斷作為W3100的中斷輸入,在中斷服務(wù)程序中記錄狀態(tài)值。代碼如下。
_interrupt(INT_PCA0) _using(INT_PCA0_PSW)
?。?br /> u_char status;
status = INT_STATUS;
while (status)
{
if (status 0x01) {
S_STATUS[0] = STATUS(0);
INT_STATUS = 0x01;
?。?/第1、2、3類似處理
if (status 0x10) {
S_STATUS[0] = STATUS(0);
INT_STATUS = 0x10;
}//第1、2、3類似處理
status = INT_STATUS;
?。?br /> INT_STATUS = 0xFF;
}
3) 收發(fā)數(shù)據(jù)
設(shè)計(jì)一個(gè)任務(wù)定時(shí)10毫秒進(jìn)行數(shù)據(jù)收發(fā)處理,其過程如下。
SOCKET i;
INT len;
WORD TSCKNUM = 2404;
for (i = 0; SockNo 4; SockNo++)
?。?br /> switch (Select(i, SEL_CONTROL))
{
case SOCK_ESTABLISHED:
if ((len = select(i, SEL_RECV)) > 0)
?。?br /> if (len > MAX_BUF_SIZE) len = MAX_BUF_SIZE;
len = recv(i, data_buf, len);
send(i, data_buf, len);
}
break;
case SOCK_CLOSE_WAIT: if ((len = select(i, SEL_RECV)) > 0)
?。?br /> if (len > MAX_BUF_SIZE) len = MAX_BUF_SIZE;
len = recv(i, data_buf, len);
}
close(i);
break;
case SOCK_CLOSED:
init_sock(i);
break;
?。?br /> }
5 結(jié)束語
在設(shè)計(jì)與實(shí)現(xiàn)電力智能監(jiān)控終端過程中,應(yīng)用W3100作為以太網(wǎng)協(xié)議棧轉(zhuǎn)換器具有接口簡單、編程方便、通訊速率高、工作穩(wěn)定等特點(diǎn),能夠簡化設(shè)計(jì)難度、加快設(shè)計(jì)進(jìn)度,因此W3100在快速實(shí)現(xiàn)網(wǎng)絡(luò)化的設(shè)計(jì)中具備良好的應(yīng)用前景。本文以成熟的應(yīng)用技術(shù)為基礎(chǔ),增加了硬件協(xié)議轉(zhuǎn)換器,減少了開發(fā)風(fēng)險(xiǎn),縮短了開發(fā)周期,提高了產(chǎn)品的應(yīng)用水平。該電力智能監(jiān)控終端系統(tǒng)已經(jīng)產(chǎn)品化,累計(jì)創(chuàng)造了1000萬元產(chǎn)值。本文引用地址:http://www.ex-cimer.com/article/202670.htm
tcp/ip相關(guān)文章:tcp/ip是什么
評論