⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 siocfg.cpp

📁 关于ETR100的设计
💻 CPP
字号:
#include <stdio.h>
#include <string.h>
#include "rs232.h"
#include "siocfg.h"

SIOCFG Siocfg;

SIOCFG::SIOCFG( )
{
   InbufLen = 0;
   Inbuf[0] = '\0';
   Outbuf[0] = '\0';
}

// setup rs232 link
// return = -12: timeout
int SIOCFG::Link( long timeout )
{
   long l1, l2;
   int  i1;

   l1 = (timeout / 55l) + 1;
   for( l2=0; l2<l1; l2++ )
      {
      i1 = GetInputData( );
      if( i1 != -1 ) break;
      delay( 1 );
      }

   if( l2 >= l1 ) return -12;

   // delay 100ms to clear receive buffer
   for( l1=0; l1<100l; l1++ )
      {
      for( ; ; )
	 {
	 i1 = GetInputData( );
	 if( i1 != -1 ) continue;
	 break;
	 }
      delay( 1 );
      }

   return 0;
}

int SIOCFG::ShowMessage( char* pMssg )
{
   int i, len;

   sprintf( Outbuf, "\r\n   |->%s", pMssg );
   len = strlen( Outbuf );
   for( i=0; i<len; i++ )  PutOutputData( Outbuf[i] );
   StartSend( );

   return 0;
}

int SIOCFG::ShowHelpMessage( )
{
   int i, len;

   strcpy( Outbuf, "\r\n\r\n      Emtronix Inc. Copyright 2003 V1.01" );
   len = strlen( Outbuf );
   for( i=0; i<len; i++ )  PutOutputData( Outbuf[i] );
   StartSend( );

   strcpy( Outbuf, "\r\n      Help or ?: get help" );
   len = strlen( Outbuf );
   for( i=0; i<len; i++ )  PutOutputData( Outbuf[i] );
   StartSend( );

   strcpy( Outbuf, "\r\n      Date?: get current date" );
   len = strlen( Outbuf );
   for( i=0; i<len; i++ )  PutOutputData( Outbuf[i] );
   StartSend( );

   strcpy( Outbuf, "\r\n      Time?: get current time" );
   len = strlen( Outbuf );
   for( i=0; i<len; i++ )  PutOutputData( Outbuf[i] );
   StartSend( );

   strcpy( Outbuf, "\r\n      Date=yyyy-mm-dd: set current date" );
   len = strlen( Outbuf );
   for( i=0; i<len; i++ )  PutOutputData( Outbuf[i] );
   StartSend( );

   strcpy( Outbuf, "\r\n      Time=hh:mm:ss: set current time" );
   len = strlen( Outbuf );
   for( i=0; i<len; i++ )  PutOutputData( Outbuf[i] );
   StartSend( );

   strcpy( Outbuf, "\r\n\r\n   |->" );
   len = strlen( Outbuf );
   for( i=0; i<len; i++ )  PutOutputData( Outbuf[i] );
   StartSend( );
   return 0;
}

int SIOCFG::ShowPrompt( )
{
   int i, len;

   strcpy( Outbuf, "\r\n   |->" );
   len = strlen( Outbuf );
   for( i=0; i<len; i++ )  PutOutputData( Outbuf[i] );
   StartSend( );

   return 0;
}

CMD_SIOCFG SIOCFG::GetCmd( void* pPar )
{
   int  i1, len;
   char CmdStr[10];

   InbufLen = 0;
   for( ; ; )
      {
      i1 = GetInputData( );
      if( i1 == -1 ) continue;
      Inbuf[InbufLen] = (char)i1;
      InbufLen++;
      if( InbufLen >= sizeof(Inbuf) )
	 {
	 return Cmd_NOP;
	 }

      if( (char)i1 == '\n' ) break;
      }
   Inbuf[InbufLen] = '\0';

   // parse commands
   for( i1=0; i1<InbufLen; i1++ )
      {
      CmdStr[i1] = Inbuf[i1];
      if( (CmdStr[i1] == '\r') )
	 {
	 CmdStr[i1] = '\0';
	 break;
	 }
      if( CmdStr[i1] == '=' )
	 {
	 CmdStr[i1+1] = '\0';
	 strcpy( (char*)pPar, &Inbuf[i1+1] );
	 break;
	 }
      }

   if( !strcmp( CmdStr, "Help" ) )   return Cmd_Help;
   if( !strcmp( CmdStr, "?" ) )      return Cmd_Help;
   if( !strcmp( CmdStr, "Date?" ) )  return Cmd_GetDate;
   if( !strcmp( CmdStr, "Time?" ) )  return Cmd_GetTime;
   if( !strcmp( CmdStr, "Date=" ) )  return Cmd_SetDate;
   if( !strcmp( CmdStr, "Time=" ) )  return Cmd_SetTime;

   return Cmd_NOP;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -