Example #1
0
 /******************* Start Scan ***************/
 void CMainFrame:: OnStartscan()
 {
	 if(SIO_OK!=sio_open(Port))
		{
			MessageBox("串口打开错误");
			return;
		}
   else
		{
			sio_ioctl(Port,BaudRate,DataBits | StopBits | Parity);
			sio_cnt_irq(Port,CntIrq,1);
		}

   Scan_num=0;
   OnBtnSend(num);
   //OnBtnSend('1');
 }
Example #2
0
/***************************************************************
【函数功能】: 打开串口
【输    入】: port:串口号(默认0)。【构造函数时也可指定串口号】
【输    出】: 执行结果:0正确,-1错误。
【说    明】: 正确用法有3种:<1> CGyro *p = new CGyro(n);  p->open();
					<2> CGyro *p = new CGyro(n); p->open(n);
					<3> CGyro *p = new CGyro;   p->open(n);
***************************************************************/
int CGyro::Open(int port)
{
	if(m_bPortOpened)
		return 1;
	// 读取配置
	string iniFile = string(INI_FILE);
	//if (mrpt::system::fileExists(iniFile) == false)	// INI 文件找不到
	//{
	//	cout << "!Gyro惯导:start():找不到ini文件!" << iniFile << endl;
	//	return -1;	
	//}					// ini文件在主窗口init时检查一次即可,不存在则退出
	mrpt::utils::CConfigFile INI_Cfg(iniFile);
	m_iPort = INI_Cfg.read_int("Gyro", "COM_Port", 0);

	// 如果形参有传入,则以传入值为主,并修改ini文件
	if (port > 0)
	{
		INI_Cfg.write("Gyro", "COM_Port", port);	// 用传入形参更新配置文件数据
		m_iPort = port;
	}
	else
	{
		if (m_iPort <= 0)
		{
			cout<<"[!!!] Gyro: 必须指定一个大于0的串口号!"<<endl;
			return -1;
		}
	}
	// 打开串口
	if(sio_open(m_iPort) != SIO_OK)
	{
		cout<<"[!!!] Gyro: 打开串口错误!"<<endl;
		return -1;
	}
	sio_ioctl(m_iPort, B115200, P_NONE | BIT_8 | STOP_1 );
	sio_cnt_irq(m_iPort,RecvCall, 1);

	m_bPortOpened = true;
	cout<<"[+] Gyro: Started!"<<endl;

	return 0;
}
Example #3
0
/***************************************************************
【函数功能】: 打开串口
【输    入】: port:串口号(默认0)。【构造函数时也可指定串口号】
【输    出】: 执行结果:0正确,-1错误。
【说    明】: 正确用法有3种:<1> CSensor *p = new CSensor(n);  p->open();
					<2> CSensor *p = new CSensor(n); p->open(n);
					<3> CSensor *p = new CSensor;   p->open(n);
***************************************************************/
int CSensor::Open(int port)
{
	if(m_bPortOpened)
		return -1;
	// 读取配置
	
	string iniFile = string(INI_FILE);
	//if (mrpt::system::fileExists(iniFile) == false)	// INI 文件找不到
	//{
	//	cout << "!Sensor传感:start():找不到ini文件!" << iniFile << endl;
	//	return -1;	
	//}						// ini文件在主窗口init时检查一次即可,不存在则退出
	mrpt::utils::CConfigFile INI_Cfg(iniFile);
	m_iPort = INI_Cfg.read_int("Sensor", "COM_Port", 0);
	// 读取传感器位置及配置
	std::vector<double> aux; // Auxiliar vector
	std::stringstream sname;
	for (int i=0; i<NUM_OF_USENSOR; i++)
	{
		sname.str("");
		sname.clear();
		sname<<"pose"<<i;
		INI_Cfg.read_vector("Sensor", sname.str(), aux, aux, false);
		m_pUS[i].pose = TPose3D( aux[0], aux[1], aux[2], 
			DEG2RAD( (double)aux[3]), DEG2RAD( (double)aux[4]), DEG2RAD( (double)aux[5]) );
		m_pUS[i].stopZone = (double)aux[6];
		m_pUS[i].id = i;
		m_pUS[i].distance = 2.0;	// 初始值设为2m
		m_pUS[i].bValid = true;		// 初始化都有效
	}
	m_timestamp_US = mrpt::system::now();
	// 如果形参有传入,则以传入值为主,并修改ini文件
	if (port > 0)
	{
		INI_Cfg.write("Sensor", "COM_Port", port);	// 用传入形参更新配置文件数据
		m_iPort = port;
	}
	else
	{
		if (m_iPort <= 0)
		{
			cout<<"[!!!] Sensor: 必须指定一个大于0的串口号!"<<endl;
			return -1;
		}
	}
	// 打开串口
	if(sio_open(m_iPort) != SIO_OK)
	{
		cout<<"[!!!] Sensor: 打开串口错误!"<<endl;
		return -1;
	}
	sio_ioctl(m_iPort, B115200, P_NONE | BIT_8 | STOP_1 );
	sio_cnt_irq(m_iPort,RecvCall, 1);
	// 创建发送线程
	m_bSendThreadStopFlag = false;
	//m_hSendThreadHandle = CreateThread(NULL,NULL,
	//				(LPTHREAD_START_ROUTINE)SendThread,this,NULL,NULL);
	m_hSendThreadHandle = (HANDLE)_beginthread(SendThread, 0, this);
	////////////////////////////////
	m_bPortOpened = true;
	cout<<"[+] Sensor: Started !"<<endl;
	return 0;
}