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

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

?? comcommand.cpp

?? OMB COMMON CLASSES 源代碼
?? CPP
字號:
/*==============================================================================
                       OMB COMMON CLASSES IMPLEMENTATION

SERVICES:
  Provides Serial I/O Devices Communication functions.
   
DESCRIPTION:
  Implement Serial I/O read/write in (RAW|CR) mode. The class is: ComCommand.
  (1) Write data to Serial I/O by using WritePrompt function.
  (2) Read data from Serial I/O by using ReadCommand function.
  (3) Wait keyboard hit event by using WaitKbHit function.

INITIALIZATION AND SEQUENCING REQUIREMENTS:
  ComCommand::BindDev() must be called before other calls.

AUTHOR INFORMATION:
  Feng.Tie, tiefeng@mail.eastcomtd.com. Mobile: +86 10 13701013761.

Copyright (c) 2003 EASTCOMM Inc.  All Rights Reserved.
==============================================================================*/

//==============================================================================
//                    Includes and Variable Definitions
//==============================================================================

//==============================================================================
// Include Files 
//==============================================================================

#include <stdLib.h>
#include <inetLib.h>
#include <ioLib.h>
#include <tickLib.h>
#include "comcommand.h"

//------------------------------------------------------------------------------
// Constant / Defines
//------------------------------------------------------------------------------

/*==============================================================================
FUNCTION:   ComCommand::ComCommand

DESCRIPTION:
  Constructor of the class: ComCommand.
==============================================================================*/

ComCommand::ComCommand()
{
	mComHandle = ERROR ;
}

/*==============================================================================
FUNCTION:   ComCommand::~ComCommand

DESCRIPTION:
  Destructor of the class: ComCommand.
==============================================================================*/

ComCommand::~ComCommand()
{
	UnbindDev() ;
}

/*==============================================================================
FUNCTION:   ComCommand::BindDev

DESCRIPTION:
  Bind the class to a Serial I/O Device.
==============================================================================*/

STATUS ComCommand::BindDev(const char * devName)
{
	mComHandle = open(devName,O_RDWR,0) ;
	
	if ( ERROR == mComHandle )
	{
		return ERROR ;
	}
	return ioctl(mComHandle,FIOSETOPTIONS,OPT_RAW|OPT_CRMOD) ;
}

/*==============================================================================
FUNCTION:   ComCommand::UnbindDev

DESCRIPTION:
  Unbind the class from a Serial I/O Device.
==============================================================================*/

STATUS ComCommand::UnbindDev()
{
	if ( ERROR!=mComHandle )
	{
		close(mComHandle) ;
		mComHandle = ERROR ;
		return OK ;
	}
	else return ERROR ;
}

/*==============================================================================
FUNCTION:   ComCommand::WaitKbHit

DESCRIPTION:
  Waiting keyboard events in specified timeout(in seconds).
==============================================================================*/

STATUS ComCommand::WaitKbHit(const char * prompt,int timeout)
{
	static char recv_buffer[mMaxCommandChars] ;
	static char prompt_buffer[mMaxPromptChars] ;
	unsigned long start_time = tickGet() ;
	int bytes_read = 0 ;
	int show = timeout ;
	int showed = timeout ;
	char buf[16] ;

	WritePrompt(prompt) ; // Writing user prompts
	sprintf(buf,"\r\n%2d",timeout) ;
	WritePrompt(buf) ; // Writing time

	FOREVER // Checking timeout and write time to com port
	{
		show = timeout - (tickGet()-start_time)/60 ;
		if ( showed!=show )
		{
			sprintf(buf,"%2d",show) ;
			WritePrompt("\b\b") ;
			WritePrompt(buf) ;
			showed -= 1 ;
		}
		ioctl(mComHandle,FIONREAD,(int)&bytes_read) ;
		if ( bytes_read > 0 ) break ;
		if ( tickGet() - start_time > 60*timeout ) break ;
	}
	WritePrompt("\r\n") ; // Start a new line
	if ( 0 == bytes_read )
	{
		return ERROR ;
	}
	else // Receive the data and ignore it.
	{
		read(mComHandle, recv_buffer, 1) ;
		return OK ;
	}
}

/*==============================================================================
FUNCTION:   ComCommand::WritePrompt

DESCRIPTION:
  Write a prompt to specified Serial I/O Device.
==============================================================================*/

