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

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

?? nmccom.cpp

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

#include "nmccom.h"
#include "picio.h"
#include "picservo.h"
#include "picstep.h"
//#include "mainform.h"
#include "sio_util.h"
//---------------------------------------------------------------------------
//Global data

 NMCMOD mod[MAXNUMMOD]; 	//Array of modules
 int nummod = 0;				//start off with no modules
char cmdstr[20];			//use global command string
 HANDLE ComPort;
 int SioError = 0;
 int IOBusy = false;
unsigned int BaudRate;

//---------------------------------------------------------------------------
ADCMOD * AdcNewMod()
{
return NULL;
}

//---------------------------------------------------------------------------
//Reset all controllers with group address 'addr' (should include all modules)
BOOL NmcHardReset(byte addr)
{
int i;
char cstr[5];

//Send string of 0's to flush input buffers
cstr[0] = 0;
for (i=0; i<20; i++) SioPutChars(ComPort,cstr, 1);

//Send out reset command string
cstr[0] = 0xAA;			//Header
cstr[1] = addr;
cstr[2] = HARD_RESET;
cstr[3] = (byte)(cstr[1] + cstr[2]);  //checksum
SioPutChars(ComPort, cstr, 4);//send reset

Sleep(100);		//wait for reset to execute

for (i=0; i<nummod; i++) delete mod[i].p;  //delete and prev. declared modules
nummod = 0;
SioError = 0;	//reset the number of errors to 0

SioChangeBaud(ComPort, 19200);	//Reset the baud rate to the default

SioClrInbuf(ComPort);   //clear out any random crap left in buffer

return TRUE;
}

//---------------------------------------------------------------------------
//Change the baud rate of all controllers with group address 'groupaddr'
//(should include all modules) and also changes host's baud rate.
//There should be no group leader for 'addr'
BOOL NmcChangeBaud(byte groupaddr, unsigned int baudrate)
{
char cstr[6];

cstr[0] = 0xAA;			//Header
cstr[1] = groupaddr;
cstr[2] = 0x10 | SET_BAUD;
switch (baudrate) {
	case 19200:		cstr[3] = PB19200; break;
	case 57600:		cstr[3] = PB57600; break;
	case 115200:	cstr[3] = PB115200; break;
	case 230400:	cstr[3] = PB230400; break;
    default:	ErrorMsgBox("Baud rate not supported - using default of 19200");
    			cstr[3] = PB19200;
                baudrate = 19200;
    }
cstr[4] = (byte)(cstr[1] + cstr[2] + cstr[3]);  //checksum
SioPutChars(ComPort, cstr, 5);//send command

Sleep(100);		//Wait for command to execute

SioChangeBaud(ComPort, baudrate);	//Reset the baud rate to the default

SioClrInbuf(ComPort);   //clear out any random crap left in buffer
Sleep(100);

BaudRate = baudrate;
return true;
}

