程序代碼的編寫與運行_第1頁
程序代碼的編寫與運行_第2頁
程序代碼的編寫與運行_第3頁
程序代碼的編寫與運行_第4頁
程序代碼的編寫與運行_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論