STATUS ComCommand::WritePrompt(const char * prompt)
{
	if ( strlen(prompt)>=mMaxPromptChars )
	{
		return ERROR ;
	}
	if ( ERROR == mComHandle )
	{
		return ERROR ;
	}
	write(mComHandle,(char *)prompt,strlen(prompt)) ;
	return OK ;
}

/*==============================================================================
FUNCTION:   ComCommand::ReadCommand

DESCRIPTION:
  Read a command from specified Serial I/O Device.
==============================================================================*/

STATUS ComCommand::ReadCommand(char * command,int len)
{
	int offset = 0 ;
	char buf[2] = { 0 } ;
	int echo_chars = 0 ; // Remember echo char counts
	int back_chars = 0 ; // Remember backspace char counts

	if ( len <= 0 ) return ERROR ;

	FOREVER // Receiving data from Serial I/O Device.
	{
		if ( offset == len ) return ERROR ;
		if ( offset >= mMaxCommandChars ) return ERROR ;
		int ret = read(mComHandle,command+offset,1) ;
		if ( ERROR == ret )
		{
			return ERROR ; // Can't read data
		}
		*buf = *(command+offset) ;
		switch ( *(buf) )
		{
		case '\n':
			WritePrompt("\r\n") ; // Write back the CR
			*(command + offset) = 0x00 ;
			return OK ;
		case '\b':
			if ( back_chars<echo_chars )
			{
				WritePrompt("\b \b") ;
				back_chars += 1 ;
				offset -= 2 ; // A '\b', a char
			}
			else offset -= 1 ; // Ignore the backspace
			break ;
		default:
			WritePrompt(buf) ; // Echo service
			echo_chars += 1 ;
		}
		offset += ret ;
	}
	
	return ERROR ; // Uselessness. Avoid warning.
}

// End of the file.

