⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 car_sim300.c

📁 GPRS-GPS车载机控制源码
💻 C
📖 第 1 页 / 共 5 页
字号:
	if(W_InSerial  ==  W_OutSerial)//没有字节内容可读取
	{
		//vOpenINTR();//开中断
		return 0x0100;//返回无意义的值(凡是高子节不为零的数都是无意义的值
	}

	bTByte  = B_SerialQueue[W_OutSerial];
	if(++W_OutSerial == MAX_SERIAL_LEN) W_OutSerial = 0; //修改指针边界
	//vOpenINTR();//开中断
	return   ((WORD)bTByte);					   
}



/******************************************************************************
**函 数 名  :     wGetSerialUnReadBytes
**功能简介  :     获取MCU串口1缓冲中当前未读的字节数目
**参数说明  :     无
**调用函数  :     vCloseINTR(),vOpenINT()
**被调用函数:     暂无
**全局变量  :     W_InSerial, W_OutSerial
**返 回 值  :     WORD类型,为未读出的字节数
**函数版本  :     V1.00.00
**修改时间  :     2007-01-27
******************************************************************************/
WORD  wGetSerialUnReadBytes(void)
{
	WORD	wTemp,wTemp1,wTemp2;
	
	//vCloseINTR();//关中断
	wTemp1 = W_InSerial;
	wTemp2 = W_OutSerial;
	//vOpenINTR();
	if(wTemp1 >= wTemp2)wTemp = wTemp1 - wTemp2;
	else                wTemp = wTemp1 + MAX_SERIAL_LEN - wTemp2;

	return (wTemp);

}


/******************************************************************************
**函 数 名  :     vSendSerialByte
**功能简介  :     从MCU串口1发送一字符
**参数说明  :     bParaCh-待发送的字节
**调用函数  :     无
**被调用函数:     vSendSerialString,vSendSerialChars
**全局变量  :     无
**返 回 值  :     无
**函数版本  :     V1.00.00
**修改时间  :     2007-01-27
******************************************************************************/
void  vSendSerialByte(BYTE bParaCh)
{
	/*
	SBUF = bParaCh;
	while(!TI){    }
	TI = 0;
	*/
	SendChar2(bParaCh);
	
}

/******************************************************************************
**函 数 名  :     vSendSerialString
**功能简介  :     从MCU串口1发送一字符串
**参数说明  :     *pstrPara-指向待发送的字符串
**调用函数  :     vSendSerialByte
**被调用函数:     暂无
**全局变量  :     无
**返 回 值  :     无
**函数版本  :     V1.00.00
**修改时间  :     2007-01-27
******************************************************************************/
void  vSendSerialString(BYTE   *pstrPara)
{
  BYTE *pstrTemp;

	pstrTemp = pstrPara;
	while( (*pstrTemp != 0x00) && (*pstrTemp != 0x0d) )
	{
		vSendSerialByte(*pstrTemp++);
	}
	vSendSerialByte(0x0d);
}
//=================================================================================================

/******************************************************************************
**函 数 名  :     vSendNULLString
**功能简介  :     从MCU串口1发送一字符串
**参数说明  :     *pstrPara-指向待发送的字符串
**调用函数  :     vSendSerialByte
**被调用函数:     暂无
**全局变量  :     无
**返 回 值  :     无
**函数版本  :     V1.00.00
**修改时间  :     2007-01-27
******************************************************************************/
void  vSendNULLString(BYTE   *pstrPara, WORD wStrLen)
{
  BYTE *pstrTemp;
  WORD wI;
  
	pstrTemp = pstrPara;
	for(wI=0;wI<wStrLen;wI++)
	{
		vSendSerialByte(*pstrTemp++);
	}
	
}
//=================================================================================================



///////////////////////////
//modify

/******************************************************************************
**函 数 名  :     vMcuSerialIntr2
**功能简介  :     MCU串口1中断服务函数
**参数说明  :     无
**调用函数  :     无
**被调用函数:     无
**全局变量  :     W_InSerial, W_OutSerial
**返 回 值  :     无
**函数版本  :     V1.00.00
**修改时间  : 	   2007-01-27
******************************************************************************/
/*
void vMcuSerialIntr2(void) interrupt  SERIAL2_INT_NUM   //9
{
  BYTE bTByte2;
  WORD wTPsn2;
    
	if( (SCON2 & 0x01) == 0x01)        //接收中断服务函数
    {
		SCON2 &= 0xfe; //位清零
		bTByte2  =  SBUF2;//最好先读一下
		wTPsn2  =  W_InSerial2;
		if(++wTPsn2 ==  MAX_SERIAL_LEN2) wTPsn2  =  0;//修改指针边界
        if(wTPsn2  !=  W_OutSerial2)//队列没有满的情况下
        {
            B_SerialQueue2[W_InSerial2]  =  bTByte2;
            W_InSerial2  =  wTPsn2;
        }    
    }
}
*/




