![程序代碼的編寫與運行_第1頁](http://file4.renrendoc.com/view/b962c857b68349f6b164f6b536853892/b962c857b68349f6b164f6b5368538921.gif)
![程序代碼的編寫與運行_第2頁](http://file4.renrendoc.com/view/b962c857b68349f6b164f6b536853892/b962c857b68349f6b164f6b5368538922.gif)
![程序代碼的編寫與運行_第3頁](http://file4.renrendoc.com/view/b962c857b68349f6b164f6b536853892/b962c857b68349f6b164f6b5368538923.gif)
![程序代碼的編寫與運行_第4頁](http://file4.renrendoc.com/view/b962c857b68349f6b164f6b536853892/b962c857b68349f6b164f6b5368538924.gif)
![程序代碼的編寫與運行_第5頁](http://file4.renrendoc.com/view/b962c857b68349f6b164f6b536853892/b962c857b68349f6b164f6b5368538925.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
程序代碼的編寫與運行無線組網(wǎng)技術*CONTENTSPA目頁1智能車驅(qū)動程序編寫智能車網(wǎng)絡控制程序編寫程序運行及調(diào)試23目錄
無線組網(wǎng)技術
*
1.
智能車驅(qū)動程序編寫程序代碼的編寫與運行
無線組網(wǎng)技術
智能車驅(qū)動程序編寫
通過節(jié)點發(fā)送控制指令到智能車控制器。我們提供的相應的API接口來實現(xiàn)該功能,不同的接口由不同的組件提供,因此在使用接口時,必須在配置文件中包含相關組件。主要組件:CarC:提供了Car和CarControl兩個接口,以及實現(xiàn)這些接口功能需要用的其他組件;CarP:包含Car和CarControl兩個接口中所有命令的具體實現(xiàn);程序代碼的編寫與運行接口名稱命令或事件輸入?yún)?shù)返回值功能說明CarControlcommanderror_tstart()無SUCCESS正常啟動FAIL其他情況控制指令啟動命令正常啟動后會觸發(fā)事件eventvoidstartDone()commanderror_tstop()無SUCCESS正常FAIL其他情況停止控制指令正常停止后會觸發(fā)事件eventvoidstopDone()程序代碼的編寫與運行
Carcommanderror_tAngle(uint16_tvalue);舵機轉(zhuǎn)角值SUCCESS正常FAIL其他情況轉(zhuǎn)向角度輸入范圍內(nèi)的一個角度值(1800,3700),舵機即轉(zhuǎn)到相應的角度commanderror_tForward(uint16_tvalue);前進速度值SUCCESS正常FAIL其他情況前進速度輸入范圍內(nèi)的一個速度值(300,600),電機即轉(zhuǎn)到相應的速度commanderror_tBack(uint16_tvalue);后退速度值SUCCESS正常FAIL其他情況后退速度輸入范圍內(nèi)的一個速度值(300,600),電機即轉(zhuǎn)到相應的速度commanderror_tPause();無SUCCESS正常FAIL其他情況電機停止電機停止轉(zhuǎn)動commanderror_tInitMaxSpeed(uint16_tvalue);最大速度SUCCESS正常FAIL其他情況初始化最大速度最大速度,默認值600,可根據(jù)實際需要自行修改commanderror_tInitMinSpeed(uint16_tvalue);最小速度SUCCESS正常FAIL其他情況初始化最小速度最大速度,默認值300,可根據(jù)實際需要自行修改程序代碼的編寫與運行智能車驅(qū)動程序編寫
configurationCarC{provides{interfaceSplitControlasCarControl;interfaceCar;}}implementation{componentsCarP;//Uart通信組件
componentsnewMsp430Uart0C()asResourceusart0;componentsHplMsp430GeneralIOCasGIO;CarP.P20->GIO.Port20;
componentsHplMsp430Usart0C;
CarP.Usart->HplMsp430Usart0C;CarP.Interrupts->HplMsp430Usart0C;CarP.uart0resource->Resourceusart0;
……驅(qū)動組件圖程序代碼的編寫與運行接口命令的具體實現(xiàn)在CarP.nc文件中,其現(xiàn)實方式大同小異,下面將介紹前進的實現(xiàn)方法。command
error_t
Car.Forward(uint16_t
value)
{
cmdlength
=
7;
CarCommand[0]
=
0x01;
CarCommand[1]
=
0x02;
if(isStart
==
TRUE
&&
isSend
==
FALSE)
{
isSend
=
TRUE;
CarCommand[2]
=
FORWARD;
CarCommand[4]
=
(uint8_t)(value
&
0x00ff);
value
=
value
>>
8;
CarCommand[3]
=
(uint8_t)
value;
call
uart0resource.request();
}
……當調(diào)用Car.Forward()命令時,則會進入到CarP.nc中的上述代碼段,在文件開始已定義uint8_tCarCommand[CMD_LENTH]={1,2,1,0,0,255,255};智能車驅(qū)動程序編寫
*2.智能車網(wǎng)絡控制程序編寫
無線組網(wǎng)技術
程序代碼的編寫與運行智能車網(wǎng)絡控制程序編寫
程序代碼的編寫與運行PC端與節(jié)點的數(shù)據(jù)傳遞PC端插有節(jié)點,該節(jié)點是PC端建立與無線傳感器網(wǎng)絡的橋梁,它把從PC端拿的命令傳遞到無線傳感器網(wǎng)絡中。//節(jié)點接收串口數(shù)據(jù)使用到的組件如下:
components
SerialActiveMessageC
as
SAM;
BlinkC.SerialControl
->
SAM;
BlinkC.SerialSend
->
SAM.AMSend[AM_TEST_SERIAL_MSG];
BlinkC.SerialReceive
->
SAM.Receive[AM_TEST_SERIAL_MSG];
//節(jié)點接收串口數(shù)據(jù)使用到的接口如下:
uses
interface
SplitControl
as
SerialControl;
uses
interface
Receive
as
SerialReceive;
uses
interface
AMSend
as
SerialSend;
//節(jié)點接收串口數(shù)據(jù)的接口函數(shù)如下:
event
message_t*
SerialReceive.receive(message_t*
msg,
void
payload,
uint8_t
len)
{
}
響應SerialReceive.receive事件后,節(jié)點會拿到此時數(shù)據(jù)包的后三位的值,然后將該值廣播到無線傳感器網(wǎng)絡中,從而將此時從PC端獲取到的命令更新到整個網(wǎng)絡。智能車網(wǎng)絡控制程序編寫
程序代碼的編寫與運行
BlinkC.Receive
->
AMReceiverC;
//接收接口的連接
BlinkC.AMSend
->
AMSenderC;
//發(fā)送接口的連接
BlinkC.AMControl
->
ActiveMessageC;
components
CarC;
//申明使用CarC組件
BlinkC.Car
->
CarC.Car;
//連接到Car接口
BlinkC.CarControl
->
CarC.CarControl;
//連接CarControl接口
節(jié)點與節(jié)點的數(shù)據(jù)傳遞組件圖程序代碼的編寫與運行智能車網(wǎng)絡控制程序編寫
event
message_t*
Receive.receive(message_t*
msg,
void*
payload,
uint8_t
len)
{
if
(len
!=
sizeof(am_msg_t))
{return
msg;}
//如果收到的是命令包
if(len
==
sizeof(am_msg_t))
//如果收到的是命令包
{
am_msg_t*
rcm
=
(am_msg_t*)payload;
if((rcm->counter)>counter)
{
counter
=
rcm->counter;
commands
=
rcm->commands;
//拿到當前的命令
data
=
rcm->data;
//拿到當前的數(shù)值
printf("%x
%x
%x
\n",counter,commands,data);
printfflush();
switch
(commands){
//根據(jù)命令使小車進行相應的命令
……
*
3.程序運行及調(diào)試
無線組網(wǎng)技術
程序代碼的編寫與運行程序運行及調(diào)試
程序代碼的編寫與運行燒錄程序:將程序node_pc程序?qū)氲絊martNode網(wǎng)頁中進行編譯和燒錄代碼。SmartNode設備編譯燒錄界面程序運行及調(diào)試
程序代碼的編寫與運行往0號節(jié)點發(fā)送00FFFF000F0B3FEED10000數(shù)據(jù)包。
可進行如下操作:
輸入D10000
:小車開啟
輸入D50120
:小車以120(16進制)的速度前進
輸入D40E74
:小車以E74(16進制)的角度轉(zhuǎn)動
輸入D20120
:小車以120(16進制)的速度后退
輸入D60000
:小車停止其中默認的角度和速度(10
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2020-2025年中國減速器行業(yè)市場調(diào)研分析及投資戰(zhàn)略咨詢報告
- 2025年中國互聯(lián)網(wǎng)+服裝行業(yè)發(fā)展前景預測及投資規(guī)劃建議報告
- 提升復合型人才培養(yǎng)質(zhì)量的策略
- 中國石化購油合同范本
- 2025年加油站安全管理及事故應急預案合同
- epc內(nèi)部合同范例
- 個人網(wǎng)店店鋪轉(zhuǎn)讓合同范本
- 2020-2025年中國無人船行業(yè)市場調(diào)研分析及投資戰(zhàn)略咨詢報告
- 勞務廣告安裝合同范例
- 作品著作版權合同范例
- 秦始皇嬴政人物生平介紹PPT
- 在馬克思墓前的講話說課稿公開課一等獎市賽課獲獎課件
- 農(nóng)村電商(農(nóng)產(chǎn)品電商)運營PPT完整全套教學課件
- 骨科無痛病房的建立
- 口腔護理技術
- 塑料成型模具設計(第2版)江昌勇課件0-導論
- 《西藏度亡經(jīng)》及中陰解脫竅決(收藏)
- POWERPOINT教學案例優(yōu)秀6篇
- 2022年內(nèi)蒙古包頭市中考英語試卷含解析
- 五年級下冊《Lesson 11 Shopping in Beijing》教案冀教版三年級起點小學英語-五年級英語教案
- 2023年楊凌職業(yè)技術學院單招面試題庫及答案解析
評論
0/150
提交評論