那現在要控制其實已經差不遠了
首先必須要有一條com3轉接AX-12的轉接線
然後就可以開始撰寫程式部分了
首先要先將專案屬性先設定好
組態先選擇為Release (因為Debug會出現問題)
要把組態結構 -> C/C++ -> 一般 其中的 "其他Include目錄" 將他指定到RoBoIO-bin-v1.8-winxp\Include
然後組態結構 -> 連結器 -> 一般 中的 "其他程式庫目錄" 將他指定RoBoIO-bin-v1.8-winxp\Lib\VC2008
最後將組態結構 -> 連結器 -> 輸入 中的 "其他相依性" 內容輸入RoBoIO.lib
這樣設定好 就可以使用RoBoard的Lib了
首先程式碼
必須要有的是設定RB的型號
roboio_SetRBVer(RB_100);
Or roboio_SetRBVer(RB_110);
之後就是做com3的設定了
首先至少要有2個array
一個是傳出 一個是傳入
將初值都設定好了之後
先做com3 Init的動作
然後設定Data Formate
com3_SetFormat(bytesize, stopbit, parity);
bytesize是每筆資料共有幾個bits
stopbit為停止位元
parity則是設定檢查碼的方式
接著設定Baud
Baud是用來讓RoBoard和馬達之間有一個共同的速度傳輸
否則收發速度不同則會導致資料錯亂
接著就可以開始設計一整個程式碼了
當中會用到的有
com3_ServoTRX(cmd, csize, buf, size);
cmd為傳出給馬達的資料陣列
csize為cmd的size
buf是用來儲存馬達回傳的值 通常若有錯誤訊息可以在這找到
size為buf的size
然後在程式的末端
記得打上com3_Close();
將com3關閉
#include "stdio.h" #include "conio.h" #include "roboard.h" int main(void) { unsigned char c; unsigned char cmd1[11] = {0xff, 0xff, 0x01, 0x07, 0x03, 0x1e, 0x00, 0x02, 0x00, 0x02, 0x00}; unsigned char cmd2[11] = {0xff, 0xff, 0x03, 0x07, 0x03, 0x1e, 0x00, 0x02, 0x00, 0x02, 0x00}; unsigned char buf[6] = {0}; int num1, num2; num1 = num2 = 0x200; roboio_SetRBVer(RB_110); if(com3_Init(COM_HDUPLEX) == false) { printf("Init COM3 fail\n"); return 1; } com3_SetFormat(COM_BYTESIZE8, COM_STOPBIT1, COM_NOPARITY); com3_SetBaud(COMBAUD_115200BPS); while((c = _getch()) != 27) { switch(c) { case 'a': case 'A': num1 += 0x05; break; case 'z': case 'Z': num1 -= 0x05; break; case 's': case 'S': num2 += 0x05; break; case 'x': case 'X': num2 -= 0x05; break; default: break; } switch(c) { case 'a': case 'A': case 'z': case 'Z': if(num1 < 0) num1 = 0x0000; if(num1 > 0x3ff) num1 = 0x3ff; cmd1[7] = (unsigned char) ((num1 >> 8) & 0xff); cmd1[6] = num1 & 0xff; cmd1[10] = ~(cmd1[2] + cmd1[3] + cmd1[4] + cmd1[5] + cmd1[6] + cmd1[7] + cmd1[8] + cmd1[9]); com3_ServoTRX(cmd1, 11, buf, 6); break; case 's': case 'S': case 'x': case 'X': if(num2 < 0) num2 = 0x0000; if(num2 > 0x3ff) num2 = 0x3ff; cmd2[7] = (unsigned char) ((num2 >> 8) & 0xff); cmd2[6] = num2 & 0xff; cmd2[10] = ~(cmd2[2] + cmd2[3] + cmd2[4] + cmd2[5] + cmd2[6] + cmd2[7] + cmd2[8] + cmd2[9]); com3_ServoTRX(cmd2, 11, buf, 6); break; default: cmd1[10] = ~(cmd1[2] + cmd1[3] + cmd1[4] + cmd1[5] + cmd1[6] + cmd1[7] + cmd1[8] + cmd1[9]); cmd2[10] = ~(cmd2[2] + cmd2[3] + cmd2[4] + cmd2[5] + cmd2[6] + cmd2[7] + cmd2[8] + cmd2[9]); com3_ServoTRX(cmd1, 11, buf, 6); com3_ServoTRX(cmd2, 11, buf, 6); break; } } com3_Close(); return 0; }
0 留言:
張貼留言