Пример #1
0
void WebTask::Terminate( void )
{
	//	Delete Session
	if ( hSession != NULL ) {
		InternetCloseHandle( hSession );
		hSession = NULL;
	}
	errstr[0] = 0;
	req_url[0] = 0;

	//	Clear headers
	if ( req_header != NULL ) { free( req_header ); req_header = NULL; }

	ClearVarData();
	ClearPostData();
}
Пример #2
0
void WebTask::setData( int id, char *str )
{
	// データ文字列の取得
	//
	switch( id ) {
	case HTTPINFO_DATA:
		ClearVarData();				// 結果データをクリアする
		break;
	case HTTPINFO_ERROR:
		SetError( str );			// エラー文字列
		break;
	default:
		break;
	}
	return;
}
Пример #3
0
void CzHttp::Terminate( void )
{
    //	Delete Session
    if ( pt != NULL ) {
        free( pt );
        pt = NULL;
    }
    if ( hSession != NULL ) {
        InternetCloseHandle( hSession );
        hSession = NULL;
    }
    errstr[0] = 0;
    req_url[0] = 0;
    req_path[0] = 0;
    down_path[0] = 0;

    //	Clear headers
    if ( req_header != NULL ) {
        free( req_header );
        req_header = NULL;
    }

    ClearVarData();
}
Пример #4
0
void main(void)
{
	motor_fan_con(0);
	buzzer_led(0);
	init_sys();
	LcdInitiate();         //调用LCD初始化函数  
	Delay1ms(2);
	WriteInstruction(0x01);//清显示:清屏幕指令
	DisMenuInit();
	mo_forword_slow(); //调用慢速档
	while(!CarTurnLeft) { //AB段行驶
		if (DeviateLeftTrack) {
			mo_R_forword_slow();
		}
		if(DeviateRightTrack) {
			mo_L_forword_slow();
		}
		if (CHECK_COIN) { //检测硬币
			Delay1ms(5);
			if (CHECK_COIN) {
				mo_stop();
				buzzer_led(1);
				Delay1ms(500);
				mo_forword_slow();
				buzzer_led(0);
				Delay1ms(130);      //不能太小,不能太大,太小会冲出跑道,小了会多次检测!
				if (!CHECK_COIN) {
					count_coin++;
				}
			}
		}
		if (count_kk>=50&&count_kk<51) { //变量显示稳定控制
			ClearVarData();
			WriteVarData(0x05,mo_time);
			WriteVarData(0x0d,total_length);
			WriteVarData(0x45,count_coin);
			WriteVarData(0x4d,count_bottle);
		}
	}
	while(1){
		if (DeviateLeftTrack) {
			mo_R_forword();
		}
		if(DeviateRightTrack)	
		{
			mo_L_forword();
		}
		/*转角声控报警之奇淫巧技*/
		if((total_length >= 80 && total_length <= 110) ||\
				(total_length >= 190 && total_length <= 230) ||\
				(total_length >= 300 && total_length <= 360)){
			if(CarTurnLeft){
				mo_left();
				buzzer_led(1);
				Delay1ms(20);
				buzzer_led(0);
			}
			if (CarTurnRight) {
				mo_right();
				buzzer_led(1);
				Delay1ms(20);
				buzzer_led(0);
			}
		}
		else {
			if(CarTurnLeft){
				mo_left();
				Delay1ms(20);
				buzzer_led(0);
			}
			if (CarTurnRight) {
				mo_right();
				Delay1ms(20);
				buzzer_led(0);
			}
		}
		if (UpBottle) { //瓶子检测
			motor_fan_con(0);
			buzzer_led(1);
			Delay1ms(200);
			buzzer_led(0);
			if (NoBottle) {
				count_bottle++;
			}
		}
		if (DownBottle) {
			Delay1ms(2);
			if (DownBottle) {
				mo_stop();
				motor_fan_con(1);
				Delay1ms(250);
				mo_forword();
				motor_fan_con(0);
			}
			if (NoBottle) {
				count_bottle++;
				motor_fan_con(0);
			}
		}
		if (total_length>=430||mo_time>=90) { //终点
			mo_stop();
			Delay1ms(20);
			ClearVarData();
			WriteVarData(0x05,mo_time);
			WriteVarData(0x0d,total_length);
			WriteVarData(0x45,count_coin);
			WriteVarData(0x4d,count_bottle);
			EA = 0;
			while (1) {
				mo_stop();
			}
		}
		if (count_kk>=50&&count_kk<51) { //变量显示稳定控制
			ClearVarData();
			WriteVarData(0x05,mo_time);
			WriteVarData(0x0d,total_length);
			WriteVarData(0x45,count_coin);
			WriteVarData(0x4d,count_bottle);
		}
	}
}
Пример #5
0
int CzHttp::Exec( void )
{
    //	毎フレーム実行
    //
    static char hdr[] = "Content-Type: application/x-www-form-urlencoded\r\n";
    char req_name[1024];
    char *name;
    BOOL res;

    switch( mode ) {
    case CZHTTP_MODE_REQUEST:			// httpに接続
        strcpy( req_name, req_url );
        strcat( req_name, req_path );
        hService = InternetOpenUrl( hSession, req_name, req_header, -1L, 0, INTERNET_FLAG_RELOAD );
        if ( hService == NULL ) {
            SetError( "無効なURLが指定されました" );
            break;
        }
        mode = CZHTTP_MODE_REQSEND;
    case CZHTTP_MODE_REQSEND:
        name = down_path;
        if ( name[0] == 0 ) name = req_path;
        fp = fopen( name, "wb");
        if ( fp == NULL ) {
            SetError( "ダウンロードファイルが作成できません" );
            break;
        }
        size = 0;
        mode = CZHTTP_MODE_DATAWAIT;
    case CZHTTP_MODE_DATAWAIT:
    {
        DWORD dwBytesRead = INETBUF_MAX;
        if ( InternetReadFile( hService, buf, INETBUF_MAX, &dwBytesRead ) == 0 ) {
            fclose( fp );
            InternetCloseHandle( hService );
            SetError( "ダウンロード中にエラーが発生しました" );
            break;
        }
        if( dwBytesRead == 0 ) {
            mode = CZHTTP_MODE_DATAEND;
            break;
        }
        fwrite( buf, dwBytesRead, 1, fp );
        size += dwBytesRead;
        break;
    }
    case CZHTTP_MODE_DATAEND:
        fclose( fp );
        InternetCloseHandle( hService );
        mode = CZHTTP_MODE_READY;
        break;



    case CZHTTP_MODE_VARREQUEST:

        strcpy( req_name, req_url2 );
        strcat( req_name, req_path );

        // HTTPに接続
        hHttpSession = ::InternetConnectA( hSession, varserver, varport, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0 );
        if ( hHttpSession == NULL ) {
            SetError( "無効なサーバーが指定されました" );
            break;
        }

        // HTTP要求の作成
        hHttpRequest = ::HttpOpenRequestA( hHttpSession, varstr, req_name, HTTP_VERSION, NULL, NULL, INTERNET_FLAG_RELOAD|INTERNET_FLAG_NO_UI, 0 );
        if ( hHttpSession == NULL ) {
            SetError( "無効なURLが指定されました" );
            break;
        }
        mode = CZHTTP_MODE_VARREQSEND;
    // FALL THROUGH
    case CZHTTP_MODE_VARREQSEND:

        // 作成したHTTP要求の発行
        if ( postdata != NULL ) {
            char *additional_header = req_header != NULL ? req_header : "";
            char *header = (char *)malloc( strlen(hdr) + strlen(additional_header) + 1 );
            strcpy(header, hdr);
            strcat(header, additional_header);
            res = ::HttpSendRequestA( hHttpRequest, header, -1L, postdata, (int)strlen(postdata) );
            free(header);
        } else {
            res = ::HttpSendRequestA( hHttpRequest, req_header, -1L, NULL, 0 );
        }
        if ( res == false ) {
            InternetCloseHandle( hHttpSession );
            SetError( "リクエストができませんでした" );
            break;
        }
        /*
        		{
        		// 返されたコンテンツの長さを取得
        		DWORD dwSize = INETBUF_MAX;
        		*buf = 0;
        		res = HttpQueryInfo( hHttpRequest, HTTP_QUERY_CONTENT_LENGTH, buf, &dwSize, 0 );
        		if ( res == false ) {
        			InternetCloseHandle( hHttpRequest );
        			InternetCloseHandle( hHttpSession );
        			SetError( "データサイズ取得ができませんでした" );
        			break;
        		}
        		varsize = atoi(buf);
        		if ( varsize == 0 ) {
        			InternetCloseHandle( hHttpRequest );
        			InternetCloseHandle( hHttpSession );
        			SetError( "ダウンロードできませんでした" );
        			break;
        		}
        		}
        */
        varsize = 0x40000;
        ClearVarData();
        vardata = (char *)malloc( varsize );
        size = 0;
        mode = CZHTTP_MODE_VARDATAWAIT;
    // FALL THROUGH
    case CZHTTP_MODE_VARDATAWAIT:
    {
        DWORD dwBytesRead;
        int needed_size = size + INETBUF_MAX + 1;
        if ( needed_size > varsize ) {
            while ( needed_size > varsize ) {
                varsize *= 2;
            }
            vardata = (char *)realloc( vardata, varsize );
        }
        if ( InternetReadFile( hHttpRequest, vardata+size, INETBUF_MAX, &dwBytesRead ) == 0 ) {
            InternetCloseHandle( hHttpRequest );
            InternetCloseHandle( hHttpSession );
            SetError( "ダウンロード中にエラーが発生しました" );
            break;
        }
        size += dwBytesRead;
        if( dwBytesRead == 0 ) {
            mode = CZHTTP_MODE_VARDATAEND;
            vardata[size] = 0;
            break;
        }
        break;
    }
    case CZHTTP_MODE_VARDATAEND:
        InternetCloseHandle( hHttpRequest );
        InternetCloseHandle( hHttpSession );
        mode = CZHTTP_MODE_READY;
        break;



    case CZHTTP_MODE_INFOREQ:
        strcpy( req_name, req_url );
        strcat( req_name, req_path );
        hService = InternetOpenUrl( hSession, req_name, req_header, -1L, 0, 0 );
        if ( hService == NULL ) {
            SetError( "無効なURLが指定されました" );
            break;
        }
        mode = CZHTTP_MODE_INFORECV;
    case CZHTTP_MODE_INFORECV:
    {
        DWORD dwSize = INETBUF_MAX;
        buf[0] = 0;
        HttpQueryInfo( hService, HTTP_QUERY_RAW_HEADERS_CRLF, buf, &dwSize, 0 );
        InternetCloseHandle( hService );
        mode = CZHTTP_MODE_READY;
        break;
    }

    case CZHTTP_MODE_FTPREADY:
        return 2;

    case CZHTTP_MODE_FTPDIR:
    {
        char tx[512];
        char dname[64];
        char *fname;
        SYSTEMTIME t;

        fname = finddata.cFileName;
        if( finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
            strcpy( dname, "<DIR>" );
        }
        else {
            sprintf( dname, "%d", finddata.nFileSizeLow );
        }
        FileTimeToSystemTime( &finddata.ftLastWriteTime,&t );
        sprintf( tx, "\"%s\",%s,%4d/%02d/%02d,%02d:%02d:%02d\r\n", fname, dname, t.wYear, t.wMonth, t.wDay, t.wHour, t.wMinute, t.wSecond );
        AddFlexBuf( tx, (int)strlen(tx) );
        if ( !InternetFindNextFile( hFtpEnum, &finddata ) ) {
            InternetCloseHandle( hFtpEnum );
            mode = CZHTTP_MODE_FTPREADY;
        }
        break;
    }

    case CZHTTP_MODE_FTPREAD:
        break;
    case CZHTTP_MODE_FTPWRITE:
        break;
    case CZHTTP_MODE_FTPCMD:
    {
        char tx[1024];
        DWORD dwBytesRead;
        if( InternetReadFile( hResponse, buf, 1024, &dwBytesRead ) ) {
            AddFlexBuf( tx, dwBytesRead );
        }
        if ( dwBytesRead == 0 ) {
            InternetCloseHandle( hResponse );
            mode = CZHTTP_MODE_FTPREADY;
        }
        break;
    }
    case CZHTTP_MODE_FTPRESULT:
        GetFtpResponse();
        break;

    case CZHTTP_MODE_ERROR:
        return -1;
    default:
        return 1;
    }
    return 0;
}
Пример #6
0
int WebTask::Exec( void )
{
	//	毎フレーム実行
	//
	static char hdr[] = "Content-Type: application/x-www-form-urlencoded\r\n";
	BOOL res;

	switch( mode ) {
	case CZHTTP_MODE_VARREQUEST:

		// HTTPに接続
		hHttpSession = ::InternetConnectA( hSession, varserver, varport, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0 );
		if ( hHttpSession == NULL ) {
			SetError( "無効なサーバーが指定されました" );
			break;
		}

		// HTTP要求の作成
		hHttpRequest = ::HttpOpenRequestA( hHttpSession, varstr, req_url, HTTP_VERSION, NULL, NULL, INTERNET_FLAG_RELOAD|INTERNET_FLAG_NO_UI, 0 );
		if ( hHttpSession == NULL ) {
			SetError( "無効なURLが指定されました" );
			break;
		}
		mode = CZHTTP_MODE_VARREQSEND;
		// FALL THROUGH
	case CZHTTP_MODE_VARREQSEND:

		// 作成したHTTP要求の発行
		if ( postdata != NULL ) {
			char *additional_header = req_header != NULL ? req_header : "";
			char *header = (char *)malloc( strlen(hdr) + strlen(additional_header) + 1 );
			strcpy(header, hdr);
			strcat(header, additional_header);
			res = ::HttpSendRequestA( hHttpRequest, header, -1L, postdata, (int)strlen(postdata) );
			free(header);
		} else {
			res = ::HttpSendRequestA( hHttpRequest, req_header, -1L, NULL, 0 );
		}
		if ( res == false ) {
			InternetCloseHandle( hHttpSession );
			SetError( "リクエストができませんでした" );
			break;
		}
		varsize = INETBUF_MAX;
		ClearVarData();
		vardata = (char *)malloc( varsize );
		size = 0;
		mode = CZHTTP_MODE_VARDATAWAIT;
		// FALL THROUGH
	case CZHTTP_MODE_VARDATAWAIT:
		{
		DWORD dwBytesRead;
		int needed_size = size + INETBUF_MAX;
		if ( needed_size > varsize ) {
			while ( needed_size > varsize ) {
				varsize *= 2;
			}
			vardata = (char *)realloc( vardata, varsize );
		}
		if ( InternetReadFile( hHttpRequest, vardata+size, INETBUF_MAX, &dwBytesRead ) == 0 ) {
			InternetCloseHandle( hHttpRequest );
			InternetCloseHandle( hHttpSession );
			SetError( "ダウンロード中にエラーが発生しました" );
			break;
		}
		size += dwBytesRead;
		if( dwBytesRead == 0 ) {
			mode = CZHTTP_MODE_VARDATAEND;
			vardata[size] = 0;
			break;
		}
		break;
		}
	case CZHTTP_MODE_VARDATAEND:
		InternetCloseHandle( hHttpRequest );
		InternetCloseHandle( hHttpSession );
		mode = CZHTTP_MODE_READY;
		break;

	case CZHTTP_MODE_ERROR:
		return -1;
	default:
		return 1;
	}
	return 0;
}