//---------------------------------------------------------------------------
//Initialize misc network variables
void InitVars(void)
{
int i;

mod[0].modtype = 0;   //Default to a known module type for module 0
mod[0].modver = 0;
mod[0].stat = 0;
mod[0].statusitems = 0;
mod[0].groupaddr = 0xFF;
mod[0].groupleader = false;

for (i=1; i<MAXNUMMOD; i++)
	{
	mod[i].modtype = 0xFF;
	mod[i].modver = 0;
    mod[i].stat = 0;
    mod[i].statusitems = 0;
    mod[i].groupaddr = 0xFF;
    mod[i].groupleader = false;
    }
}
//---------------------------------------------------------------------------
//Initialize the network of controllers with sequential addresses starting
//at 0.  Retunrs the number of controllers found.
int NmcInit(char *portname, unsigned int baudrate)
{
DWORD numread;
byte addr;
char cstr[20];
SERVOMOD *p;
//char mess[40];

BaudRate = baudrate;

InitVars();

ComPort = SioOpen(portname, 19200);    //Open with default rate of 19200
if (ComPort == INVALID_HANDLE_VALUE) return 0;

NmcHardReset(0xFF);
NmcHardReset(0xFF);

addr = 1;
while (1)
	{
    //First set the address to a unique value:
    cstr[0] = 0xAA;		//Header
    cstr[1] = 0;  		//Send to default address of 0
    cstr[2] = 0x20 | SET_ADDR;
    cstr[3] = addr;  	//Set new address sequentially
    cstr[4] = 0xFF;		//Set group address to 0xFF
    cstr[5] = (byte)(cstr[1] + cstr[2] + cstr[3] + cstr[4]);  //checksum
    SioPutChars(ComPort, cstr, 6);  //Send command

    numread = SioGetChars(ComPort, cstr, 2);  //get back status, cksum
    if (numread!=2) break;	//if no response, punt out of loop
    if (cstr[0] != cstr[1])
    	{
        ErrorMsgBox("Status checksum error - please reset the Network");
        SioClose(ComPort);
        return(0);
        }

    //Read the device type
    cstr[0] = 0xAA;		//Header
    cstr[1] = addr;  		//Send to addr
    cstr[2] = 0x10 | READ_STAT;
    cstr[3] = SEND_ID;  //send ID only
    cstr[4] = (byte)(cstr[1] + cstr[2] + cstr[3]);  //checksum
    SioPutChars(ComPort, cstr, 5);  //Send command

    numread = SioGetChars(ComPort, cstr, 4);  //get back stat, type, ver, cksum
    if (numread!=4)
    	{
        ErrorMsgBox("Could not read device type");
        SioClose(ComPort);
        return(0);
        }
    mod[addr].stat = cstr[0];
    mod[addr].modtype = cstr[1];
    mod[addr].modver = cstr[2];
    mod[addr].statusitems = 0;
    mod[addr].groupaddr = 0xFF;
    mod[addr].groupleader = false;
    switch (mod[addr].modtype)
    	{
        case SERVOMODTYPE: 	mod[addr].p = ServoNewMod();
        					//fix for change in I/O CTRL command
        					if ((mod[addr].modver<10) || (mod[addr].modver>20))
                              {
        					  p = (SERVOMOD *)(mod[addr].p);
                              p->ioctrl = IO1_IN | IO2_IN;
                              }
        					break;
        case ADCMODTYPE: 	mod[addr].p = AdcNewMod(); break;
        case IOMODTYPE: 	mod[addr].p = IoNewMod(); break;
        case STEPMODTYPE: 	mod[addr].p = StepNewMod(); break;
        }

    addr++;		//increment the address
    }

nummod = addr-1;

if (nummod > 0)
	{
    NmcChangeBaud(0xFF, baudrate);
	//if (nummod>1) sprintf(mess,"%d Modules found", nummod);
    //else sprintf(mess,"%d Module found", nummod);
	//ErrorMsgBox(mess);
    }
else
	{
    //ErrorMsgBox("No modules found on the network.\nPlease check power and connections.");
    SioClose(ComPort);
    }

return(nummod);	//Return number of modules
}
//---------------------------------------------------------------------------
BOOL AdcGetStat(byte addr)
{
return false;
}
//---------------------------------------------------------------------------
//Sends a command to addr and shoves the returned status data in the
//structure for module address stataddr.  If stataddr = 0, the command
//is taken as a group command with no group leader (no status returned).
//n is the number of auxilliary data bytes.
BOOL NmcSendCmd(byte addr, byte cmd, char *datastr, byte n, byte stataddr)
{
byte cksum;
char mess[40];
byte outstr[20];
int i;
BOOL iostat;

//If too many SIO errors, punt
if (SioError > MAXSIOERROR) return(false);

IOBusy = true;

//Check if data is to be returned from to a known module type
if ( !( ( mod[stataddr].modtype==SERVOMODTYPE) ||
        ( mod[stataddr].modtype==ADCMODTYPE) ||
        ( mod[stataddr].modtype==IOMODTYPE)  ||
        ( mod[stataddr].modtype==STEPMODTYPE) ) )
	{
    sprintf(mess,"Module type %d not supported",mod[stataddr].modtype);
    ErrorMsgBox(mess);
    return (false);
    }

//Calculate the adjust command byte, calculate checksum and send the command
cksum = 0;
outstr[0] = 0xAA;	//start with header byte
outstr[1] = addr;	//add on address byte
cksum += outstr[1];
outstr[2] = (byte)(((n<<4) & 0xF0) | cmd);
cksum += outstr[2];
for (i=0; i<n; i++)
	{
    outstr[i+3] = datastr[i];
	cksum += outstr[i+3];
    }
outstr[n+3] = cksum;

SioClrInbuf(ComPort);  //Get rid of any old input chars
SioPutChars(ComPort, (char *)outstr, n+4); //Send the command string

if (stataddr == 0)		//If a group command w/ no leader, add delay then exit
	{
    Sleep(60);
    IOBusy = false;
	return true;
    }

switch (mod[stataddr].modtype) {
	case SERVOMODTYPE:	iostat = ServoGetStat(stataddr); break;
	case ADCMODTYPE:	iostat = AdcGetStat(stataddr); break;
	case IOMODTYPE:		iostat = IoGetStat(stataddr); break;
	case STEPMODTYPE:	iostat = StepGetStat(stataddr); break;
    }

if (iostat == false)
	{
    SioError++;
    FixSioError(stataddr);
    }
else SioError = 0;

IOBusy = false;
return iostat;
}