/******************************************************************************
**函 数 名  :     wReadSerial2
**功能简介  :     读MCU串口1缓冲中的一个字节
**参数说明  :     无
**调用函数  :     vCloseINTR(),vOpenINT()
**被调用函数:     暂无
**全局变量  :     W_InSerial2, W_OutSerial2
**返 回 值  :     WORD类型,为读出一字节内容
**函数版本  :     V1.00.00
**修改时间  :     2007-01-27
******************************************************************************/
WORD  wReadSerial2(void)
{
	BYTE	bTByte2;
	
	//vCloseINTR();//关中断
	if(W_InSerial2  ==  W_OutSerial2)//没有字节内容可读取
	{
		//vOpenINTR();//开中断
		return 0x0100;//返回无意义的值(凡是高子节不为零的数都是无意义的值
	}

	bTByte2  = B_SerialQueue2[W_OutSerial2];
	if(++W_OutSerial2 == MAX_SERIAL_LEN2) W_OutSerial2 = 0; //修改指针边界
	//vOpenINTR();//开中断
	return   ((WORD)bTByte2);					   
}



/******************************************************************************
**函 数 名  :     wGetSerialUnReadBytes2
**功能简介  :     获取MCU串口1缓冲中当前未读的字节数目
**参数说明  :     无
**调用函数  :     vCloseINTR(),vOpenINT()
**被调用函数:     暂无
**全局变量  :     W_InSerial2, W_OutSerial2
**返 回 值  :     WORD类型,为未读出的字节数
**函数版本  :     V1.00.00
**修改时间  :     2007-01-27
******************************************************************************/
WORD  wGetSerialUnReadBytes2(void)
{
	WORD	wTemp2,wTemp3,wTemp4;
	
	//vCloseINTR();//关中断
	wTemp3 = W_InSerial2;
	wTemp4 = W_OutSerial2;
	//vOpenINTR();
	if(wTemp3 >= wTemp4)wTemp2 = wTemp3 - wTemp4;
	else                wTemp2 = wTemp3 + MAX_SERIAL_LEN2 - wTemp4;

	return (wTemp2);

}


/******************************************************************************
**函 数 名  :     vSendSerialByte2
**功能简介  :     从MCU串口2发送一字符
**参数说明  :     bParaCh-待发送的字节
**调用函数  :     无
**被调用函数:     vSendSerialString2,vSendSerialChars2
**全局变量  :     无
**返 回 值  :     无
**函数版本  :     V1.00.00
**修改时间  :     2007-01-27
******************************************************************************/
void  vSendSerialByte2(BYTE bParaCh2)
{
	/*
	SBUF2 = bParaCh2;
	while( (SCON2 & 0x02) != 0x02 ){    }
	SCON2 &= 0xfd;//清零
	*/
	
	SendChar1(bParaCh2);
	
}

/******************************************************************************
**函 数 名  :     vSendSerialString2
**功能简介  :     从MCU串口2发送一字符串
**参数说明  :     *pstrPara2-指向待发送的字符串
**调用函数  :     vSendSerialByte2
**被调用函数:     暂无
**全局变量  :     无
**返 回 值  :     无
**函数版本  :     V1.00.00
**修改时间  :     2007-01-27
******************************************************************************/
void  vSendSerialString2(BYTE  *pstrPara2)
{
  BYTE *pstrTemp2;

	pstrTemp2 = pstrPara2;
	while( (*pstrTemp2 != 0x00) && (*pstrTemp2 != 0x0d) )
	{
		vSendSerialByte2(*pstrTemp2++);
	}
	vSendSerialByte2(0x0d);
	vSendSerialByte2(0x0a);
}
//=================================================================================================

/******************************************************************************
**函 数 名  :     vSendNULLString2
**功能简介  :     从MCU串口2发送一字符串
**参数说明  :     *pstrPara2-指向待发送的字符串
**调用函数  :     vSendSerialByte2
**被调用函数:     暂无
**全局变量  :     无
**返 回 值  :     无
**函数版本  :     V1.00.00
**修改时间  :     2007-01-27
******************************************************************************/
void  vSendNULLString2(BYTE  *pstrPara2, WORD wStrLen2)
{
  BYTE *pstrTemp2;
  WORD wI2;
  
	pstrTemp2 = pstrPara2;
	for(wI2=0;wI2<wStrLen2;wI2++)
	{
		if((wI2%50)==0)IWDG_ReloadCounter();//喂狗
		vSendSerialByte2(*pstrTemp2++);
	}
	
}
//=================================================================================================


