예제 #1
0
static PaError DoTest( int flags )
{
    PaStream *stream;
    PaError    err = paNoError;
    paTestData data;
    PaStreamParameters outputParameters;

    InitializeTestData( &data );       

    outputParameters.device = Pa_GetDefaultOutputDevice();
    if (outputParameters.device == paNoDevice) {
      fprintf(stderr,"Error: No default output device.\n");
      goto error;
    }
    outputParameters.channelCount = 2;
    outputParameters.hostApiSpecificStreamInfo = NULL;
    outputParameters.sampleFormat = paFloat32;
    outputParameters.suggestedLatency = Pa_GetDeviceInfo( outputParameters.device )->defaultHighOutputLatency;

    /* Open an audio I/O stream. */
    err = Pa_OpenStream(
        &stream,
        NULL,                         /* no input */
        &outputParameters,
        SAMPLE_RATE,
        FRAMES_PER_BUFFER,            /* frames per buffer */
        paClipOff | flags,      /* we won't output out of range samples so don't bother clipping them */
        patestCallback,
        &data );
    if( err != paNoError ) goto error;


    err = Pa_StartStream( stream );
    if( err != paNoError ) goto error;

    printf("hear \"BEEP\"\n" );
    fflush(stdout);

    while( ( err = Pa_IsStreamActive( stream ) ) == 1 ) Pa_Sleep(SLEEP_MSEC);
    if( err < 0 ) goto error;

    err = Pa_StopStream( stream );
    if( err != paNoError ) goto error;

    err = Pa_CloseStream( stream );
    if( err != paNoError ) goto error;

    return err;
error:
    return err;
}
예제 #2
0
파일: Kruskal.cpp 프로젝트: cty222/Note
int main(void)
{
	// Initailize testing data
	InitializeTestData ();	
	
	// Add all test data in an array
	NODE NodeArray[] = {NodeA, NodeB, NodeC, NodeD, NodeE, NodeF};
	
	//The path array count  will just have  NodeArray count minus 1.
	// Initialize Path Array.
	int PathArrayCount = GET_ARRAY_COUNT(NodeArray) -1;
	PATH ChoosedPath[PathArrayCount];
	memset (ChoosedPath, 0, sizeof(ChoosedPath));
	
	while(PathArrayCount--)
	{
		int Row = 0, Column = 0;
		
		// Initailize pointer
		PATH PtrPath;
		//PtrPath = &ChoosedPath[PathArrayCount];
		PtrPath.Distance = -1; //for checking
		
		// Double for loop for Array
		for(Row =0; Row< GET_ARRAY_COUNT(NodeArray); Row++)
		{
			NODE *Ptr = &NodeArray[Row];
			for (Column = 0; Column < Ptr->LinkCount; Column++)
			{
				// 現在的值 
				PATH TmpPath;
				TmpPath.Distance = Ptr->PtrList[Column].Distance;
				
				// 兩個Node Name 
				TmpPath.Node[0] = Ptr;
				TmpPath.Node[1] = Ptr->PtrList[Column].Node;
#if DEBUG_CLOSE				
				printf("TMP %s and %s: %d\n", TmpPath.Node[0].NodeName, TmpPath.Node[1].NodeName, TmpPath.Distance);
#endif				
				// Checking
				if (PtrPath.Distance == -1 || PtrPath.Distance> TmpPath.Distance)
				{
					if (!IsChoosed(&TmpPath, ChoosedPath, GET_ARRAY_COUNT(ChoosedPath) )
						 && !IsReturnToRoot(TmpPath.Node[1], TmpPath.Node[0], ChoosedPath, GET_ARRAY_COUNT(ChoosedPath), NULL)
						 )
				 	{
				 		PtrPath = TmpPath;
					}
				}
			}
		} 
		
		if (PtrPath.Distance != -1)
		{
			memcpy (&ChoosedPath[PathArrayCount], &PtrPath, sizeof (PATH));
			printf("===== Ans %s and %s : %d ========= \n", PtrPath.Node[0]->NodeName, PtrPath.Node[1]->NodeName, PtrPath.Distance);
		} 
		else
		{
			// Finish or error.
			break;
		}
	}
	
	FreeTestData();
	return 0;
}