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

📄 dbus.c

📁 C语言编写的监控中心终端程序。基于GPRS上传收发数据功能
💻 C
📖 第 1 页 / 共 3 页
字号:
	    EditKeyStep  = 0;
	}
    }
#endif
}

#ifdef SUPPORT_I2C_DEVICE
/****************************************************************
 *	EEPROM Load Init Data					*
 ****************************************************************/
void DBusInitLoadEEP()
{
    BYTE		CheckSum;
    BYTE		i;

    I2CRead24C02Array(EEP_ADR_ZONE_0, DBusEMapBuffer + EEP_ADR_ZONE_0, EEP_LEN_ZONE_0);
    if (DBusEMapBuffer[EEP_POS_ZONE_ID1] != EEP_VAL_ID1 ||
	DBusEMapBuffer[EEP_POS_ZONE_ID2] != EEP_VAL_ID2 ||
	DBusEMapBuffer[EEP_POS_ZONE_ID3] != EEP_VAL_ID3) {
	DBusInitSaveEEP(EEP_ADR_ZONE_0);
    }
    else {
	CheckSum = 0;

	I2CRead24C02Array(EEP_ADR_ZONE_1, DBusEMapBuffer + EEP_ADR_ZONE_1,  EEP_LEN_ZONE_1);
	for (i = 0; i < EEP_LEN_ZONE_1; i++) CheckSum += DBusEMapBuffer[i + EEP_ADR_ZONE_1];
	I2CRead24C02Array(EEP_ADR_ZONE_2, DBusEMapBuffer + EEP_ADR_ZONE_2,  EEP_LEN_ZONE_2);
	for (i = 0; i < EEP_LEN_ZONE_2; i++) CheckSum += DBusEMapBuffer[i + EEP_ADR_ZONE_2];
	I2CRead24C02Array(EEP_ADR_ZONE_3, DBusEMapBuffer + EEP_ADR_ZONE_3,  EEP_LEN_ZONE_3);
	for (i = 0; i < EEP_LEN_ZONE_3; i++) CheckSum += DBusEMapBuffer[i + EEP_ADR_ZONE_3];
	I2CRead24C02Array(EEP_ADR_ZONE_4, DBusEMapBuffer + EEP_ADR_ZONE_4,  EEP_LEN_ZONE_4);
	for (i = 0; i < EEP_LEN_ZONE_4; i++) CheckSum += DBusEMapBuffer[i + EEP_ADR_ZONE_4];
	I2CRead24C02Array(EEP_ADR_ZONE_5, DBusEMapBuffer + EEP_ADR_ZONE_5,  EEP_LEN_ZONE_5);
	for (i = 0; i < EEP_LEN_ZONE_5; i++) CheckSum += DBusEMapBuffer[i + EEP_ADR_ZONE_5];

	if (CheckSum != DBusEMapBuffer[EEP_POS_ZONE_SUM]) {
	    DBusInitSaveEEP(EEP_ADR_ZONE_0);
	}
	else {
	    memcpy(DBusLineIDAdr, DBusEMapBuffer + EEP_POS_LINE_ID,	DBUS_LINE_ID_MAX);
	    memcpy(DBusDBusIDAdr, DBusEMapBuffer + EEP_POS_DBUS_ID,	DBUS_DBUS_ID_MAX);
	    memcpy(DBusUserIDAdr, DBusEMapBuffer + EEP_POS_USER_ID,	DBUS_USER_ID_MAX);
	    memcpy(DBusLinkIP,	  DBusEMapBuffer + EEP_POS_LINK_IP,	DBUS_LINK_IP_LEN);
	    memcpy(DBusSuperCode, DBusEMapBuffer + EEP_POS_SUPER_CODE,	DBUS_CODE_IN_LEN);
	    memcpy(DBusGuestCode, DBusEMapBuffer + EEP_POS_GUEST_CODE,	DBUS_CODE_IN_LEN);
	    memcpy(DBusVoiceSet,  DBusEMapBuffer + EEP_POS_VOICE_SET,	DBUS_VOICE_SET_LEN);

	    DBusNoteType = DBusEMapBuffer[EEP_POS_NOTE_TYPE];
	    DBusNaviType = DBusEMapBuffer[EEP_POS_NAVI_TYPE];
	    DBusNaviTime = DBusEMapBuffer[EEP_POS_NAVI_TIME];
	}
    }

    CheckSum = 0;
    I2CRead24C02Array(EEP_ADR_DIST_0, DBusEMapBuffer + EEP_ADR_DIST_0, EEP_LEN_DIST_0);
    for (i = EEP_POS_DIST_VCD; i < EEP_ADR_DIST_0 + EEP_LEN_DIST_0; i++)
	CheckSum += DBusEMapBuffer[i];
    if (DBusEMapBuffer[EEP_POS_DIST_ID0] != EEP_VAL_ID0 ||
	CheckSum != DBusEMapBuffer[EEP_POS_DIST_SUM]) {
	DBusInitSaveEEP(EEP_ADR_DIST_0);
    }
    else {
	memcpy(DBusVCDDist, DBusEMapBuffer + EEP_POS_DIST_VCD, DBUS_VCDDIST_LEN);
    }

    I2CRead24C02Array(EEP_ADR_GPRS_0, DBusEMapBuffer + EEP_ADR_GPRS_0, EEP_LEN_GPRS_0);
    if (DBusEMapBuffer[EEP_POS_GPRS_ID4] != EEP_VAL_ID4) {
	DBusInitSaveEEP(EEP_ADR_GPRS_0);
    }
    else {
	CheckSum = 0;
	for (i = EEP_POS_EDIT_FLAG; i < EEP_ADR_GPRS_0 + EEP_LEN_GPRS_0; i++)
	    CheckSum += DBusEMapBuffer[i];
	I2CRead24C02Array(EEP_ADR_GPRS_1, DBusEMapBuffer + EEP_ADR_GPRS_1,  EEP_LEN_GPRS_1);
	for (i = 0; i < EEP_LEN_GPRS_1; i++) CheckSum += DBusEMapBuffer[i + EEP_ADR_GPRS_1];
	if (CheckSum != DBusEMapBuffer[EEP_POS_GPRS_SUM]) {
	    DBusInitSaveEEP(EEP_ADR_GPRS_0);
	}
	else {
	    DBusFlagDrawEdit = DBusEMapBuffer[EEP_POS_EDIT_FLAG];
	    DBusVideoVCD     = DBusEMapBuffer[EEP_POS_VIDEO_VCD];
	    DBusVideoVCR     = DBusEMapBuffer[EEP_POS_VIDEO_VCR];
	    strcpylen(DBusGPRSIPStr, DBusEMapBuffer + EEP_POS_GPRS_NAME, DBUS_GPRS_IP_LEN);
	}
    }
}

/****************************************************************
 *	EEPROM Save Init Data					*
 ****************************************************************/
void DBusInitSaveEEP(BYTE Zone)
{
    BYTE		CheckSum;
    BYTE		i;

    CheckSum = 0;

    if (Zone == EEP_ADR_ZONE_0) {
	memcpy(DBusEMapBuffer + EEP_POS_LINE_ID, DBusLineIDAdr, DBUS_LINE_ID_MAX);
	memcpy(DBusEMapBuffer + EEP_POS_DBUS_ID, DBusDBusIDAdr, DBUS_DBUS_ID_MAX);
	memcpy(DBusEMapBuffer + EEP_POS_USER_ID, DBusUserIDAdr, DBUS_USER_ID_MAX);
	I2CWrite24C02Array(EEP_ADR_ZONE_1, DBusEMapBuffer + EEP_ADR_ZONE_1, EEP_LEN_ZONE_1);
	for (i = 0; i < EEP_LEN_ZONE_1; i++) CheckSum += DBusEMapBuffer[i + EEP_ADR_ZONE_1];

	memcpy(DBusEMapBuffer + EEP_POS_LINK_IP, DBusLinkIP, DBUS_LINK_IP_LEN);
	DBusEMapBuffer[EEP_POS_NOTE_TYPE] = DBusNoteType;
	DBusEMapBuffer[EEP_POS_NAVI_TYPE] = DBusNaviType;
	I2CWrite24C02Array(EEP_ADR_ZONE_2, DBusEMapBuffer + EEP_ADR_ZONE_2, EEP_LEN_ZONE_2);
	for (i = 0; i < EEP_LEN_ZONE_2; i++) CheckSum += DBusEMapBuffer[i + EEP_ADR_ZONE_2];

	memcpy(DBusEMapBuffer + EEP_POS_SUPER_CODE, DBusSuperCode, DBUS_CODE_IN_LEN);
	DBusEMapBuffer[EEP_POS_NAVI_TIME] = DBusNaviTime;
	I2CWrite24C02Array(EEP_ADR_ZONE_3, DBusEMapBuffer + EEP_ADR_ZONE_3, EEP_LEN_ZONE_3);
	for (i = 0; i < EEP_LEN_ZONE_3; i++) CheckSum += DBusEMapBuffer[i + EEP_ADR_ZONE_3];

	memcpy(DBusEMapBuffer + EEP_POS_GUEST_CODE, DBusGuestCode, DBUS_CODE_IN_LEN);
	I2CWrite24C02Array(EEP_ADR_ZONE_4, DBusEMapBuffer + EEP_ADR_ZONE_4, EEP_LEN_ZONE_4);
	for (i = 0; i < EEP_LEN_ZONE_4; i++) CheckSum += DBusEMapBuffer[i + EEP_ADR_ZONE_4];

	memcpy(DBusEMapBuffer + EEP_POS_VOICE_SET, DBusVoiceSet, DBUS_VOICE_SET_LEN);
	I2CWrite24C02Array(EEP_ADR_ZONE_5, DBusEMapBuffer + EEP_ADR_ZONE_5, EEP_LEN_ZONE_5);
	for (i = 0; i < EEP_LEN_ZONE_5; i++) CheckSum += DBusEMapBuffer[i + EEP_ADR_ZONE_5];

	DBusEMapBuffer[EEP_POS_ZONE_ID1] = EEP_VAL_ID1;
	DBusEMapBuffer[EEP_POS_ZONE_ID2] = EEP_VAL_ID2;
	DBusEMapBuffer[EEP_POS_ZONE_ID3] = EEP_VAL_ID3;
	DBusEMapBuffer[EEP_POS_ZONE_SUM] = CheckSum;
	I2CWrite24C02Array(EEP_ADR_ZONE_0, DBusEMapBuffer + EEP_ADR_ZONE_0, EEP_LEN_ZONE_0);
    }
    else
    if (Zone == EEP_ADR_DIST_0) {
	memcpy(DBusEMapBuffer + EEP_POS_DIST_VCD, DBusVCDDist, DBUS_VCDDIST_LEN);
	for (i = EEP_POS_DIST_VCD; i < EEP_ADR_DIST_0 + EEP_LEN_DIST_0; i++)
	    CheckSum += DBusEMapBuffer[i];
	DBusEMapBuffer[EEP_POS_DIST_ID0] = EEP_VAL_ID0;
	DBusEMapBuffer[EEP_POS_DIST_SUM] = CheckSum;
	I2CWrite24C02Array(EEP_ADR_DIST_0, DBusEMapBuffer + EEP_ADR_DIST_0, EEP_LEN_DIST_0);
    }
    else
    if (Zone == EEP_ADR_GPRS_0) {
	memcpy(DBusEMapBuffer + EEP_POS_GPRS_NAME, DBusGPRSIPStr, DBUS_GPRS_IP_LEN);
	I2CWrite24C02Array(EEP_ADR_GPRS_1, DBusEMapBuffer + EEP_ADR_GPRS_1, EEP_LEN_GPRS_1);
	for (i = 0; i < EEP_LEN_GPRS_1; i++) CheckSum += DBusEMapBuffer[i + EEP_ADR_GPRS_1];
	DBusEMapBuffer[EEP_POS_EDIT_FLAG] = DBusFlagDrawEdit;
	DBusEMapBuffer[EEP_POS_VIDEO_VCD] = DBusVideoVCD;
	DBusEMapBuffer[EEP_POS_VIDEO_VCR] = DBusVideoVCR;
	for (i = EEP_POS_EDIT_FLAG; i < EEP_ADR_GPRS_0 + EEP_LEN_GPRS_0; i++)
	    CheckSum += DBusEMapBuffer[i];
	DBusEMapBuffer[EEP_POS_GPRS_ID4 ] = EEP_VAL_ID4;
	DBusEMapBuffer[EEP_POS_GPRS_SUM ] = CheckSum;
	I2CWrite24C02Array(EEP_ADR_GPRS_0, DBusEMapBuffer + EEP_ADR_GPRS_0, EEP_LEN_GPRS_0);
    }
}

/****************************************************************
 *	EEPROM Save 1-Byte Data					*
 ****************************************************************/
void DBusByteSaveEEP(BYTE Addr, BYTE Data)
{
    BYTE		CheckSum;

    if (Addr >= EEP_ADR_ZONE_0 && Addr < EEP_ADR_ZONE_5 + EEP_LEN_ZONE_5) {
	CheckSum = DBusEMapBuffer[EEP_POS_ZONE_SUM] - DBusEMapBuffer[Addr] + Data;
	DBusEMapBuffer[Addr] = Data;
	I2CWrite24C02( Addr,   Data);
	DBusEMapBuffer[EEP_POS_ZONE_SUM] = CheckSum;
	I2CWrite24C02( EEP_POS_ZONE_SUM,   CheckSum);
    }
    else
    if (Addr >= EEP_ADR_DIST_0 && Addr < EEP_ADR_DIST_0 + EEP_LEN_DIST_0) {
	CheckSum = DBusEMapBuffer[EEP_POS_DIST_SUM] - DBusEMapBuffer[Addr] + Data;
	DBusEMapBuffer[Addr] = Data;
	I2CWrite24C02( Addr,   Data);
	DBusEMapBuffer[EEP_POS_DIST_SUM] = CheckSum;
	I2CWrite24C02( EEP_POS_DIST_SUM,   CheckSum);
    }
    else
    if (/* Addr >= EEP_ADR_GPRS_0 && */ Addr < EEP_ADR_GPRS_1 + EEP_LEN_GPRS_1) {
	CheckSum = DBusEMapBuffer[EEP_POS_GPRS_SUM] - DBusEMapBuffer[Addr] + Data;
	DBusEMapBuffer[Addr] = Data;
	I2CWrite24C02( Addr,   Data);
	DBusEMapBuffer[EEP_POS_GPRS_SUM] = CheckSum;
	I2CWrite24C02( EEP_POS_GPRS_SUM,   CheckSum);
    }
}

/****************************************************************
 *	EEPROM Save n-Byte Data					*
 ****************************************************************/
void DBusDataSaveEEP(BYTE Addr, BYTE *Data, BYTE Size)
{
    UINT16		CheckPos;
    BYTE		CheckSum;
    BYTE		i;

    if (Size == 0 || (Addr & 0x07) + Size > 8)	return;

    if (Addr >= EEP_ADR_ZONE_0 && Addr < EEP_ADR_ZONE_5 + EEP_LEN_ZONE_5)
	CheckPos = EEP_POS_ZONE_SUM;
    else
    if (Addr >= EEP_ADR_DIST_0 && Addr < EEP_ADR_DIST_0 + EEP_LEN_DIST_0)
	CheckPos = EEP_POS_DIST_SUM;
    else
    if (/* Addr >= EEP_ADR_GPRS_0 && */ Addr < EEP_ADR_GPRS_1 + EEP_LEN_GPRS_1)
	CheckPos = EEP_POS_GPRS_SUM;
    else
	return;

    CheckSum = DBusEMapBuffer[CheckPos];
    for (i = 0; i < Size; i++) {
	CheckSum -= DBusEMapBuffer[Addr + i];
	DBusEMapBuffer[Addr + i] = Data[i];
	CheckSum += DBusEMapBuffer[Addr + i];
    }
    I2CWrite24C02Array(Addr, DBusEMapBuffer + Addr, Size);
    DBusEMapBuffer[CheckPos] = CheckSum;
    I2CWrite24C02( CheckPos,   CheckSum);
}
#endif

/************************************************************************
 *	Polling DBus Process						*
 ************************************************************************/
void PollingDBus()
{
    BYTE		i;

    if (GBusResetGPS) {
	GBusResetGPS = FALSE;

	DSASendSoftVer();
	DSASendVCDDist();
	DSASendData(COMM_BUS_GPSTIME, DBusNaviTime);
	DSASendData(COMM_BUS_HAVEVCD, DBusVideoVCD);
	DSASendData(COMM_BUS_SETDOOR, DBusVideoVCR);
    }
    if (GBusResetGSM) {
	GBusResetGSM = FALSE;
    }

    if (DBusWaitUserID) {
	return;
    }

    if (DBusInitGPRS != GSMInitGPRS) {
	DBusInitGPRS  = GSMInitGPRS;
	DBusShowGSMInitGPRS = TRUE;
    }
    if (DBusLinkGPRS != GSMLinkGPRS) {
	DBusLinkGPRS  = GSMLinkGPRS;
	DBusShowGSMLinkGPRS = TRUE;
    }

    if (DBusDoneUserID) {
	DBusDoneUserID = FALSE;
	switch (DBusTypeUserID) {
	case TASK_DUTY_START:
	    DSASendData(COMM_BUS_TASKICQ, 0x00);
	    break;
	}
	DBusTaskID = DBusTypeUserID;
	DBusMakeGPRSLink();
    }
    if (DBusFlagGPSMode) {
	DBusFlagGPSMode = FALSE;
	if (DBusNaviMode !=  GBusGPSMode) {
	    DBusNaviMode  = (GBusGPSMode == 'A') ? TYPE_MODE_AUTO : TYPE_MODE_MANUAL;
	    strcpy(DBusNaviModeStr, DBusDefineGPSMode[DBusNaviMode]);
	    DBusNaviMode  =  GBusGPSMode;

#ifdef SUPPORT_VOICE
	    switch (DBusNaviMode) {
	    case 'A': VoiceSendQuene("现在是自动报站", VOICE_LEVEL_1);	break;
	    case 'M': VoiceSendQuene("请手工报站", VOICE_LEVEL_1);	break;
	    }
#endif
	}
	DBusShowGPSModeName = TRUE;
    }
    if (DBusFlagGPSInfo) {
	DBusFlagGPSInfo = FALSE;
	memcpy(DBusGPSInfo, GBusGPSInfo, GBUS_GPSINFO_SIZE);
	DBusShowRealTimeStr = TRUE;
	if (DBusLinkGPRS) {
	    DBusMakeDataFI(GBusGPSInfo, IDU_INFO);
	}
    }
    if (DBusFlagGPSTask) {
	DBusFlagGPSTask = FALSE;
	DBusMakeDataFI(GBusGPSTask, IDU_TASK);
    }
    if (DBusFlagGPSCome) {
	DBusFlagGPSCome = FALSE;
#ifdef SUPPORT_BUS_DEVICE
	GBusGPSComeReach = 0xFF;		// Default value
	GBusGPSComeLeave = 0xFF;

	if (DBusFlagDoneTail) {
	    DBusFlagDoneTail = FALSE;
	    if (DBusCNTTailDir  == DBusGPSTailDir &&
		DBusCNTTailStop == DBusGPSTailStop) {
		GBusGPSComeReach = DBusCNTTailReach;
		GBusGPSComeLeave = DBusCNTTailLeave;
	    }
	}
	else
	if (DBusFlagWaitTail) {
	    DBusFlagWaitTail = FALSE;
	}
#endif
	DBusMakeDataFI(GBusGPSCome, IDU_COME);
#ifdef SUPPORT_USART_SHOW
	DBusEditSetColor(MAP_COLOR_MAGENTA);
	psprintf(LineBuffer, "-Come:%02x,%02x-", GBusGPSComeReach, GBusGPSComeLeave);
	DBusEditShowText(LineBuffer);
#endif
    }
    if (DBusFlagGPSAway) {
	DBusFlagGPSAway = FALSE;
	DBusMakeDataFI(GBusGPSAway, IDU_AWAY);
#ifdef SUPPORT_USART_SHOW
	DBusEditSetColor(MAP_COLOR_MAGENTA);
	DBusEditShowText("-Away-");
#endif
    }
    if (DBusFlagGPSOver) {
	DBusFlagGPSOver = FALSE;
	DBusMakeDataFI(GBusGPSOver, IDU_OVER);
	if (GBusGPSOverType) {
	    if (!DBusInfoState()) {
		InfoWaitInput = FALSE;
		DBusInfoEnter(IDE_SPEED);
	    }
#ifdef SUPPORT_VOICE
	    psprintf(LineBuffer, "请注意,你现在超速行驶");
	    VoiceSendQuene(LineBuffer, VOICE_LEVEL_1);
#endif
	}
    }
    if (DBusFlagGPSTail) {
	DBusFlagGPSTail	= FALSE;
	memcpy(DBusGPSTail, GBusGPSTail, DBUS_GPSTAIL_SIZE);
#ifdef SUPPORT_BUS_DEVICE
	BUSSendCNTTail();
	DBusFlagWaitTail = TRUE;
	DBusFlagDoneTail = FALSE;
#endif
#ifdef SUPPORT_USART_SHOW
	DBusEditSetColor(MAP_COLOR_MAGENTA);
	psprintf(LineBuffer, "-Tail:%02x,%02x-", DBusGPSTailDir, DBusGPSTailStop);
	DBusEditShowText(LineBuffer);
#endif
    }
    if (DBusFlagGPSLine) {
	DBusFlagGPSLine = FALSE;
	DBusMakeDataFI(GBusGPSLine, IDU_LINE);
	if (GBusGPSLineType) {
	    if (!DBusInfoState()) {
		InfoWaitInput = FALSE;
		DBusInfoEnter(IDE_LEAVE);
	    }
#ifdef SUPPORT_VOICE
	    psprintf(LineBuffer, "请注意,你现在偏离线路");
	    VoiceSendQuene(LineBuffer, VOICE_LEVEL_1);
#endif
	}
    }
    if (DBusFlagDirLine) {
	DBusFlagDirLine = FALSE;
	strcpy(DBusLineName, DBusLineIDStr);
	if (GBusLineDir == 'U')		strncat(DBusLineName, "-上行");
	else				strncat(DBusLineName, "-下行");
	DBusShowLineName = TRUE;
    }
    if (DBusFlagStation) {
	DBusFlagStation = FALSE;
	strcpy(DBusStationPrev, DBusStationNext);
	strcpy(DBusStationNext, GBusStationName);

#ifdef SUPPORT_VOICE
	if (DBusStationNext[0]) {
	    psprintf(LineBuffer, "下一站:%s", DBusStationNext);
	    VoiceSendQuene(LineBuffer, VOICE_LEVEL_1);
	}
#endif
	DBusShowStationName = TRUE;
    }
    if (DBusFlagSetLine) {
	DBusFlagSetLine = FALSE;

	for (i = 0; i < GBusLineSize; i++) {
	    if (strcmp(DBusLineIDStr, GBusLineList + i * GBUS_SETLINE_SIZE) == 0) {
		GBusLineAddr = i;
		break;
	    }
	}
	if (GBusLineSize && i >= GBusLineSize) {
	    GBusLineAddr = 0;
	    strcpy(DBusLineIDStr, GBusLineList + 0 * GBUS_SETLINE_SIZE);
	    DBusLineID = Str2Dec(DBusLineIDStr) * 3;
#ifdef SUPPORT_I2C_DEVICE
	    DBusDataSaveEEP(EEP_POS_LINE_ID, DBusLineIDAdr, DBUS_LINE_ID_MAX);
#endif
	    strcpy(DBusLineName, DBusLineIDStr);
	    DBusShowLineName = TRUE;
	}
	DSASendBusLine();
#ifdef SUPPORT_USART_SHOW
	DBusEditSetColor(MAP_COLOR_MAGENTA);
	psprintf(LineBuffer, "-Init:%02x,%02x-", GBusLineSize, DBusNaviTime);
	DBusEditShowText(LineBuffer);
#endif
    }
    if (DBusFlagSoftVer) {
	DBusFlagSoftVer	= FALSE;
#ifdef SUPPORT_USART_SHOW
	DBusEditSetColor(MAP_COLOR_MAGENTA);
	DBusEditShowText(GBusSoftVer);
#endif
	if (!DBusVerifyVersion(GBusSoftVer)) {
	    MapShowErrorText("系统软件版本错误");
	    while (1) { polling(); }
	}
    }

    if (!DBusNoteFIFOEmpty() && !DBusBPopState()) {
	DBusMakeNoteFO(DBusDataBuffer);
	DBusBPopMission(DBusDataBuffer);
#ifdef SUPPORT_VOICE
	VoiceSendQuene(DBusDataBuffer, VOICE_LEVEL_1);
#endif
    }

    if (InfoWaitInput && !DBusInfoState()) {
	InfoWaitInput = FALSE;
	if (InfoExitInput) {
	    switch (DBusTaskType) {
	    case IDE_BLOCK:
	    case IDE_ACCIDENT:
	    case IDE_FAILURE:
	    case IDE_ALARM:
	    case IDE_BOTHER:
		DSASendData(COMM_BUS_GPSTASK, DBusTaskType);
		break;
	    case IDE_STOP:
		strcpy(DBusLineName, DBusLineIDStr);
		strcpy(DBusStationPrev, "");
		strcpy(DBusStationNext, "");
		DBusShowLineName = TRUE;
		DBusShowStationName = TRUE;
		DSASendData(COMM_BUS_TASKEND, 0x00);
		DBusTaskID = TASK_DUTY_OFF;
		DBusMakeGPRSLink();
		break;
	    }
	}
    }

    if (TaskWaitInput && !DBusTaskState()) {	// Add by FC at 04-12-07
	TaskWaitInput = FALSE;
	if (TaskExitInput) {
	    DSASendData(COMM_BUS_GPSTASK, DBusTaskType);

	    switch (DBusTaskType) {
	    case IDE_DUTYOFF:
		DBusTaskID = TASK_DUTY_OFF;
		DBusMakeGPRSLink();
		break;
	    case IDE_DUTYON:
		DBusTypeUserID = TASK_DUTY_ON;
		break;
	    case IDE_DUTYCHANGE:
		DBusTypeUserID = TASK_DUTY_CHANGE;
		break;
	    }

	    switch (DBusTaskType) {
	    case IDE_DUTYON:
	    case IDE_DUTYCHANGE:
		DBusWaitUserID = TRUE;
		BPopPageIndex  = BPOP_USER_ID;
		DBusBPopEnter();
		break;
	    }
	}
    }

    if (DBusFlagUpLoad) {
    }
    else
    if (DBusDoneUpLoad) {
	if (!DBusDataFIFOEmpty()) {
	    DBusMakeDataFO(DBusDataToSend);
	    DBusMakeDataUpLoad();
	}
    }

    if (DBusFlagDrawMenu) {
	DBusFlagDrawMenu = FALSE;
	DBusMenuRefresh();
    }
}

#endif	SUPPORT_DBUS_FUNCTION

⌨️ 快捷键说明

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