mirror of
				http://172.16.0.230/r/SIF/TowerOptoSifAndSpectral.git
				synced 2025-10-25 13:59:44 +08:00 
			
		
		
		
	
		
			
	
	
		
			148 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			148 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
|  | #include "pch.h"
 | ||
|  | #include "ZZ_SeiralPort.h"
 | ||
|  | 
 | ||
|  | CZZ_SeiralPort_QT::CZZ_SeiralPort_QT() | ||
|  | { | ||
|  | 	m_pSerialPort = new QSerialPort(); | ||
|  | } | ||
|  | 
 | ||
|  | CZZ_SeiralPort_QT::~CZZ_SeiralPort_QT() | ||
|  | { | ||
|  | 	if (m_pSerialPort != NULL) | ||
|  | 	{ | ||
|  | 		delete m_pSerialPort; | ||
|  | 	} | ||
|  | } | ||
|  | 
 | ||
|  |  void CZZ_SeiralPort_QT::InitPort(PortInfo portinfo) | ||
|  | { | ||
|  | 	 | ||
|  | 	m_piSettings = portinfo; | ||
|  | 	 | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  |  bool CZZ_SeiralPort_QT::SetPort() | ||
|  |  { | ||
|  | 	 bool bRes = true; | ||
|  | // 	 int iRes = sio_ioctl(m_piSettings.iPortNumber, m_piSettings.indexBaudRate,
 | ||
|  | // 		 m_piSettings.indexParity | m_piSettings.indexBytesize | m_piSettings.indexStopBits);
 | ||
|  | // 	 if (iRes != SIO_OK)
 | ||
|  | // 	 {
 | ||
|  | // 		 bRes = false;
 | ||
|  | // 	 }
 | ||
|  | 	 QString qstrPortName; | ||
|  | 	 if (m_piSettings.FullPortName!="") | ||
|  | 	 { | ||
|  | 		 qstrPortName = m_piSettings.FullPortName; | ||
|  | 		 qDebug() << m_piSettings.FullPortName; | ||
|  | 	 } | ||
|  | 	 else { | ||
|  | 		 qstrPortName = QString("COM%1").arg(m_piSettings.iPortNumber); | ||
|  | 	 } | ||
|  | 	// qstrPortName = "COM4";
 | ||
|  | 	// QString qstrPortName = m_piSettings.FullPortName;//QString("COM%1").arg(m_piSettings.iPortNumber);
 | ||
|  | 	 m_pSerialPort->setPortName(qstrPortName); | ||
|  | 	 m_pSerialPort->setReadBufferSize(512); | ||
|  | 	 bRes = m_pSerialPort->setBaudRate(m_piSettings.iBaudRate); | ||
|  | 	 return bRes; | ||
|  |  } | ||
|  | 
 | ||
|  | bool CZZ_SeiralPort_QT::Open() | ||
|  | { | ||
|  | 	bool bRes = true; | ||
|  | // 	int iRes = sio_open(m_piSettings.iPortNumber);
 | ||
|  | // 	if (iRes!=SIO_OK)
 | ||
|  | // 	{
 | ||
|  | // 		bRes = false;
 | ||
|  | // 	}
 | ||
|  | 	bRes = m_pSerialPort->open(QIODevice::ReadWrite); | ||
|  | 	if (!bRes) | ||
|  | 	{ | ||
|  | 		qDebug() << "Err:open Failed.Exit Code:1"; | ||
|  | 		//std::cout << "Err.open Failed" << std::endl;
 | ||
|  | 		return bRes;; | ||
|  | 	} | ||
|  | 	return bRes; | ||
|  | } | ||
|  | 
 | ||
|  | void CZZ_SeiralPort_QT::Close() | ||
|  | { | ||
|  | 	m_pSerialPort->close(); | ||
|  | } | ||
|  | 
 | ||
|  | std::string CZZ_SeiralPort_QT::ReadAll(int waite) | ||
|  | { | ||
|  | 	if (!m_pSerialPort->waitForReadyRead(waite)) | ||
|  | 	{ | ||
|  | 		return ""; | ||
|  | 
 | ||
|  | 	} | ||
|  | 	if ( | ||
|  | 		m_pSerialPort->bytesAvailable() == 0 | ||
|  | 		) | ||
|  | 	{ | ||
|  | 		return ""; | ||
|  | 	} | ||
|  | 	 | ||
|  | 	qbaRecv.clear(); | ||
|  | 
 | ||
|  | 	qbaRecv = m_pSerialPort->readAll(); | ||
|  | 	 | ||
|  | 
 | ||
|  | 	std::string strRet(qbaRecv.constData(), qbaRecv.length()); | ||
|  | 	return strRet; | ||
|  | 
 | ||
|  | // 	std::string strRet;
 | ||
|  | // 	char cBuf[MAXBUFFER];
 | ||
|  | // 	int iRet = sio_read(m_piSettings.iPortNumber,cBuf, MAXBUFFER);
 | ||
|  | // 	if (iRet==0)
 | ||
|  | // 	{
 | ||
|  | // 		strRet = "";
 | ||
|  | // 		
 | ||
|  | // 	}
 | ||
|  | // 	else
 | ||
|  | // 	{
 | ||
|  | // 		char *pRecv = new char[iRet];
 | ||
|  | // 		memcpy(pRecv, cBuf, iRet);
 | ||
|  | // 		//std::string strRet(pRecv);
 | ||
|  | // 		//delete pRecv;
 | ||
|  | // 		//return strRet;
 | ||
|  | // 
 | ||
|  | // 		strRet.resize(iRet);
 | ||
|  | // 		for (int i=0;i<iRet;i++)
 | ||
|  | // 		{
 | ||
|  | // 			strRet[i] = pRecv[i];
 | ||
|  | // 		}
 | ||
|  | // 		delete pRecv;
 | ||
|  | // 	}
 | ||
|  | // 	return strRet;
 | ||
|  | } | ||
|  | 
 | ||
|  | int CZZ_SeiralPort_QT::Write(const std::string strSend) | ||
|  | { | ||
|  | 	QByteArray qbaTest(strSend.c_str(),(int)strSend.length()); | ||
|  | 	qint64 qi64Write = m_pSerialPort->write(qbaTest); | ||
|  | 	m_pSerialPort->waitForBytesWritten(5000); | ||
|  | 	if (qi64Write != qbaTest.size()) | ||
|  | 	{ | ||
|  | 		qDebug() << "Err:write Failed.Exit Code:1" << qi64Write; | ||
|  | 		return qi64Write; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	return 0; | ||
|  | // 	char* pcSend = (char*)strSend.c_str();
 | ||
|  | // 	int iRet = sio_write(m_piSettings.iPortNumber, pcSend, (int)strSend.length());
 | ||
|  | // 
 | ||
|  | // 	//delete pcSend;
 | ||
|  | // 	if (iRet!= (int)strSend.length())
 | ||
|  | // 	{
 | ||
|  | // 		return iRet;
 | ||
|  | // 	}
 | ||
|  | // 	else
 | ||
|  | // 	{
 | ||
|  | // 		return 0;
 | ||
|  | // 	}
 | ||
|  | // 	//sio_write();
 | ||
|  | } |