/*
void vIinitGps(void)//初始化GPS
{
  WORD wI;

	for(wI = 0;wI < 32; wI++)
		vSendSerialByte2(bGPSIinitTable[wI]);
	
}
*/

void vIinitGps(void)//初始化GPS
{
  BYTE bI;
  
  	for(bI = 0; bI < 6; bI++)
  	{
  	    IWDG_ReloadCounter();//喂狗	
		vSendSerialString2(bGpsSet[bI]);
	}
	W_InSerial2  = 0;
	W_OutSerial2 = 0;

}

/******************************************************************************
**函 数 名  :     wReadTcpSerial
**功能简介  :     读MCU串口1缓冲中的一个字节
**参数说明  :     无
**调用函数  :     vCloseINTR(),vOpenINT()
**被调用函数:     暂无
**全局变量  :     W_InSerial, W_OutSerial
**返 回 值  :     WORD类型,为读出一字节内容
**函数版本  :     V1.00.00
**修改时间  :     2007-01-27
******************************************************************************/
WORD  wReadTcpSerial(void)
{
	BYTE	bTByte;
	
	if(W_TcpInSerial  ==  W_TcpOutSerial)//没有字节内容可读取
	{
		return 0x0100;//返回无意义的值(凡是高子节不为零的数都是无意义的值
	}

	bTByte  = B_TcpSerialQueue[W_TcpOutSerial];
	if(++W_TcpOutSerial == MAX_TCP_SERIAL_LEN) W_TcpOutSerial = 0; //修改指针边界
	return   ((WORD)bTByte);					   
}



/******************************************************************************
**函 数 名  :     wGetTcpSerialUnReadBytes
**功能简介  :     获取MCU串口1缓冲中当前未读的字节数目
**参数说明  :     无
**调用函数  :     vCloseINTR(),vOpenINT()
**被调用函数:     暂无
**全局变量  :     W_InSerial, W_OutSerial
**返 回 值  :     WORD类型,为未读出的字节数
**函数版本  :     V1.00.00
**修改时间  :     2007-01-27
******************************************************************************/
WORD  wGetTcpSerialUnReadBytes(void)
{
	WORD	wTemp,wTemp1,wTemp2;
	
	wTemp1 = W_TcpInSerial;
	wTemp2 = W_TcpOutSerial;
	if(wTemp1 >= wTemp2)wTemp = wTemp1 - wTemp2;
	else                wTemp = wTemp1 + MAX_TCP_SERIAL_LEN - wTemp2;

	return (wTemp);

}




//=================================================================================================
/******************************************************************************
**函 数 名  :     vInitEepromPara
**功能简介  :     写密码为默认值
**参数说明  :     无
**调用函数  :     bISP_IAP_ByteRead,vISP_IAP_ByteProgram
**被调用函数:     暂无
**全局变量  :     无
**返 回 值  :     无
**函数版本  :     V1.00.00
**修改时间  :     2007-02-05
******************************************************************************/
void vInitEepromPara(void)
{
  BYTE bI,bJ;
    	
  	if((bISP_IAP_ByteRead(CHECK_WORD_STAR_ADDR))!=CHECK_WORD1||(bISP_IAP_ByteRead(CHECK_WORD_STAR_ADDR + 1))!=CHECK_WORD2)
  	{
		
		
		vISP_IAP_ByteProgram(CHECK_WORD1, CHECK_WORD_STAR_ADDR);
		vISP_IAP_ByteProgram(CHECK_WORD2, CHECK_WORD_STAR_ADDR + 1);

		for(bI = 0; bI < MAX_PHONE_NUM; bI++)//使用默认密码
		{
			vISP_IAP_ByteProgram(B_DefaultPassWord[bI], PASSWORD_STAR_ADDR + bI);
			if(B_DefaultPassWord[bI] == 0x0)break;
		}		
				
		for(bI = 0; bI < MAX_PHONE_NUM; bI++)//使用默认服务器IP地址
		{
			vISP_IAP_ByteProgram(B_DefaultIP[bI], SEVER_IP_STAR_ADDR + bI);
			if(B_DefaultIP[bI] == 0x0)break;
		}
		
		for(bI = 0; bI < MAX_PHONE_NUM; bI++)//使用默认监控电话号码作为设备号
		{
			vISP_IAP_ByteProgram(B_DefaultMont[bI], DEVICE_PHONE_STAR_ADDR + bI);
			if(B_DefaultMont[bI] == 0x0)break;
		}		
		
		for(bI = 0; bI < MAX_PHONE_NUM; bI++)//使用默认监控电话号码
		{
			vISP_IAP_ByteProgram(B_DefaultMont[bI], MONT_PHONE_STAR_ADDR + bI);
			if(B_DefaultMont[bI] == 0x0)
			{
				vISP_IAP_B

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -