Apache運行asp.net

1.先確認你的apache的版本
Apache 2.2 按此連結
Apache 2.X 按此連結
Apache 2.0 按此連結
在上面的網站
找到相對映的網站下載
不知道apache的版本??
到開始→設定→控制台→系統管理工具→服務
找到apache
後面會有跟數字就是apache的版本

2.把檔案安裝起來
特別注意安裝檔通常會指到apache的安裝位子
但是有可能跑掉
請指到對的位子

3.確認是否有安裝Mircosoft .NET Framework 3.5以上
可以在開始→設定→控制台→新增移除程式
找是否有安裝
沒有的話請按此連結
下載並安裝

4.開啟apache的config
通常是放在
apache底下的conf
名子為httpd.conf
在最後面貼上
LoadModule aspdotnet_module modules/mod_aspdotnet.so 

AddHandler asp.net asax ascx ashx asmx aspx axd config cs csproj licx rem resources resx soap vb vbproj vsdisco webinfo
 
AliasMatch "^/(?i)aspnet_client/system_web/(\d+)_(\d+)_(\d+)_(\d+)/(.*)" "C:/Windows/Microsoft.NET/Framework/v$1.$2.$3/ASP.NETClientFiles/$4"
 
<Directory "C:/Windows/Microsoft.NET/Framework/v*/ASP.NETClientFiles">
    Options FollowSymlinks
    Order allow,deny
    Allow from all
</Directory>

AspNetMount /aspx "C:/AppServ/www/aspx"
Alias /aspx "C:/AppServ/www/aspx"
<Directory "C:/AppServ/www/aspx">
    Options FollowSymlinks Indexes
    AspNet files
    Order allow,deny
    Allow from all
    DirectoryIndex default.htm default.aspx
</Directory>

 C:/AppServ/www/aspx是你的在本機網頁路徑
 /aspx是你想要在網址後面的
這樣設定網址打http://127.0.0.1/aspx就回連到你上面設定的地方
default.htm default.aspx可以打你想要初始的檔案名稱
存檔後請到
開始→設定→控制台→系統管理工具→服務
將apache的服務停止

再開啟
然後在apache上點兩下開啟內容
成功會看到mod_aspdotnet/2.2
2.2為apache的版本

5.在網頁資料夾建立default.aspx
在裡面打
<html>
<body>
現在時間:
<%
Dim T As Date
T = Now
Response.Write(T)
%>
</body>
</html>
然後開啟網頁看看是否有成功

6.要是出現
目前的識別 (NT AUTHORITY\SYSTEM) 沒

有 'C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files' 的寫入權限。
就自己跑到
C:\Windows\Microsoft.NET\Framework\v2.0.50727\
下建立 Temporary ASP.NET Files 資料夾
通常只會出現在vista或是windows 7

zstack的ZDP的使用方式

其實TI的zstack裡面有很多很好用的API
不需要自己在花時間去撰寫
只是需要稍微去修改才能使用
接下來我開始說ZDP的使用方式
ZDP的code都放在
C:\Texas Instruments\ZStack-1.4.3\Components\stack\zdo\ZDProfile.c
裡面
接下來就是來看裡面有什麼東西
裡面已經寫好任何一個zigbee接受到指令後所需要得反應
例如在Z-stack的API手冊裡也到ZDP_NwkAddrReq()的函式
它是用來得知某個已知的IEEE address位址想要知道
它在zigbee的short address
在這個code裡面已經寫好反應的方式
也就是說不必寫傳送和回覆的程式碼
都已經寫好給你了
但是它沒寫好的就是我接收到要做什麼事
因為他已經將傳送的資料交給zdo的程序來處理
沒辦法交給使用者自訂的程序來處理
所以需要修改一部分來交給自訂的程序處理
所以要找到
CONST zdpMsgProcItem_t zdpMsgProcs[] =  
這是zdp接受到訊息的指令所對應到的函式
裡面並沒有NWK_addr_rsp
也就是回應過來所對應的函式
所以在
 {0xFFFF, NULL}
前面加上
 { NWK_addr_rsp,            ProcessAddrRsq },
ProcessAddrRsq可以自己命名
不過最好寫個前置判斷
因為不是每個device都需要用到
所以我都寫成這樣
#if defined (addr_rsp)
  { NWK_addr_rsp,            ProcessAddrRsq },
#endif
這樣編譯的時候只會編譯有define addr_rsp的device
然後還要在上面加上
#if defined (addr_rsp)
  extern void ProcessAddrRsq( zdoIncomingMsg_t *inMsg );
#endif
因為我想要把它寫在自訂程序同一個地方
接下來就到自訂程序的地方寫code
也就是sampleapp.c
當然要宣告
void ProcessAddrRsq( zdoIncomingMsg_t *inMsg );
然後開始寫處理的方式
不過要先知道他傳過來的格式是什麼
先找到
void zdpProcessAddrReq( zdoIncomingMsg_t *inMsg )
的函式
它是用來回覆有關address的函數
在裡面的程式看來
在資料的第2個位子就是IEEE address
佔8個位子
也就是inMsg->asdu+1到inMsg->asdu+8
接下來就是short address
佔2個位子
也就是inMsg->asdu+9到inMsg->asdu+10
當然也可以由接收到的資料裡面找來源位子
inMsg->srcAddr.addr.shortAddr
這樣就可以設計成下面這樣子
void ProcessAddrRsq( zdoIncomingMsg_t *inMsg )
{
    if (osal_ExtAddrEqual(end_addr.extAddr, inMsg->asdu+1)) {
        end_addr.shortAddr = inMsg->srcAddr.addr.shortAddr;
    }
}
osal_ExtAddrEqual是內建函數用來比較IEEE address是否一樣

接下來就是如何呼叫ZDP_NwkAddrReq()的函式
在ZDP_NwkAddrReq的函式外圍有前置判斷
所以要先設定#define ZDO_NWKADDR_REQUEST
接下來就可以直接用了
ZDP_NwkAddrReq(end_addr.extAddr, ZDP_ADDR_REQTYPE_SINGLE, 0, 0);
第一個參數是IEEE address
第二個參數是要如何回傳
ZDP_ADDR_REQTYPE_SINGLE//只回傳需求端
ZDP_ADDR_REQTYPE_EXTENDED//用廣播的方式回傳
第三個參數是startindex
第四個參數是securitysuite


其他的也就照這樣寫就可以了

Uboot設定

1.在開機的時候先進入uboot
在此畫面要快速按下任何鍵就可以進入uboot模式

2.接下來就是開始設定uboot
uboot有很多參數必須被設定如下
bootcmd    - see CONFIG_BOOTCOMMAND
bootargs    - Boot arguments when booting an RTOS image
ipaddr    - IP address; needed for tftpboot command
serverip    - TFTP server IP address; needed for tftpboot command
ethact    - When CONFIG_NET_MULTI is enabled controls which interface is currently active.
gatewayip    - IP address of the Gateway (Router) to use
netmask    - Subnet Mask
ethaddr    - Ethernet address
那要如何設定
打set的指令加上你要設定的參數名稱和參數(有些舊版本要打setenv)
參數名稱除了上面的之外
也可以自己命名其他的名子
例如要設定這台機器的ip
set ipaddr 192.168.0.99
那設定完要如何看??
就打print(有些舊版本要打printenv)
print
但是這些設定完後
重新開機會回歸原始狀態
那要如何儲存??
就打save(有些舊版本要打saveenv)
save
基本設定如下:
set ipaddr 192.168.0.99
set serverip 192.168.0.101
save
print 
如下圖所示


接下來就是從遠端下載kernel的image的設定
通常都是用tftp來下載
在server的安裝教學按此
接下來就是下令
tftp的指令就是tftp
後面要跟的參數是
tftp loadAddress bootfilename
loadaddress就是你要將image下載到硬體的哪裡(通常以16進位來表示)
bootfilename就是在你主機上的檔名
設定如下:
tftp 22000000 uImage
成功如下圖

要是出現
*** ERROR: `ethaddr' not set
請設定ethaddr
ethaddr只能設定一次
也就是設定MAC address
輸入32位元的數值
set ethaddr 11:22:33:44:55:66
save
要是出現Loading: T T T T
如下圖
可以按下ctrl+c強制中斷
並且檢查是否server的ip設錯
或是硬體的ip設錯網段
是否可以連到server

接下來就是如何讓uboot利用nfs掛載root-file-system
就要設定以下參數
set bootargs console=fb0 console=ttyS0,115200 androidboot.console=ttyS0 root=/dev/nfs rw init=/init nfsroot=192.168.0.101:/root/rootfs ip=192.168.0.99:192.168.0.101:192.168.0.254:255.255.255.0::eth0 off rootwait
save 
裡面比較重要的是
console為用什麼輸出訊息
上面設定是讓uart輸出包率為115200
init為一開始掛載完root-file-system之後先開啟的檔案
nfsroot為設定server的IP和資料夾的位子
ip為設定機器的ip server的ip 網路閘道 遮罩 使用哪個網路口

接下來就可以開啟kernel
下的指令是
bootm
後面的參數是16進位
bootm 22000000
就等掛載好了就會出現一個#
如下圖
就可以用linux的指令去玩了