예제 #1
0
/**
 *	@sn	int InitComm(void)
 *	@param	initialize the AUX1 to BPS57600, DB8,STOP1,NP
 *	@return	void
 */
int InitComm(void)
{
	return initaux(AUX1, BPS57600, DB8 | STOP1 | NP);
}
예제 #2
0
int Board_Txn(char* pszData, int* pnDataLen, char cCommandReq, char cCommandResp)
{
	char szData[BOARD_MAX_SIZE];
	int nDataLen = 0;
	int nRet = 0;
	int nLen = 0;
//	static char cFlag = 0;
	STCOMMPARAM stPubCommParam;


	memset(szData, 0, sizeof(szData));
	memcpy(szData, pszData, *pnDataLen);
	Board_Pack(cCommandReq, szData, pnDataLen);
#if 0
	if (!cFlag)
	{
		nRet = initaux(BOARD_PORT, BPS115200, DB8|STOP1|NP);
		if (nRet != 0)
		{
			PubMsgDlg("初始化串口", "初始化串口失败", 3, 10);
			return APP_FAIL;
		}
		cFlag = 1;
	}
#endif

	memset(&stPubCommParam, 0, sizeof(stPubCommParam));
	stPubCommParam.cCommType = COMMTYPE_PORT;
	stPubCommParam.ConnInfo.stPortParam.nAux = BOARD_PORT;
	strcpy(stPubCommParam.ConnInfo.stPortParam.szAttr, "115200");
	stPubCommParam.cPreDialFlag = 0;
	stPubCommParam.nTimeOut = 10;
	stPubCommParam.cIsSupportQuitRecv = 1; // 1接收的时候可退出

	nRet = PubCommInit(&stPubCommParam);
	if (nRet != APP_SUCC)
	{
		return APP_FAIL;
	}
	SetControlCommInit();/**<要求需要初始化通讯模块*/
#if 0
	clrportbuf(BOARD_PORT, 0);
	clrportbuf(BOARD_PORT, 1);
	nRet = portwrite(BOARD_PORT, *pnDataLen, szData);
	if (nRet < 0)
	{
		return APP_FAIL;
	}
#endif

	PubCommConnect();

	if(PubCommWrite(szData, *pnDataLen) == APP_FAIL)
	{
		PubMsgDlg(NULL, "串口数据发送失败", 3, 60);
		PubCommHangUp();
		return APP_FAIL;
	}

	
	memset(szData, 0, sizeof(szData));
	while(1)
	{
		szData[0] = 0;
		nRet = PubCommRead((char *)szData, 1, &nLen);
		if (APP_QUIT == nRet)
		{
			PubCommHangUp();
			return APP_TIMEOUT;
		}
		if (nRet == APP_FAIL)
		{
			PubCommHangUp();
			return APP_QUIT;
		}
		if (nLen != 1)
		{
			break;
		}
		if (szData[0] == STX)
		{
			break;
		}
	}
	if (szData[0] == STX)
	{
		nRet = PubCommRead((char *)szData+1, 2, &nLen);
		if (APP_SUCC != nRet)
		{
			PubCommHangUp();
			return APP_QUIT;
		}
		if (nLen != 2)
		{
			PubMsgDlg("接收", "接收失败1", 3, 10);
			PubCommHangUp();
			return APP_FAIL;
		}
		nDataLen = 2;
		PubC2ToInt((unsigned int *)&nDataLen, (unsigned char *)szData + 1);
		{
			int nOff=0;
			int nTmpLen = 0;
			nTmpLen = nDataLen + 1;
			while(1)
			{
				if(nLen <= MAX_RECV)
				{
					nRet = PubCommRead((char *)szData+3+nOff,nTmpLen, &nLen);
					if (APP_SUCC != nRet)
					{
						PubCommHangUp();
						return APP_QUIT;
					}
					if (nLen != nTmpLen)
					{
						PubCommHangUp();
						return APP_FAIL;
					}
					break;
				}
				else
				{
					nRet = PubCommRead((char *)szData+3+nOff,MAX_RECV, &nLen);
					if (APP_SUCC != nRet)
					{
						PubCommHangUp();
						return APP_QUIT;
					}
					if (nLen != MAX_RECV)
					{
						PubCommHangUp();
						return APP_FAIL;
					}
					nLen -= MAX_RECV;
					nOff += MAX_RECV;
				}
			}
		}
/*
		nRet = portread(BOARD_PORT, nDataLen+1, (char *)szData+3, nTimeOut);
		if (nRet == QUIT)
		{
			return APP_QUIT;
		}
		if (nRet != nDataLen+1)
		{
			return APP_FAIL;
		}
*/
	}
	else
	{

		PubMsgDlg("接收", "接收失败3", 3, 10);
		PubCommHangUp();
		return APP_FAIL;
	}
	*pnDataLen = nDataLen+4;

{
//	char szTemp[BOARD_MAX_SIZE*2];
//	PubHexToAsc((unsigned char*)szData, (*pnDataLen)*2, 0, (unsigned char*)szTemp);
	}

	Board_UnPack(szData, (unsigned int *)pnDataLen);
{
//	char szTemp[BOARD_MAX_SIZE*2];
//	PubHexToAsc((unsigned char*)szData, (*pnDataLen)*2, 0, (unsigned char*)szTemp);
	}

	PubCommHangUp();
	if((cCommandReq == 0xA2) && szData[0] == 0xC2)
	{
		
		return APP_QUIT;
	}
	else if(szData[0] != cCommandResp)
	{
		return APP_FAIL;
	}
	(*pnDataLen)--;

	memcpy(pszData, &szData[1], *pnDataLen);
	return APP_SUCC;
}