Beispiel #1
0
int YMODEMCLASS::GetSOHChar (void)
{
	int rVal ;
	int c ;

	c = CommGetChar (oiConn) ;
	switch (c)
		{
		case SOH:
		case STX:
			lErrorCount = 0 ;
			return c ;

		case CAN:
			return CAN ;

		case EOT:
			return EOT ;

		default:
			rVal =FT_SUCCESS ;
		}

	if (Status)
		{
		if (lpStatus->transferStop) return FT_LOCALCANCEL ;
    }

	return(rVal);
}
Beispiel #2
0
int YMODEMCLASS::CheckDataBlock (void)
{
	BYTE hiCRC ,loCRC ;
	int  bCRC ;
	BYTE checksum ;
	BOOL checkOK=TRUE ;
  int  rVal = FT_SUCCESS ; 

	if (fCRC)
		{
		hiCRC = CommGetChar (oiConn) ;
    loCRC = CommGetChar (oiConn) ;
		bCRC = CalcCRC16 (lpBuffer, maxblocksize) ;
		if (hiCRC!=HIBYTE(bCRC)||loCRC!=LOBYTE(bCRC))
			checkOK = FALSE ;				
		}
	else
		{
    checksum = CommGetChar (oiConn) ;
		if(checksum!=CheckSum (lpBuffer))
   		checkOK = FALSE ;
		}

	if (checkOK)
		{
		if (dataBlock0)
			rVal = CheckDataBlock0() ;
    else
			{
			fltr_state = WAIT_SOH ;
			WriteToFile () ;
			}
		}
	else
	 {
	 rvDataCount = 0 ;
	 setmem(lpBuffer, maxblocksize, ' ') ;
   CommPutChar (oiConn, NAK) ;
		fltr_state = WAIT_SOH ;
	 }
  return (rVal) ;
}
Beispiel #3
0
void task1(void * pdata )
{

    INT8U  ch;
    INT8U  err;
    static INT8U print_out_buf[60] = {0};
    static INT8U scan_buf[90]= {0};
    static UART_AT_STATE_TypeDef g_uart_at_state = UART_AT_STATE_AT;
    //U10开机信号
    static bool flag_start_u10_sig = true;
    flag_start_u10_sig = true;

    GPIO_WriteHigh(GPIOD,GPIO_PIN_2);//高
    OSTimeDlyHMSM(0,0,4,0 );
    GPIO_WriteLow(GPIOD,GPIO_PIN_2);


    //cszdata=cszdata;
    //UART_Print("AT\r\n");

    //UART_Print("AT12345abcdefghijklmnopqrest\r\n");

    //g_uart_at_state = UART_AT_STATE_AT;
    g_uart_at_state = UART_AT_STATE_INIT2_REP;
    //注意!在最高优先级任务循环前打开定时器中断,以满足在OSStart()前不产生中断的要求。
    //在系统调用OSInit()时会自动创建一个优先级最低的系统任务,创建过程中会调用OS_EXIT_CRITICAL()打开EA。
    //若在InitTimer0()里打开T0中断,则违反了在OSStart()前不产生中断的要求。
    //切记将ET0=1;放在最高优先级任务里,OSStart()将调用OSStartHighRdy()第一个运行最高优先级任务,这样ET0=1总能被第一个执行。
    //ET0=1;

    for (;;)
    {
#if 0
        if(flag_start_u10_sig)//只执行一次 //U10开机信号
        {
            GPIO_WriteHigh(GPIOD,GPIO_PIN_2);//高
            flag_start_u10_sig = false;
            OSTimeDlyHMSM(0,0,4,0 );
            //  GPIO_WriteLow(GPIOD,GPIO_PIN_2);
            //  Delay(0x3ffff);
            GPIO_WriteLow(GPIOD,GPIO_PIN_2);
        }
#endif
#if ONE_FRAME_EN
        //INT8U scan_buf[20]={0};

        //printf("task1 \r\n");
        //UART_Print("AT\r\n");
        //OSTimeDlyHMSM(0,0,0,20);
        // CommPutChar('9', OS_TICKS_PER_SEC);
        //      CommPutChar('\r', OS_TICKS_PER_SEC);
        //      CommPutChar('\n', OS_TICKS_PER_SEC);
        UART_Scan(scan_buf);
#if DEBUG_EN
        if(scan_buf[0] != '\0')
        {
            sprintf(print_out_buf,"YOU SEND: %s\r\n",scan_buf);
            UART_Print(print_out_buf);
            memset(scan_buf,0,60);
        }
#endif

#if 0
        if(strstr((char const *)scan_buf, "abcdef"))
        {
            UART_Print("YOU SEND: abcdef\r\n");

        }
#endif
#if 1

        switch(g_uart_at_state)
        {
        case UART_AT_STATE_INIT2_REP:
            if(strstr((char const *)scan_buf, "+INIT: 2"))
            {
                UART_Print("AT\r\n");
                g_uart_at_state = UART_AT_STATE_AT;
            }
            break;
        case UART_AT_STATE_AT:
            if(strstr((char const *)scan_buf, "OK"))
            {
                UART_Print("ATI\r\n");
                g_uart_at_state = UART_AT_STATE_ATI;
            }

            break;
        case UART_AT_STATE_ATI:
            if(strstr((char const *)scan_buf, "OK"))
            {
                UART_Print("AT+CREG?\r\n");
                g_uart_at_state = UART_AT_STATE_OK;
            }

            break;
        case UART_AT_STATE_OK:
            if(strstr((char const *)scan_buf, "+CREG:"))
            {
                UART_Print("AT+qflst=\"*\"\r\n");
                //g_uart_at_state = UART_AT_STATE_AT;
                g_uart_at_state = UART_AT_STATE_INIT2_REP;
            }
            //g_uart_at_state = UART_AT_STATE_AT;

            break;
        default:
            break;

        }
#endif

        //OSTimeDlyHMSM(0,0,0,20);
#else
        ch  = CommGetChar(0, &err);
        if(ch!=NUL)
        {
            CommPutChar(ch, 0);

        }
        OSTimeDly(2);
#endif
    }

#if 0
    while(1)
    {
#if 0
        printf("task1 ");

        if(g_flag__rx_frame_complete)//串口收到消息,字符串
        {
            g_flag__rx_frame_complete=false;
            //pBuf=UART2_GetData(&len);
            Uart_GetStr( (char *)g_uart_rx_content);
            if(strstr((char const *)g_uart_rx_content,"halt") )
            {
                printf("you send the message is :halt \r\n");
                asm("halt\n");
            }
        }

#endif

        OSTimeDlyHMSM(0,0,0,TIME_DELAY );

    }
#endif
}