亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? picservo.cpp

?? This includes the project using a stereo vision to catch the ball shot from a high pressure air cann
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
//---------------------------------------------------------------------------
#include <stdio.h>

#include "sio_util.h"
#include "nmccom.h"
#include "picservo.h"
//---------------------------------------------------------------------------
extern NMCMOD	mod[]; 		//Array of modules
extern int nummod;
extern HANDLE ComPort;

//---------------------------------------------------------------------------
//Returns pointer to an initialized IOMOD structure
SERVOMOD * ServoNewMod()
{
SERVOMOD *p;

p = new SERVOMOD;
p->pos = 0;
p->ad = 0;
p->vel = 0;
p->aux = 0;
p->home = 0;
p->perror = 0;
p->cmdpos = 0;
p->cmdvel = 0;
p->cmdacc = 0;
p->cmdpwm = 0;

(p->gain).kp = 0;
(p->gain).kd = 0;
(p->gain).ki = 0;
(p->gain).il = 0;
(p->gain).ol = 0;
(p->gain).cl = 0;
(p->gain).el = 0;
(p->gain).sr = 1;
(p->gain).dc = 0;
(p->gain).sm = 1;

p->stoppos = 0;
p->ioctrl = 0;
p->homectrl = 0;
p->movectrl = 0;
p->stopctrl = 0;
p->ph_adv = 0;
p->ph_off = 0;
return p;
}

//---------------------------------------------------------------------------
BOOL ServoGetStat(byte addr)
{
int numbytes, numrcvd;
int i, bytecount;
byte cksum;
byte inbuf[20];
SERVOMOD *p;
char msgstr[80];

p = (SERVOMOD *)(mod[addr].p);  //cast the data pointer to the right type

//Find number of bytes to read:
numbytes = 2;       //start with stat & cksum
if ( (mod[addr].statusitems) & SEND_POS )	numbytes +=4;
if ( (mod[addr].statusitems) & SEND_AD ) 	numbytes +=1;
if ( (mod[addr].statusitems) & SEND_VEL ) 	numbytes +=2;
if ( (mod[addr].statusitems) & SEND_AUX ) 	numbytes +=1;
if ( (mod[addr].statusitems) & SEND_HOME )	numbytes +=4;
if ( (mod[addr].statusitems) & SEND_ID ) 	numbytes +=2;
if ( (mod[addr].statusitems) & SEND_PERROR ) numbytes +=2;
if ( (mod[addr].statusitems) & SEND_NPOINTS ) numbytes +=1;
numrcvd = SioGetChars(ComPort, (char *)inbuf, numbytes);

//Verify enough data was read
if (numrcvd != numbytes)
	{
    sprintf(msgstr,"ServoGetStat (%d) failed to read chars",addr);
    ErrorMsgBox(msgstr);
    return false;
    }

//Verify checksum:
cksum = 0;
for (i=0; i<numbytes-1; i++) cksum = (byte)(cksum + inbuf[i]);
if (cksum != inbuf[numbytes-1])
	{
    sprintf(msgstr,"ServoGetStat(%d): checksum error",addr);
    ErrorMsgBox(msgstr);
    return false;
    }

//Verify command was received intact before updating status data
mod[addr].stat = inbuf[0];
if (mod[addr].stat & CKSUM_ERROR)
	{
    ErrorMsgBox("Command checksum error!");
    return false;
    }

//Finally, fill in status data
bytecount = 1;
if ( (mod[addr].statusitems) & SEND_POS )
	{
	p->pos = *( (long *)(inbuf + bytecount) );
    bytecount +=4;
    }
if ( (mod[addr].statusitems) & SEND_AD )
	{
    p->ad = inbuf[bytecount];
    bytecount +=1;
    }
if ( (mod[addr].statusitems) & SEND_VEL )
	{
	p->vel = *( (short int *)(inbuf + bytecount) );
    bytecount +=2;
    }
if ( (mod[addr].statusitems) & SEND_AUX )
	{
    p->aux = inbuf[bytecount];
    bytecount +=1;
    }
if ( (mod[addr].statusitems) & SEND_HOME )
	{
    p->home = *( (unsigned long *)(inbuf + bytecount) );
    bytecount +=4;
    }
if ( (mod[addr].statusitems) & SEND_ID )
	{
    mod[addr].modtype = inbuf[bytecount];
    mod[addr].modver = inbuf[bytecount+1];
    bytecount +=2;
    }
if ( (mod[addr].statusitems) & SEND_PERROR )
	{
	p->perror = *( (short int *)(inbuf + bytecount) );
    bytecount +=2;
    }
if ( (mod[addr].statusitems) & SEND_NPOINTS )
	{
    p->npoints = inbuf[bytecount];
    //bytecount +=1;
    }

return TRUE;
}
//---------------------------------------------------------------------------
long ServoGetPos(byte addr)
{
SERVOMOD * p;

p = (SERVOMOD *)(mod[addr].p);
return p->pos;
}
//---------------------------------------------------------------------------
byte ServoGetAD(byte addr)
{
SERVOMOD * p;

p = (SERVOMOD *)(mod[addr].p);
return p->ad;
}
//---------------------------------------------------------------------------
short int ServoGetVel(byte addr)
{
SERVOMOD * p;

p = (SERVOMOD *)(mod[addr].p);
return p->vel;
}
//---------------------------------------------------------------------------
byte ServoGetAux(byte addr)
{
SERVOMOD * p;

p = (SERVOMOD *)(mod[addr].p);
return p->aux;
}
//---------------------------------------------------------------------------
long ServoGetHome(byte addr)
{
SERVOMOD * p;

p = (SERVOMOD *)(mod[addr].p);
return p->home;
}
//---------------------------------------------------------------------------
short int ServoGetPError(byte addr)
{
SERVOMOD * p;

p = (SERVOMOD *)(mod[addr].p);
return p->perror;
}
//---------------------------------------------------------------------------
byte ServoGetNPoints(byte addr)
{
SERVOMOD * p;

p = (SERVOMOD *)(mod[addr].p);
return p->npoints;
}
//---------------------------------------------------------------------------
long ServoGetCmdPos(byte addr)
{
SERVOMOD * p;

p = (SERVOMOD *)(mod[addr].p);
return p->cmdpos;
}
//---------------------------------------------------------------------------
long ServoGetCmdVel(byte addr)
{
SERVOMOD * p;

p = (SERVOMOD *)(mod[addr].p);
return p->cmdvel;
}
//---------------------------------------------------------------------------
long ServoGetCmdAcc(byte addr)
{
SERVOMOD * p;

p = (SERVOMOD *)(mod[addr].p);
return p->cmdacc;
}
//---------------------------------------------------------------------------
long ServoGetStopPos(byte addr)
{
SERVOMOD * p;

p = (SERVOMOD *)(mod[addr].p);
return p->stoppos;
}
//---------------------------------------------------------------------------
byte ServoGetCmdPwm(byte addr)
{
SERVOMOD * p;

p = (SERVOMOD *)(mod[addr].p);
return p->cmdpwm;
}
//---------------------------------------------------------------------------
byte ServoGetIoCtrl(byte addr)
{
SERVOMOD * p;

p = (SERVOMOD *)(mod[addr].p);
return p->ioctrl;
}
//---------------------------------------------------------------------------
byte ServoGetHomeCtrl(byte addr)
{
SERVOMOD * p;

p = (SERVOMOD *)(mod[addr].p);
return p->homectrl;
}
//---------------------------------------------------------------------------
byte ServoGetStopCtrl(byte addr)
{
SERVOMOD * p;

p = (SERVOMOD *)(mod[addr].p);
return p->stopctrl;
}
//---------------------------------------------------------------------------
byte ServoGetMoveCtrl(byte addr)
{
SERVOMOD * p;

p = (SERVOMOD *)(mod[addr].p);
return p->movectrl;
}
//---------------------------------------------------------------------------
byte ServoGetPhAdv(byte addr)
{
SERVOMOD * p;

p = (SERVOMOD *)(mod[addr].p);
return p->ph_adv;
}
//---------------------------------------------------------------------------
byte ServoGetPhOff(byte addr)
{
SERVOMOD * p;

p = (SERVOMOD *)(mod[addr].p);
return p->ph_off;
}
//---------------------------------------------------------------------------
void ServoGetGain(byte addr, short int * kp, short int * kd, short int * ki,
				  short int * il, byte * ol, byte * cl, short int * el,
                  byte * sr, byte * dc)
{
SERVOMOD * p;

p = (SERVOMOD *)(mod[addr].p);
*kp = (p->gain).kp;
*kd = (p->gain).kd;
*ki = (p->gain).ki;
*il = (p->gain).il;
*ol = (p->gain).ol;
*cl = (p->gain).cl;
*el = (p->gain).el;
*sr = (p->gain).sr;
*dc = (p->gain).dc;
}
//---------------------------------------------------------------------------
void ServoGetGain2(byte addr, short int * kp, short int * kd, short int * ki,
				  short int * il, byte * ol, byte * cl, short int * el,
                  byte * sr, byte * dc, byte * sm)
{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成av人片在线观看无码| 久久亚洲私人国产精品va媚药| 欧美日韩亚州综合| 日韩一区二区免费在线观看| 2022国产精品视频| 日韩理论片一区二区| 性做久久久久久久免费看| 久久se这里有精品| 99久久久国产精品免费蜜臀| 欧美日韩亚洲综合在线| 久久亚洲影视婷婷| 玉米视频成人免费看| 蜜臀99久久精品久久久久久软件| 国产精品一区二区在线看| 色爱区综合激月婷婷| 欧美成人性战久久| 日韩理论片网站| 麻豆高清免费国产一区| 91视频xxxx| 欧美成人vps| 亚洲免费在线视频一区 二区| 日韩高清一级片| 不卡视频免费播放| 日韩一级免费观看| 综合中文字幕亚洲| 极品少妇一区二区三区精品视频| 91丨九色丨蝌蚪丨老版| 精品精品欲导航| 亚洲一区二区综合| 国产91精品精华液一区二区三区 | 精品久久久三级丝袜| 亚洲天堂精品视频| 精品一区二区日韩| 欧美影片第一页| 国产日韩欧美精品电影三级在线| 五月综合激情日本mⅴ| 成人午夜私人影院| 欧美大片在线观看一区| 亚洲人成网站在线| 国产精品中文字幕日韩精品| 欧美少妇性性性| 成人免费在线视频观看| 久久精品国产999大香线蕉| 在线精品视频免费播放| 中文字幕av一区二区三区免费看| 日韩中文字幕1| 色久优优欧美色久优优| 欧美经典一区二区| 日韩电影一二三区| 欧美日韩亚洲综合在线| 亚洲欧美日韩国产手机在线 | 日韩一区二区免费视频| 亚洲精品乱码久久久久久久久| 国产福利一区二区三区视频| 日韩区在线观看| 天天av天天翘天天综合网| 91麻豆精品在线观看| 国产精品素人一区二区| 国产麻豆精品视频| 精品国产一区久久| 免费成人在线影院| 欧美一区二区成人6969| 亚洲午夜久久久| 91国产福利在线| 夜夜嗨av一区二区三区中文字幕| 成人ar影院免费观看视频| 久久久久久久综合| 国模冰冰炮一区二区| 日韩欧美资源站| 另类小说综合欧美亚洲| 欧美一区二区黄色| 毛片基地黄久久久久久天堂| 69av一区二区三区| 日本麻豆一区二区三区视频| 91精品免费在线观看| 欧美96一区二区免费视频| 欧美精品18+| 免费高清在线视频一区·| 日韩无一区二区| 卡一卡二国产精品| 欧美成人国产一区二区| 国产麻豆一精品一av一免费 | 狠狠色狠狠色综合日日91app| 日韩午夜电影av| 国内一区二区在线| 久久九九99视频| 成人激情午夜影院| 亚洲欧美成人一区二区三区| 色美美综合视频| 亚洲h动漫在线| 日韩亚洲欧美在线| 国产在线国偷精品免费看| 国产视频亚洲色图| 99久久综合国产精品| 亚洲欧美激情视频在线观看一区二区三区| 91丨国产丨九色丨pron| 亚洲一区二区三区中文字幕| 欧美日韩国产综合一区二区| 日本一道高清亚洲日美韩| 精品成人一区二区三区四区| 粉嫩在线一区二区三区视频| 亚洲人成网站精品片在线观看| 在线观看成人小视频| 日韩激情在线观看| 久久久久久久久久久99999| 成人av免费网站| 亚洲一区二区黄色| 欧美大肚乱孕交hd孕妇| 国产99久久久久久免费看农村| 国产精品人成在线观看免费| 欧美在线视频不卡| 国产一区二区三区高清播放| 国产精品第一页第二页第三页| 欧美日韩一区二区三区免费看 | 精品久久久久av影院| 粉嫩久久99精品久久久久久夜| 亚洲欧美区自拍先锋| 日韩欧美一区在线观看| 成人av网站在线观看免费| 亚洲国产你懂的| 久久久久久久久久久久久女国产乱 | 国产aⅴ综合色| 亚洲一区欧美一区| 久久久久99精品一区| 日本伦理一区二区| 国产一区美女在线| 亚洲午夜日本在线观看| 久久亚洲精精品中文字幕早川悠里| www.66久久| 免费观看在线综合| 亚洲欧美一区二区不卡| 精品国产乱码久久久久久1区2区 | 国产午夜精品一区二区三区四区| 色国产综合视频| 国产伦理精品不卡| 亚洲成人1区2区| 国产精品久久免费看| 日韩一区二区视频在线观看| 波多野结衣91| 狠狠色狠狠色综合| 午夜精品久久久久久久久久 | 成人激情图片网| 蜜桃av一区二区| 亚洲精品菠萝久久久久久久| 久久久久国产精品免费免费搜索| 欧美视频精品在线观看| 粉嫩av一区二区三区在线播放| 日本在线不卡视频| 夜夜亚洲天天久久| 国产精品麻豆一区二区| 精品国产三级a在线观看| 在线观看视频一区| 成人的网站免费观看| 经典三级在线一区| 免费观看久久久4p| 亚洲mv大片欧洲mv大片精品| 中文字幕综合网| 欧美国产日韩a欧美在线观看| 欧美一区二区黄色| 欧美色精品在线视频| 99久久久精品| 成人av电影观看| 国产精品一区三区| 久久99久久99| 日本麻豆一区二区三区视频| 亚洲国产裸拍裸体视频在线观看乱了 | 中文字幕亚洲在| 国产午夜精品一区二区三区四区| 欧美mv和日韩mv的网站| 欧美欧美欧美欧美首页| 欧美午夜精品电影| 欧美怡红院视频| 色网站国产精品| 91亚洲国产成人精品一区二区三| 国产伦理精品不卡| 国内精品国产三级国产a久久| 美女脱光内衣内裤视频久久影院| 香蕉久久夜色精品国产使用方法 | 色婷婷精品大视频在线蜜桃视频| 成人综合婷婷国产精品久久蜜臀 | 日韩一级片在线播放| 欧美日韩另类一区| 欧美日韩在线亚洲一区蜜芽| 色老综合老女人久久久| 色综合久久综合网欧美综合网| 99精品在线免费| 色综合色狠狠综合色| 色妹子一区二区| 欧美亚洲禁片免费| 欧美日韩高清一区二区三区| 欧美日韩国产首页| 7777精品伊人久久久大香线蕉完整版| 欧美日韩国产一区| 日韩一区二区免费电影| 精品少妇一区二区三区日产乱码 | 国产精品亚洲午夜一区二区三区| 国产一区二区三区黄视频| 福利一区福利二区| av激情成人网| 欧美亚洲综合另类|