/*==============================================================================
                             Edit History for File
VERSION 1.0:
  2003-03-25    Initial version. (modified by tief)
==============================================================================*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
a在线播放不卡| 亚洲成人资源在线| 日韩女优制服丝袜电影| 高清国产午夜精品久久久久久| 国产精品久久久久久久久免费樱桃| 国产成人av一区二区三区在线| 亚洲自拍另类综合| 国产亚洲精品中文字幕| 在线一区二区三区四区五区 | 国产麻豆精品一区二区| xf在线a精品一区二区视频网站| 国产成人丝袜美腿| 亚洲不卡一区二区三区| 久久久蜜桃精品| 亚洲午夜在线电影| 精品理论电影在线| 在线视频一区二区免费| 激情六月婷婷久久| 丝袜美腿亚洲综合| 中文字幕一区二区三| 日韩欧美一区二区不卡| 欧美三级日韩在线| 色婷婷av一区二区三区大白胸| 亚洲精品视频免费观看| 一区二区久久久久久| 欧洲一区二区av| 中文字幕中文在线不卡住| 51久久夜色精品国产麻豆| 精品国产伦一区二区三区观看方式 | 中文字幕亚洲欧美在线不卡| 中文字幕第一区| 国产午夜精品在线观看| 欧美高清在线视频| 亚洲理论在线观看| 日韩中文欧美在线| 国产一区高清在线| 国产精品亚洲一区二区三区在线| 国产一区二区三区在线观看免费视频| 一卡二卡欧美日韩| ...av二区三区久久精品| 国产精品久久久久久久午夜片| 国产午夜精品在线观看| 91网上在线视频| 午夜久久久影院| 亚洲国产精品一区二区www| 日日夜夜精品视频免费| 国产精品综合二区| 福利一区在线观看| 在线免费观看日本一区| 91精品国产入口| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 成人综合婷婷国产精品久久免费| 国产精品一级片| 亚洲成av人片在线| 国产精品白丝在线| 亚洲精品免费在线观看| 亚洲人成在线观看一区二区| 日本午夜一区二区| 欧美成人激情免费网| 亚洲精品中文在线| 成人欧美一区二区三区在线播放| 性做久久久久久免费观看| 精品一区免费av| 91亚洲男人天堂| 91精品久久久久久蜜臀| √…a在线天堂一区| 首页欧美精品中文字幕| 9i在线看片成人免费| 成人h动漫精品| 欧美色涩在线第一页| 欧美一区二区啪啪| 国产精品久久久久久亚洲毛片| 一区二区三区四区精品在线视频 | 亚洲欧美日本韩国| 狠狠久久亚洲欧美| 欧美老肥妇做.爰bbww| 91偷拍与自偷拍精品| 久久久久久久久蜜桃| 91成人网在线| 麻豆成人综合网| 久久一二三国产| 亚洲综合偷拍欧美一区色| 蜜臀精品久久久久久蜜臀| 国产一区二区伦理片| 在线综合亚洲欧美在线视频| 日本成人在线一区| 日韩精品在线看片z| 91麻豆精品国产自产在线 | 国产美女视频一区| 色国产精品一区在线观看| 国产欧美日韩另类一区| 五月婷婷综合激情| 欧美日韩国产精品自在自线| 欧美—级在线免费片| 久久99精品网久久| 欧美视频一区在线观看| 伊人色综合久久天天| 国产成人8x视频一区二区| 欧美一区二区精品在线| 亚洲一区二区五区| 91日韩一区二区三区| 中文字幕免费一区| 国内精品久久久久影院一蜜桃| 日韩手机在线导航| 午夜精品福利一区二区蜜股av| 欧洲在线/亚洲| 中文字幕一区二区三区四区不卡 | 欧美在线免费观看亚洲| 成人欧美一区二区三区1314 | 久久中文娱乐网| 日韩激情在线观看| 在线电影国产精品| 亚洲第一综合色| 欧美日韩色一区| 亚洲国产精品激情在线观看| 极品销魂美女一区二区三区| www亚洲一区| 久久精品国产秦先生| 26uuu亚洲婷婷狠狠天堂| 热久久久久久久| 精品奇米国产一区二区三区| 天堂va蜜桃一区二区三区 | 日韩三级中文字幕| 亚洲乱码精品一二三四区日韩在线| 99精品视频一区二区三区| 中文字幕综合网| 99re成人精品视频| 亚洲午夜久久久| 一本久久a久久精品亚洲| 亚洲国产日韩精品| 欧美日韩的一区二区| 免费成人美女在线观看| 欧美日韩综合在线免费观看| 天堂影院一区二区| 精品国产精品网麻豆系列 | 波多野结衣在线一区| 亚洲毛片av在线| 欧美三级蜜桃2在线观看| 午夜精品久久久久久久久久| 日韩一区二区三区电影在线观看| 久久99蜜桃精品| 国产精品五月天| aaa欧美大片| 亚洲成人在线观看视频| 日韩一级片在线观看| 国产一区二区精品久久99| 国产精品久久久久久亚洲伦| 91美女在线视频| 秋霞影院一区二区| 久久男人中文字幕资源站| aaa亚洲精品一二三区| 亚洲国产中文字幕在线视频综合| 欧美精品乱码久久久久久| 三级成人在线视频| 久久久国产综合精品女国产盗摄| 94-欧美-setu| 亚洲精品视频免费观看| 日韩午夜精品视频| 懂色av噜噜一区二区三区av| 亚洲国产日韩a在线播放性色| 日韩女优毛片在线| 色94色欧美sute亚洲13| 亚洲在线一区二区三区| 精品免费视频一区二区| 日本道色综合久久| 免费成人在线视频观看| 亚洲精品视频自拍| 欧美男人的天堂一二区| 成人激情av网| 麻豆久久一区二区| 亚洲欧洲av色图| 久久色在线观看| 丰满放荡岳乱妇91ww| 中文字幕欧美一| 日韩欧美中文一区二区| 99在线精品一区二区三区| 国产一区二区三区免费看| 亚洲午夜久久久久中文字幕久| 久久青草国产手机看片福利盒子| 欧美日高清视频| 成人av在线一区二区三区| 久久69国产一区二区蜜臀| 中文字幕一区二区在线播放| 欧美一区二区视频免费观看| 一本久久综合亚洲鲁鲁五月天 | 亚洲第一福利一区| 国产精品久久久久四虎| 久久综合色8888| 欧美性大战xxxxx久久久| 99视频国产精品| 久久91精品久久久久久秒播| 日韩精彩视频在线观看| 日韩欧美一级二级三级久久久| 欧美性视频一区二区三区| 9l国产精品久久久久麻豆| 国产一区欧美日韩| 国内精品久久久久影院一蜜桃| 日精品一区二区三区| 亚洲成人动漫在线观看| 精品国产不卡一区二区三区|