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

📄 dgc.c

📁 这是一个潜入式开发的c语言代码
💻 C
字号:
#include "stadx.h"
#include "gcontrol.h"
#include "gcalculate.h"
#include "netsend.h"
#include "gconfig.h"
#include <stdio.h>
#include <stdlib.h>

DIUCONFIG config;
FUART uartconf;
BYTE MAC[50] = {"0B-102394-225"};
BYTE key[16] = { 0X07,0X01,0X00,0X00,
				 0X00,0X00,0X00,0X1A,
				 0X00,0X00,0X00,0X00,
				 0X00,0X00,0X00,0X00 
};


VOID Dispose()
{
	gconfig_Free(&config);
	gcol_Dispose();
	lcdClose();
}

Boolean Init()
{
	UINT32 remoteHost;
	UINT32 port = 8010;
	CHAR* syscfgFile = "/mnt/druconf.cfg";
	CHAR* calculateCfgFile = "";
	CHAR* tankvolumeCfgFile = "/mnt/tnkvlmconf.cfg";

	//读取采集器配置
	DBG_MSG("reading sys configuation..\n");
	if(gconfig_Init(syscfgFile, &config) == False)
		return False;
	gconfig_Print(&config);
	if(gconfig_Config(&config, GROUPS, GRP_MAX_NUM, TAGS, TAG_MAX_NUM, OUTTAGS, OUTTAG_MAX_NUM) == False)
		return False;
	gconfig_Free(&config);
	DBG_MSG("configuring finished\n");

	//读取计算参数配置
	DBG_MSG("reading calculation configuations..\n");
	if( gcal_init(calculateCfgFile, tankvolumeCfgFile) == False)
		return False;
	DBG_MSG("configuring finished\n");


	//初始化采集设备
	DBG_MSG("starting uart..\n");
	uartconf.pbUartName     = 	   "/dev/ttyS1";
	uartconf.n16OpenMode    = 	   O_RDWR | O_NOCTTY | O_NONBLOCK; 
	uartconf.n16C_cflag     = 	   B9600 |  CS8 | CLOCAL | CREAD;           
	uartconf.N16C_iflag     = 	   IGNPAR;                                                       
	uartconf.n16C_oflag     =	   0;                                                            
	uartconf.N16C_lflag     = 	   0;	// ICANON, 设定输入模式 (非标准型, 不回应,...) 
	uartconf.n16Vtime       = 	   5;   // 不使用分割字节计时器                
	uartconf.N16Vvmin       =      1;   // 在读取到 1 个字节前先停止

	if(gcol_Init( &uartconf ) == False)
	{
		return False;
	}
	DBG_MSG("uart init ok\n");


	//初始化数据发送
	DBG_MSG("opening socket..\n");
	memcpy (&remoteHost, config.bRemote_IP, sizeof(remoteHost));
	DBG_MSG3("remote: %s %d\n", inet_ntoa(remoteHost), port);

	if(nsend_Init(MAC, inet_ntoa(remoteHost), port, config.u32BAH, key) == False)
	{
		return False;
	}
	DBG_MSG("socket init ok\n");


	//初始化LCD
	DBG_MSG("opening LCD..\n");
	if(lcdInit() == False)
	{
		return False;
	}
	DBG_MSG("LCD init ok\n");

	return True;
}

VOID Collecting()
{
	FTagGroup* pGroup;
	REGINT groupIndex = 0;
	CHAR* version = "3.0";

	DBG_MSG2("version %s\n", version);
	print("正在初始化.\n");

	if( !Init() )
	{
		print("初始化失败,退出\n");
		return;
	}
	DBG_MSG2("version %s\n", version);

	while(1)
	{
		lcdprint(LCD_MSG_WAIT_INSTRU, "正在等待仪表空闲...\n");
		if( gcol_WaitForInured() == True )
		{
			pGroup = &GROUPS[groupIndex];
			DBG_MSG2("tank %s\n", pGroup->GrpName);

			lcdprint(LCD_MSG_READ_INSTRU, "正在读取仪表参数...\n");
			gcol_GatherGrp( pGroup );
			groupIndex ++;
			if(groupIndex >= config.u16GroupNum) {groupIndex=0;}
			gcol_Halt();


			lcdprint(LCD_MSG_CACULATE, "正在计算...\n");
			gcal_calculate( pGroup );


			lcdprint(LCD_MSG_SENT_TO_NET, "正在向网络发送...\n");
			if( nsend_SendGrp( pGroup ) )
			{
				print("发送成功.\n");
			}
			else
			{
				print("发送失败.\n");
			}
		}
	}
}

void main()
{
	Collecting();
	Dispose();
}

⌨️ 快捷键说明

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