Ejemplo n.º 1
0
bool RunRadarDataList() {
	const int c_PerComDataSize = 1024;
	unsigned char com_data[1024];
	int act_com_size;
	bool ok_com;
	char config_path[255];
	int port_num;
	int baud_rate;

	GetConfigPath(config_path, sizeof(config_path));
	GetPortNumOfSerialInterface(config_path, &port_num);
	GetBaudRateOfSerialInterface(config_path, &baud_rate);
	ok_com = OpenComport(port_num, baud_rate);
	if (false == ok_com) {
		LOG("OpenComport() error!\n");
		return false;
	}
	else {
		while (true) {
			act_com_size = ReadComport(com_data, c_PerComDataSize);
			if (0 == act_com_size)
				continue;
			else
				AnalyseComData(com_data, act_com_size);
		}
		CloseComport();
		return true;
	}
}
Ejemplo n.º 2
0
FREObject closePort(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
{
	FREObject result;

	CloseComport(comPort);
	FRENewObjectFromBool(1, &result);

	return result;
}
Ejemplo n.º 3
0
/*!
  @brief Handle interrupt event (SIGINT) so program exits cleanly
*/
void sigint_handler( int32_t sig ) 
{
    
    // Close the serial port
    CloseComport( serial_port_number );

    printf("\nExiting...\n");
    exit(sig);
}
Ejemplo n.º 4
0
// Close communication (you can reopen it later)
void CCPCBooster::ClosePort()
{
	if (_currentState == PortOpened)
	{
#if _WINDOWS
		CloseHandle(_COMPortHandle);
#else
		CloseComport(_COMPortHandle);
#endif
	}
	_currentState = PortClosed;
}
Ejemplo n.º 5
0
void contextFinalizer(FREContext ctx)
{
	pthread_cancel(ptrToThread);
	CloseComport(comPort);
	return;
}
Ejemplo n.º 6
0
/*
 * main program
 */
int main(int argc, char** argv) {
    //global var
    time_t sec0, sec1;
    unsigned int delayPixel= 120000, delayGyrodataSending = 25000;
    unsigned int idPayload = 303, useKeyboardCmd = 0, buffer_max_num = 64;
    unsigned char keyChar;
    int gpioOK = 0;
	dictionary *iniDict;	//ini dictionery  
	char strPathCfg[255];
	
	GPS_DATA last_posx;
	
	//init last gps pos
	last_posx.gps_status = last_posx.gps_loc.lat = last_posx.gps_loc.lon = 0;
	last_posx.gps_speed = last_posx.gps_altitude = last_posx.gps_time = 0;	
    
    //show titel
#if VERBOSE==1
    printf("%s", APP_TITEL);
#endif

	//init pin switch
	gpioOK = wiringPiSetup();
	
	if(gpioOK != -1)
	{
		pinMode(6, INPUT);
		pullUpDnControl(6, PUD_UP);
	}
	else
		printf("gpio init eror\r\n");
		
	//parsing argumen jika ada
	if(argc>2)
	{
		//default cfg file
		getcwd(strPathCfg, sizeof(strPathCfg));
		strcat(strPathCfg, "/");
		strcat(strPathCfg, CFG_NAME);
	
		int i;
		for(i=1;i<(argc-1);i++)
		{
			//delay pixel
			if(strcmp("-d",argv[i])==0)
				delayPixel = atoi(argv[++i]);
				
			//id payload
			if(strcmp("-i",argv[i])==0)
				idPayload = atoi(argv[++i]);
				
			//pake keyboard ato tidak
			if(strcmp("-k",argv[i])==0)
				useKeyboardCmd = atoi(argv[++i]);
				
			//gyro send
			if(strcmp("-g",argv[i])==0)
				delayGyrodataSending = atoi(argv[++i]);
				
			//buffer size
			if(strcmp("-b",argv[i])==0)
				buffer_max_num = atoi(argv[++i]);
		}
	}
	else //baca dari cfg file
	{				
		//load ini file
		//char strCfg[80];
		
		if(argc==2)
		{
			strcpy(strPathCfg, argv[1]);
		}
		else
		{		
			//get cwd
			if (getcwd(strPathCfg, sizeof(strPathCfg)) != NULL)
			   printf("Current working dir: %s\r\n", strPathCfg);
			else
			{
				strcpy(strPathCfg, argv[1]);			
			}
		}
		
		//check file exists
		strcat(strPathCfg, "/");
		strcat(strPathCfg, CFG_NAME);
		if(!file_exist(strPathCfg))
		{
			printf("Configuration file %s not found!!!\r\n", strPathCfg );
			return(EXIT_FAILURE);
		}
		
		//load from config file
		printf("Loading configuration file from %s\r\n", strPathCfg);
		
		//load ini parser
		iniDict = iniparser_load(strPathCfg);
		
		//read cfg value
		if(iniDict)
		{
			idPayload = iniparser_getint(iniDict,"payload:id",100);
			delayPixel = iniparser_getint(iniDict,"payload:cam_delay",120000);
			delayGyrodataSending = iniparser_getint(iniDict,"payload:g_delay",20000);
			buffer_max_num = iniparser_getint(iniDict,"payload:buffer",64);
		}
	}
	
	//show config setup
	printf("======================================\r\n");
	printf("Configuration :\r\n");
	printf("Delay Pixel = %d uS\r\n", delayPixel);
	printf("ID Payload = %d\r\n", idPayload);
	printf("Use Keyboard = %d\r\n", useKeyboardCmd);
	printf("Gyro Delay = %d uS\r\n", delayGyrodataSending);
	printf("Buffer = %d byte\r\n", buffer_max_num);
	printf("======================================\r\n");    
	
	//init bus i2c
	int i2c_hdl = I2C_Init_Bus(i2c_dev, &statusPeripheral);
	
	//init start adxl345
	ADXL345_Init_Start(i2c_hdl, adxl345_addr, &statusPeripheral);
	
	//init itg3200
	ITG3200_Init_Start(i2c_hdl, itg3200_addr, &statusPeripheral);
	
    //open port
    unsigned char buffRX[COM_BUFF_NUM];
    int buffNumRX;
    
    //make it as null string
    buffRX[COM_BUFF_NUM-1] = 0;

    if (OpenComport(COM_PORT, COM_SPEED)) {
        fprintf(stderr, "Open port %d failed : %s\r\n!!!", COM_PORT, strerror(errno));
        return errno;
    }

#if VERBOSE==1
    printf("communication port opened\r\n");
#endif   

	//tes port com
	//while(1){
		////ambil perintah dari comport
        //buffNumRX = PollComport(COM_PORT, buffRX, (COM_BUFF_NUM - 2));
        //if (buffNumRX > 0) {
			////printf("%d = %s\n", buffNumRX, buffRX);
			//int i;
			//for(i=0;i<buffNumRX;i++)
			//{
				//printf("%X %s", buffRX[i], (i<buffNumRX-1) ? "":"\n");
			//}
			
			//char ss[10];
			//snprintf(ss,6,"%d",(buffRX[1]<<8)+buffRX[2]);
			//printf("id = %s\n", ss);
		//}
	//}

	//open cam
	CvCapture *camHdl = cvCaptureFromCAM(CV_CAP_ANY);
	Cam_Init_Start(camHdl, &statusPeripheral);

    //main loop
    while (1) {
		if(useKeyboardCmd)
		{
			//dummy keyboard input
			printf("press command key\r\n");
			keyChar = getchar();

			//if (keyChar == cmdList[3][0])
				//opsState = STATE_EXIT;

			//if (keyChar == cmdList[2][0])
				//opsState = STATE_GET_CAM_DATA;
				
			//if (keyChar == cmdList[1][0])
				//opsState = STATE_GET_G_DATA;
				
			if (keyChar == cmdList[3])
				opsState = STATE_EXIT;

			if (keyChar == cmdList[2])
				opsState = STATE_GET_CAM_DATA;
				
			if (keyChar == cmdList[1])
				opsState = STATE_GET_G_DATA;
		}

        //ambil perintah dari comport
        buffNumRX = PollComport(COM_PORT, buffRX, (COM_BUFF_NUM - 2));

        //data diterima -> cek printah
        if (buffNumRX > 0) {
            //int i;
            //unsigned char *chrPos;

            ////make it null string
            //if (buffRX[buffNumRX] != 0)
                //buffRX[buffNumRX] = 0;
                
            ////default ops state = idle
            //opsState = STATE_IDLE;

			////add new state
            //for (i = 0; i < CMD_COUNTER; i++) {
                //chrPos = strstr(buffRX,cmdList[i]);

                //if ((chrPos != NULL) && ((chrPos - buffRX + 1) == 1)) { //got a match?
                    ////proses state
                    //opsState = i;

                    //break;
                //}
            //}
            
            opsState = CheckCommand(cmdList, buffNumRX, buffRX);
        }
        
        //cek tobmol
        if(gpioOK != -1)
        {
			//printf("%d\r\n", digitalRead(6));
			//SendByte(COM_PORT, digitalRead(6)+0x30);
			//usleep(1e5);
		if(digitalRead(6) == 0)
		{
			usleep(5e5);
			if(digitalRead(6) == 0)
				opsState = STATE_SHUTDOWN_OS;
		}
	}

        //lakukan proses seuai ops state
        if (opsState == STATE_EXIT) {
#if VERBOSE==1
            printf("exiting...\r\n");
            //fflush(stdout);   
#endif            
            break;
        }
        
        //shutdown os
        if (opsState == STATE_SHUTDOWN_OS)
        {
			printf("shutdown...\r\n");
			break;
		}
		
		//restart os
        if (opsState == STATE_RESTART_OS)
        {
			printf("restart...\r\n");
			break;
		}

		//other state
        switch (opsState) {
            case STATE_IDLE: //idle state
                //SendByte(COM_PORT, 's');
                break;

            case STATE_GET_G_DATA: //ambil data g
                //SendByte(COM_PORT, 'g');
                
                GetAndSendAccGyro(i2c_hdl, adxl345_addr, itg3200_addr, idPayload, delayGyrodataSending, &last_posx, buffer_max_num);
                break;

            case STATE_GET_CAM_DATA://ambil data cam
                //SendByte(COM_PORT, 'c');
#if VERBOSE==1
                printf("grab camera start\r\n");
                sec0 = time(NULL);
#endif                                

                GrabAndSendCameraData(camHdl, i2c_hdl, 5, delayPixel, idPayload, &last_posx, buffer_max_num);                
#if VERBOSE==1
                sec1 = time(NULL);
                printf("grab camera finish in %lds\r\n", (sec1 - sec0));
#endif                
				opsState = STATE_IDLE;
				
				//usleep(5e4);
				//ComportFlush(COM_PORT);
				//usleep(1.5e6);
                break;

            case STATE_GET_STATUS: //ambil status payload
                snprintf((char*)buffRX, 16, "s,%.3d,%d,%d\r", idPayload, 990, statusPeripheral);
                //SendBuf(COM_PORT, buffRX, 10);
                //snprintf((char*)buffRX, 16, "s,%.3d,%d\r", idPayload, 990);
                cprintf(COM_PORT, buffRX);
                opsState = STATE_IDLE; //go back to idle
                
                #if VERBOSE==1
                printf("sendstatus reply = %s\r\n", buffRX);
                #endif
                break;
                
            case STATE_REINIT_PERIPHERAL:	//reinit peripheral
				//init cam
				Cam_Init_Start(camHdl, &statusPeripheral);
				
				//init bus i2c
				i2c_hdl = I2C_Init_Bus(i2c_dev, &statusPeripheral);
				
				//init start adxl345
				ADXL345_Init_Start(i2c_hdl, adxl345_addr, &statusPeripheral);
				
				//init itg3200
				ITG3200_Init_Start(i2c_hdl, itg3200_addr, &statusPeripheral);
				
				opsState = STATE_IDLE; //go back to idle
				break;
				
			case STATE_READ_WRITE_CONFIGURATION: //read/write config file
				printf("Opening configuration file %s\r\n", strPathCfg);
				
				//load ini file
				iniDict = iniparser_load(strPathCfg);
				
				//write if neccessary
				if(buffRX[1]==1)	//write setting
				{
					char stmp[10];
					
					//id
					snprintf(stmp,10,"%d", (buffRX[2]<<8)+buffRX[3]);					
					iniparser_set(iniDict,"payload:id",stmp);
					
					//cam delay in ms
					snprintf(stmp,10,"%d", buffRX[4]*1000);					
					iniparser_set(iniDict,"payload:cam_delay",stmp);
					
					//g delay in ms
					snprintf(stmp,10,"%d", buffRX[5]*1000);					
					iniparser_set(iniDict,"payload:g_delay",stmp);
					
					//buffer max
					snprintf(stmp,10,"%d", buffRX[6]);					
					iniparser_set(iniDict,"payload:buffer",stmp);
					
					Save_INI_File(iniDict, strPathCfg);
				}	
				
				//reload ini file
				iniDict = iniparser_load(strPathCfg);
				
				//read cfg value
				if(iniDict)
				{
					idPayload = iniparser_getint(iniDict,"payload:id",100);
					delayPixel = iniparser_getint(iniDict,"payload:cam_delay",120000);
					delayGyrodataSending = iniparser_getint(iniDict,"payload:g_delay",20000);
					buffer_max_num = iniparser_getint(iniDict,"payload:buffer",64);
				}
				
				//send reply always
				snprintf((char*)buffRX, 25, "f,%d,%d,%d,%d\r", idPayload, delayPixel, delayGyrodataSending,buffer_max_num);
                cprintf(COM_PORT, buffRX);
                opsState = STATE_IDLE; //go back to idle
                
                #if VERBOSE==1
                printf("send config reply = %s\r\n", buffRX);
                #endif				
				break;

            default:
                break;
        }
    }

    //release cam
    cvReleaseCapture(&camHdl);

    //release port
    CloseComport(COM_PORT);
    
    //close bus
	closeBus(i2c_hdl);
	
	//free ini handler
	if(iniDict)
		iniparser_freedict(iniDict);
	
	//cek shutdown atau restart
	switch (opsState) 
	{
		case STATE_SHUTDOWN_OS:
			system("sudo shutdown now");
			break;
			
		case STATE_RESTART_OS:
			system("sudo shutdown -r now");
			break;
			
		default:
			break;
	}

    //return
    return (EXIT_SUCCESS);
}
Ejemplo n.º 7
0
Archivo: serial.c Proyecto: alvarop/pc
/*******************************************************************************
 * @fn     void serial_close()
 * @brief  Close serial port
 * ****************************************************************************/
void serial_close()
{
  CloseComport( serial_port_number );
}
Ejemplo n.º 8
0
int main(int argc,char** argv)
{

	ros::init(argc, argv, "servo");
	ros::param::get("/port", port);
	if(port == "/dev/ttyS0")
		Comport = 0;
	else if(port == "/dev/ttyS1")
			Comport = 1;
	else if(port == "/dev/ttyS2")
			Comport = 2;
	else if(port == "/dev/ttyS3")
			Comport = 3;
	else if(port == "/dev/ttyS4")
			Comport = 4;
	else if(port == "/dev/ttyS5")
			Comport = 5;
	else if(port == "/dev/ttyS6")
			Comport = 6;
	else if(port == "/dev/ttyS7")
			Comport = 7;
	else if(port == "/dev/ttyS8")
			Comport = 8;
	else if(port == "/dev/ttyS9")
			Comport = 9;
	else if(port == "/dev/ttyS10")
			Comport = 10;
	else if(port == "/dev/ttyS11")
			Comport = 11;
	else if(port == "/dev/ttyS12")
			Comport = 12;
	else if(port == "/dev/ttyS13")
			Comport = 13;
	else if(port == "/dev/ttyS14")
			Comport = 14;
	else if(port == "/dev/ttyS15")
			Comport = 15;
	else if(port == "/dev/ttyUSB0")
			Comport = 16;
	else if(port == "/dev/ttyUSB1")
			Comport = 17;
	else if(port == "/dev/ttyUSB2")
			Comport = 18;
	else if(port == "/dev/ttyUSB3")
			Comport = 19;
	else if(port == "/dev/ttyUSB4")
			Comport = 20;
	else if(port == "/dev/ttyUSB5")
			Comport = 21;
	ros::param::get("/baudrate", baudrate);
	ros::param::get("/servo_id", servo_id);
	ros::param::get("/servo_speed", servo_speed);	
	ros::param::get("/max_angle", max_angle);
	ros::param::get("/min_angle", min_angle);
	OpenComport(Comport, baudrate);
	servoAction servo(ros::this_node::getName());
	if (!ros::ok())
	{	
	CloseComport(Comport);
	}	
	ros::spin();
		
	return 0;
}
Ejemplo n.º 9
0
void 
dinitSerial() {
  CloseComport(SERIAL_PORT);
}
Ejemplo n.º 10
0
int main(int argc, char *argv[])
{
    unsigned char buffer[4096] = {0};
    int bufferLen = 0;
    int bytesReceived = 0;
    int bytesWritten = 0;
    int timer = 0;
    unsigned int deviceId[3];
    Command command;
    int extra = -1;
    
    if (argc < 3)
    {
        print_error("Usage: insteon deviceId [on|off|status|temp_ambient]\n");
        return 1;
    }

    // Parse arguments
    parse_device(argv[1], deviceId);
    command = parse_command(argv[2]);
    if (argc > 3)
        extra = parse_extra(argv[3]);

    if (command < 0)
    {
        print_error("Invalid command name!\n");
        return 1;
    }

    print_debug("*****************\n");
    print_debug("Device: %s\n", argv[1]);
    print_debug("Command: %s\n", argv[2]);
    if (argc > 3)
        print_debug("Extra: %s\n", argv[3]);
    print_debug("*****************\n");

    if (acquire_lock())
    {
        print_error("Timeout while acquiring lock!\n");
        return 1;
    }
    
    print_debug("Opening comport\n");

    if(OpenComport(comport, 19200))
    {
        print_error("Can not open comport\n");
        release_lock();
        return 1;
    }
    
    // Send command
    bytesWritten = send_command(deviceId, command, extra);
    if (bytesWritten < 0)
    {
        print_error("Invalid command or internal error!\n");
        goto return_error;
    }

    // Wait for response
    while(1)
    {
        bytesReceived = PollComport(16, buffer + bufferLen, 4095);
        //print_debug("br=%d bl=%d  ", bytesReceived, bufferLen);
        bufferLen += bytesReceived;
        //print_debug("br=%d bl=%d\n", bytesReceived, bufferLen);
        if(bytesReceived > 0)
        {
            int i;
            timer = 0;
            print_debug("received %i bytes: (%i total)", bytesReceived, bufferLen);
            for(i=0; i < bufferLen; i++)
            {
                print_debug("%02X ", buffer[i]);
            }
            print_debug("\n");

            if (bufferLen > bytesWritten)
            {
                unsigned int ack = *(buffer + bytesWritten);
                unsigned char* message = buffer + bytesWritten + 1;
                int messageLen = bufferLen - bytesWritten - 1;
                
                if (ack != CMD_ACK)
                {
                    print_error("Message not acknowledged!\n");
                    goto return_error;
                }
                
                if (messageLen > 1)
                {
                    if (message[0] == CMD_PREFIX)
                    {
                        if (message[1] == CMD_INSTEON_STD_RECEIVED)
                        {
                            if (messageLen >= 11)
                            {
                                static int resultCounter = 0;
                                
                                print_debug("Insteon standard message received!\n");
                                if(parse_message(command, message))
                                {
                                    goto return_error;
                                }
                                
                                if(command == CMD_TEMP_GET_SETPOINT && resultCounter == 0 && extra == 3)
                                {
                                    resultCounter++;
                                    bufferLen -= 11;
                                }
                                else
                                {
                                    goto return_success;
                                }
                            }
                        }
                        else if (message[1] == CMD_INSTEON_EXT_RECEIVED)
                        {
                            if (messageLen >= 25)
                            {
                                print_debug("Insteon extended message received!\n");
                                if(parse_message(command, message))
                                {
                                    goto return_error;
                                }
                                goto return_success;
                            }
                        }
                        else if (message[1] == CMD_X10_RECEIVED)
                        {
                            if (messageLen >= 4)
                            {
                                print_debug("X10 message received!\n");
                                if(parse_message(command, message))
                                {
                                    goto return_error;
                                }
                                goto return_success;
                            }
                        }
                        else
                        {
                            print_error("Unexpected message received! '");
                            for(i=0; i < messageLen; i++)
                            {
                                print_error("%02X ", message[i]);
                            }
                            print_error("'\n");
                            goto return_error;
                        }
                    }
                    else
                    {
                        print_error("Unexpected message header received! '");
                        for(i=0; i < messageLen; i++)
                        {
                            print_error("%02X ", message[i]);
                        }
                        print_error("'\n");
                        goto return_error;
                    }
                }
            }
        }

        usleep(250);
        timer++;
        if (timer > 4000)
        {
            print_error("Timeout while waiting for bytes!\n");
            goto return_error;
        }
    }

return_success:
    CloseComport(16);
    release_lock();
    return 0;
return_error:
    CloseComport(16);
    release_lock();
    return 1;
}
Ejemplo n.º 11
0
void close_com(GtkWidget *window)
{
	CloseComport(com_no);
}