//---------------------------------------------------------------------------
//Attempt to re-synch communications
void FixSioError(byte addr)
{
int i;
char teststr[2];

//If too many errors - prompt to reset
if (SioError >= MAXSIOERROR)
	{
    ErrorMsgBox("Multiple communication errors - please the Network");
    return;
    }

//Otherwise, send out a null string to re-synch
teststr[0] = 0;
for (i=0; i<30; i++) SioPutChars(ComPort, teststr, 1);
Sleep(100);
SioClrInbuf(ComPort);
}
//---------------------------------------------------------------------------
BOOL NmcSetGroupAddr(byte addr, byte groupaddr, BOOL leader)
{
char cmdstr[2];

if (!(groupaddr & 0x80)) return false;  //punt if not valid group address

cmdstr[0] = addr;
cmdstr[1] = groupaddr;
if (leader) cmdstr[1] &= 0x7F;  //clear upper bit if a group leader
mod[addr].groupaddr = groupaddr;
mod[addr].groupleader = leader;
return NmcSendCmd(addr, SET_ADDR, cmdstr, 2, addr);
}
//---------------------------------------------------------------------------
BOOL NmcSynchOutput(byte groupaddr, byte leaderaddr)
//Synchronous output command issued to groupaddr.  Status data goes to
//the leaderaddr.  If no leader, use leaderaddr = 0.
{
return NmcSendCmd(groupaddr, SYNCH_OUT, NULL, 0, leaderaddr);
}
//---------------------------------------------------------------------------
//Synchronous input command issued to groupaddr.  Status data goes to
//the leaderaddr.  If no leader, use leaderaddr = 0.
BOOL NmcSynchInput(byte groupaddr, byte leaderaddr)
{
return NmcSendCmd(groupaddr, SYNCH_INPUT, NULL, 0, leaderaddr);
}
//---------------------------------------------------------------------------
BOOL NmcNoOp(byte addr)
{
return NmcSendCmd(addr, NOP, NULL, 0, addr);
}
//---------------------------------------------------------------------------
BOOL NmcReadStatus(byte addr, byte statusitems)
{
char cmdstr[2];
byte oldstat;
BOOL retval;

cmdstr[0] = statusitems;
oldstat = mod[addr].statusitems;
mod[addr].statusitems = statusitems;
retval = NmcSendCmd(addr, READ_STAT, cmdstr, 1, addr);
mod[addr].statusitems = oldstat;

return retval;
}
//---------------------------------------------------------------------------
BOOL NmcDefineStatus(byte addr, byte statusitems)
{
char cmdstr[2];

cmdstr[0] = statusitems;
mod[addr].statusitems = statusitems;
return NmcSendCmd(addr, DEF_STAT, cmdstr, 1, addr);
}
//---------------------------------------------------------------------------
byte NmcGetStat(byte addr)
{
return mod[addr].stat;
}
//---------------------------------------------------------------------------
byte NmcGetStatItems(byte addr)
{
return mod[addr].statusitems;
}
//---------------------------------------------------------------------------
byte NmcGetModType(byte addr)
{
return mod[addr].modtype;
}
//---------------------------------------------------------------------------
byte NmcGetModVer(byte addr)
{
return mod[addr].modver;
}
//---------------------------------------------------------------------------
byte NmcGetGroupAddr(byte addr)
{
return mod[addr].groupaddr;
}
//---------------------------------------------------------------------------
BOOL NmcGroupLeader(byte addr)
{
return mod[addr].groupleader;
}
//---------------------------------------------------------------------------
void NmcShutdown(void)
{
//int retval;

//retval = MessageBox(NULL, "Do you wish to reset the NMC network?",
//                                 "",MB_YESNO | MB_DEFBUTTON1 | MB_TASKMODAL);
//
//if (retval == IDYES)
//	{
//	if (ComPort!=INVALID_HANDLE_VALUE && ComPort!=NULL) NmcHardReset(0xFF);
//    }
//else
//	{
//    if (BaudRate != 19200)
//      	{
//      	ErrorMsgBox("Returning NMC Baud rate to 19200 (default)");
//      	NmcChangeBaud(0xFF, 19200);
//      	}
//    }
if (ComPort!=INVALID_HANDLE_VALUE && ComPort!=NULL) NmcHardReset(0xFF);

nummod = 0;    
SioClose(ComPort);
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久久久图文区| 亚洲国产精品激情在线观看| 欧美精品高清视频| 精品sm在线观看| 亚洲国产精品国自产拍av| 亚洲欧美成人一区二区三区| 午夜成人免费电影| 国产美女精品在线| 欧美日韩亚洲丝袜制服| 久久久精品国产免大香伊| 亚洲综合区在线| 国产成人av在线影院| 欧美久久久久久久久久| 欧美国产97人人爽人人喊| 日韩影院免费视频| 99久久久久免费精品国产| 欧美大片一区二区三区| 一个色妞综合视频在线观看| 国产a区久久久| 欧美一区二区精品| 又紧又大又爽精品一区二区| 国产美女在线观看一区| 91精品在线麻豆| 亚洲色大成网站www久久九九| 久久99热这里只有精品| 欧美色网一区二区| 亚洲欧洲国产专区| 国产精品亚洲一区二区三区妖精 | 福利电影一区二区| 欧美日韩久久一区二区| 中文字幕一区二区在线观看| 黄网站免费久久| 91精品国产综合久久精品图片| 亚洲欧美视频一区| av午夜精品一区二区三区| 精品国产电影一区二区| 免费欧美日韩国产三级电影| 欧美日韩精品一区二区在线播放| 日韩美女精品在线| 本田岬高潮一区二区三区| 久久久久国产精品麻豆| 国内精品国产成人| 日韩精品一区二区三区在线播放| 婷婷开心久久网| 欧美日韩亚洲综合在线| 亚洲成av人片一区二区梦乃| 在线国产电影不卡| 亚洲女人的天堂| 91网站最新网址| 亚洲丝袜美腿综合| 99国产一区二区三精品乱码| 国产精品不卡在线| 99视频在线观看一区三区| 国产精品麻豆一区二区| 99国产精品久| 亚洲免费观看在线观看| 色婷婷精品大在线视频| 一区二区三区色| 在线视频一区二区免费| 午夜婷婷国产麻豆精品| 91精品国产91久久久久久最新毛片| 日韩成人dvd| 欧美成人激情免费网| 国内精品久久久久影院一蜜桃| 精品久久久久久久人人人人传媒| 国产一区二三区好的| 国产精品久久久爽爽爽麻豆色哟哟| 99视频精品全部免费在线| 亚洲美女少妇撒尿| 欧美久久一二区| 国产真实乱偷精品视频免| 国产精品乱人伦中文| 欧洲生活片亚洲生活在线观看| 亚洲成人黄色小说| 欧美精品一区二区三区蜜臀 | 国产福利精品一区| 国产精品久久久久影视| 欧洲一区二区av| 男男gaygay亚洲| 国产欧美精品国产国产专区| 色综合色狠狠天天综合色| 亚洲成人资源在线| 久久综合九色综合97婷婷| 成人黄色av电影| 亚洲成人免费视| 久久久综合网站| 91久久一区二区| 免费观看日韩av| 国产精品三级电影| 在线不卡欧美精品一区二区三区| 韩国毛片一区二区三区| 亚洲精品视频在线看| 日韩免费观看高清完整版 | 日韩一区二区三区视频在线| 国产精品一区二区三区四区| 亚洲精品视频免费看| 日韩久久免费av| 91久久精品一区二区三| 国内国产精品久久| 亚洲自拍偷拍综合| 国产欧美精品在线观看| 欧美精品日韩综合在线| 国产大陆a不卡| 天堂va蜜桃一区二区三区| 欧美国产精品久久| 欧美一区二区视频在线观看2022| 成人性生交大片免费看视频在线 | 国产精品99久| 亚洲 欧美综合在线网络| 国产欧美一二三区| 777午夜精品免费视频| 91在线免费看| 国产精品91一区二区| 午夜亚洲福利老司机| 亚洲日本乱码在线观看| 久久久国产精品不卡| 制服丝袜成人动漫| 在线观看欧美精品| 成人三级在线视频| 国产真实乱对白精彩久久| 日韩中文欧美在线| 亚洲一区在线播放| 亚洲视频1区2区| 中文字幕第一区第二区| 欧美变态tickle挠乳网站| 欧美群妇大交群中文字幕| 在线一区二区三区四区五区| av成人老司机| 粉嫩aⅴ一区二区三区四区五区| 麻豆精品一区二区av白丝在线| 亚洲高清在线精品| 亚洲欧美另类图片小说| 国产精品色婷婷久久58| 日本一区二区免费在线| 久久精品视频一区二区三区| 日韩欧美国产麻豆| 精品区一区二区| 日韩欧美在线一区二区三区| 91精品蜜臀在线一区尤物| 在线不卡一区二区| 欧美一区二区在线观看| 日韩欧美不卡一区| 精品对白一区国产伦| 久久久久国产精品麻豆| 久久精品日产第一区二区三区高清版| 欧美成人猛片aaaaaaa| 久久综合久久久久88| 亚洲精品一区二区三区99| 久久久国产精品不卡| 国产精品视频麻豆| 国产精品传媒在线| 亚洲黄色小视频| 午夜免费欧美电影| 蜜臀va亚洲va欧美va天堂| 久色婷婷小香蕉久久| 国产精品69久久久久水密桃| 成人h动漫精品| 在线免费观看日本欧美| 欧美日韩高清影院| 欧美va亚洲va在线观看蝴蝶网| 精品福利一二区| 国产精品美女久久久久久久| 夜夜嗨av一区二区三区中文字幕 | 国产成人精品午夜视频免费| 成年人国产精品| 在线观看一区日韩| 日韩亚洲国产中文字幕欧美| 久久久久国产精品免费免费搜索| 中文字幕在线不卡一区| 亚洲国产综合视频在线观看| 久久成人麻豆午夜电影| 成人精品电影在线观看| 欧美在线观看一区| 精品欧美久久久| 亚洲色图欧美激情| 免费av成人在线| 99久久久国产精品| 欧美一区二区黄| 中文字幕一区二区三区在线播放| 亚洲国产精品精华液网站| 久久精品国产**网站演员| 粗大黑人巨茎大战欧美成人| 欧美美女视频在线观看| 久久久噜噜噜久噜久久综合| 亚洲黄色录像片| 国产精品一区不卡| 欧美色国产精品| 国产日韩一级二级三级| 亚洲第四色夜色| 成人av免费在线播放| 在线不卡免费av| 椎名由奈av一区二区三区| 久久99国产精品尤物| 在线免费不卡电影| 国产欧美日韩另类视频免费观看| 偷拍日韩校园综合在线| 成av人片一区二区| 久久综合久久综合亚洲| 午夜精品一区在线观看| 成人的网站免费观看|