📄 9311cfg.c
字号:
{
ErrorInfo(ROOTID, "串口2配置错误!使用默认端口配置...");
return ;
}
SysCfg.PortAttr |= 0x02;
if ((at91_pio_read (&PIO_DESC) & SW2_WH2) != SW2_WH2)
{
Usart1_init (US_CHRL_8 | US_PAR_NO | US_NBSTOP_1, DEFBAUD);
PortInfo[1].Port = 2;
PortInfo[1].Attr = MAINTSEC;
PortInfo[1].RTSONDelay = 5;
ErrorInfo(ROOTID, "串口2运行于:57600 bps");
return ;
}
}
else if (Port->PortID == NET1)
{
if (SysCfg.PortAttr & 0x01)
return ;
number = 0;
config = PORTCFG & 0x07;
if (!((config == 0x00) && MyCfg.lan1))
{
ErrorInfo(ROOTID, "网口1配置错误!使用默认端口配置...");
return ;
}
SysCfg.PortAttr |= 0x01;
info.Baud = DEFBAUD;
info.Ip = MyCfg.lan1_ip;
info.SubnetMask = MyCfg.lan1_subnet_mask;
info.DefGetway = MyCfg.def_gtwy_ip;
if ((at91_pio_read (&PIO_DESC) & SW2_WH1) != SW2_WH1)
{
flag = TRUE;
info.ServerPort = 8888;
}
else
info.ServerPort = Port->ServerPort;
#if (DF9311_NET > 0)
rc = InitNet(FALSE, &info, FALSE);
ResetNet(0, FALSE);
#endif
if (!rc)
ErrorInfo(ROOTID, "网口1初始化失败...");
else
{
Usart0_init (US_CHRL_8 | US_PAR_NO | US_NBSTOP_1, DEFBAUD);
sprintf(err, "网口1地址为:%d.%d.%d.%d", (info.Ip>>24), (info.Ip>>16)&0x00FF, (info.Ip>>8)&0x0000FF, info.Ip&0x000000FF);
ErrorInfo(ROOTID, err);
sprintf(err, "网口1掩码为:%d.%d.%d.%d", (info.SubnetMask>>24), (info.SubnetMask>>16)&0x00FF, (info.SubnetMask>>8)&0x0000FF, info.SubnetMask&0x000000FF);
ErrorInfo(ROOTID, err);
sprintf(err, "网口1网关为:%d.%d.%d.%d", (info.DefGetway>>24), (info.DefGetway>>16)&0x00FF, (info.DefGetway>>8)&0x0000FF, info.DefGetway&0x000000FF);
ErrorInfo(ROOTID, err);
}
}
else if (Port->PortID == NET2)
{
if (SysCfg.PortAttr & 0x02)
return ;
number = 1;
config = PORTCFG & 0x70;
if (!((config == 0x00) && MyCfg.lan2))
{
ErrorInfo(ROOTID, "网口2配置错误!使用默认端口配置...");
return ;
}
SysCfg.PortAttr |= 0x02;
info.Baud = DEFBAUD;
info.Ip = MyCfg.lan2_ip;
info.SubnetMask = MyCfg.lan2_subnet_mask;
info.DefGetway = MyCfg.def_gtwy_ip;
if ((at91_pio_read (&PIO_DESC) & SW2_WH2) != SW2_WH2)
{
flag = TRUE;
info.ServerPort = 8888;
}
else
info.ServerPort = Port->ServerPort;
#if (DF9311_NET > 0)
rc = InitNet(TRUE, &info, FALSE);
ResetNet(1, FALSE);
#endif
if (!rc)
ErrorInfo(ROOTID, "网口2初始化失败...");
else
{
Usart1_init (US_CHRL_8 | US_PAR_NO | US_NBSTOP_1, DEFBAUD);
sprintf(err, "网口2地址为:%d.%d.%d.%d", (info.Ip>>24), (info.Ip>>16)&0x00FF, (info.Ip>>8)&0x0000FF, info.Ip&0x000000FF);
ErrorInfo(ROOTID, err);
sprintf(err, "网口2掩码为:%d.%d.%d.%d", (info.SubnetMask>>24), (info.SubnetMask>>16)&0x00FF, (info.SubnetMask>>8)&0x0000FF, info.SubnetMask&0x000000FF);
ErrorInfo(ROOTID, err);
sprintf(err, "网口2网关为:%d.%d.%d.%d", (info.DefGetway>>24), (info.DefGetway>>16)&0x00FF, (info.DefGetway>>8)&0x0000FF, info.DefGetway&0x000000FF);
ErrorInfo(ROOTID, err);
}
}
else
return ;
//APP初始化
PortInfo[number].Port = Port->PortID;
if (flag)
PortInfo[number].Attr = MAINTSEC;
else
PortInfo[number].Attr = Port->DriverID;
PortInfo[number].RTSONDelay = Port->RTSONDelay;
PortInfo[number].Medium = Port->Medium;
if ((Port->PortID == NET1) || (Port->PortID == NET2))
return ;
// 串口初始化
mode = 0;
switch (Port->Mode)
{
case 0:
mode &= (~US_SYNC);
break;
case 2:
mode |= US_SYNC;
break;
default:
break;
}
if (Port->Baud >= 12)
baud = 57600;
else
baud = dd[Port->Baud];
PortInfo[number].Baudrate = baud;
switch (Port->CharSize)
{
case 5:
mode |= US_CHRL_5;
break;
case 6:
mode |= US_CHRL_6;
break;
case 7:
mode |= US_CHRL_7;
break;
case 8:
mode |= US_CHRL_8;
break;
default:
break;
}
if (Port->Flags & 0x0002)
mode |= US_NBSTOP_2;
else
mode |= US_NBSTOP_1;
if (Port->Flags & 0x0004)
{
if (Port->Flags & 0x0008)
mode |= US_PAR_ODD;
else
mode |= US_PAR_EVEN;
}
else
mode |= US_PAR_NO;
if (Port->PortID == PORT1)
{
sprintf(err, "串口1运行于:%d bps", baud);
ErrorInfo(ROOTID, err);
Usart0_init(mode, baud);
}
if (Port->PortID == PORT2)
{
sprintf(err, "串口2运行于:%d bps", baud);
ErrorInfo(ROOTID, err);
Usart1_init(mode, baud);
}
}
/*------------------------------------------------------------------*/
/*函数名称:GetRealDBIndex() */
/*函数功能:获取在实际库索引号 */
/*输入说明:i--实际库号;DevID--逻辑库序号 */
/*输出说明:索引号,错误返回0xFFFF */
/*------------------------------------------------------------------*/
INT16U GetRealDBIndex(INT16U i, INT16U DevID)
{
INT16U rc;
rc = 0;
if (DBCfgs[i].Flag & FDBLOGUSE)
{
if (DBCfgs[i].Info.Real.LogDevID[rc] != DevID)
{
rc = 1;
if (DBCfgs[i].Flag & FDBLOG2USE)
{
if (DBCfgs[i].Info.Real.LogDevID[rc] != DevID)
{
ErrorInfo(ROOTID, "创建数据库失败673");
return (0xFFFF);
}
}
else
{
DBCfgs[i].Flag |= FDBLOG2USE;
DBCfgs[i].Info.Real.LogDevID[rc] = DevID;
}
}
}
else
{
rc = 0;
DBCfgs[i].Flag |= FDBLOGUSE;
DBCfgs[i].Info.Real.LogDevID[rc] = DevID;
}
return (rc);
}
/*------------------------------------------------------------------*/
/*函数名称:SetDefPort() */
/*函数功能:创建默认端口属性,均初始化为维护 */
/*输入说明: */
/*输出说明: */
/*------------------------------------------------------------------*/
void SetDefPort(void)
{
BOOL rc;
struct NetInfo info;
char err[60];
if (!(SysCfg.PortAttr & 0x01))
{
SysCfg.PortAttr |= 0x01;
PortInfo[0].Port = PORT1;
PortInfo[0].Attr = MAINTSEC;
PortInfo[0].RTSONDelay = 5;
PortInfo[0].pPad = NULL;
if (((PORTCFG & 0x07) == 0x02) || ((PORTCFG & 0x07) == 0x04))
{
Usart0_init (US_CHRL_8 | US_PAR_NO | US_NBSTOP_1, DEFBAUD);
ErrorInfo(ROOTID, "串口1运行于:57600 bps");
}
else if ((PORTCFG & 0x07) == 0x00)
{
info.Baud = DEFBAUD;
info.Ip = MyCfg.lan1_ip;
info.SubnetMask = MyCfg.lan1_subnet_mask;
info.DefGetway = MyCfg.def_gtwy_ip;
info.ServerPort = 8888;
#if (DF9311_NET > 0)
rc = InitNet(FALSE, &info, FALSE);
ResetNet(0, FALSE);
#endif
if (!rc)
ErrorInfo(ROOTID, "网口1初始化失败...");
else
{
Usart0_init (US_CHRL_8 | US_PAR_NO | US_NBSTOP_1, DEFBAUD);
sprintf(err, "网口1地址为:%d.%d.%d.%d", (info.Ip>>24), (info.Ip>>16)&0x00FF, (info.Ip>>8)&0x0000FF, info.Ip&0x000000FF);
ErrorInfo(ROOTID, err);
sprintf(err, "网口1掩码为:%d.%d.%d.%d", (info.SubnetMask>>24), (info.SubnetMask>>16)&0x00FF, (info.SubnetMask>>8)&0x0000FF, info.SubnetMask&0x000000FF);
ErrorInfo(ROOTID, err);
sprintf(err, "网口1网关为:%d.%d.%d.%d", (info.DefGetway>>24), (info.DefGetway>>16)&0x00FF, (info.DefGetway>>8)&0x0000FF, info.DefGetway&0x000000FF);
ErrorInfo(ROOTID, err);
}
}
}
if (!(SysCfg.PortAttr & 0x02))
{
SysCfg.PortAttr |= 0x02;
PortInfo[1].Port = PORT2;
PortInfo[1].Attr = MAINTSEC;
PortInfo[1].RTSONDelay = 5;
PortInfo[1].pPad = NULL;
if (((PORTCFG & 0x70) == 0x20) || ((PORTCFG & 0x70) == 0x40))
{
Usart1_init (US_CHRL_8 | US_PAR_NO | US_NBSTOP_1, DEFBAUD);
ErrorInfo(ROOTID, "串口2运行于:57600 bps");
}
else if ((PORTCFG & 0x70) == 0x00)
{
info.Baud = DEFBAUD;
info.Ip = MyCfg.lan2_ip;
info.SubnetMask = MyCfg.lan2_subnet_mask;
info.DefGetway = MyCfg.def_gtwy_ip;
info.ServerPort = 8888;
#if (DF9311_NET > 0)
rc = InitNet(TRUE, &info, FALSE);
ResetNet(1, FALSE);
#endif
if (!rc)
ErrorInfo(ROOTID, "网口2初始化失败...");
else
{
Usart1_init (US_CHRL_8 | US_PAR_NO | US_NBSTOP_1, DEFBAUD);
sprintf(err, "网口2地址为:%d.%d.%d.%d", (info.Ip>>24), (info.Ip>>16)&0x00FF, (info.Ip>>8)&0x0000FF, info.Ip&0x000000FF);
ErrorInfo(ROOTID, err);
sprintf(err, "网口2掩码为:%d.%d.%d.%d", (info.SubnetMask>>24), (info.SubnetMask>>16)&0x00FF, (info.SubnetMask>>8)&0x0000FF, info.SubnetMask&0x000000FF);
ErrorInfo(ROOTID, err);
sprintf(err, "网口2网关为:%d.%d.%d.%d", (info.DefGetway>>24), (info.DefGetway>>16)&0x00FF, (info.DefGetway>>8)&0x0000FF, info.DefGetway&0x000000FF);
ErrorInfo(ROOTID, err);
}
}
}
}
/*------------------------------------------------------------------*/
/*函数名称:GetYcPara() */
/*函数功能:获取遥测整定参数 */
/*输入说明: */
/*输出说明:成功返回TRUE */
/*------------------------------------------------------------------*/
BOOL GetYcPara(INT16U Flag)
{
BOOL dd = FALSE;
INT16U rc, len, cyc, tt;
struct FileInfo info;
INT8U buf[YCPARABUFLEN];
SysCfg.ParaValid = FALSE;
len = sizeof (struct YCPara_t);
strcpy(info.Name, "ycpara.sys");
info.Length = YCPARABUFLEN;
rc = FRead(buf, 0x8000, YCPARABUFLEN, &info);
if (rc != YCPARABUFLEN)
{
dd = TRUE;
ReadEEprom(0x00, buf, YCPARABUFLEN);
}
else
{
if ((buf[0] == 0xFF) && (buf[1] == 0xFF) && (buf[2] == 0xFF))
{
dd = TRUE;
ReadEEprom(0x00, buf, YCPARABUFLEN);
}
}
if (Flag == YCPARAINIT)
{
tt = 0;
rc = (INT16U)buf[tt+len+1];
rc = (rc<<8) & 0xFF00;
rc += buf[tt+len];
cyc = dnpcrc(&buf[tt], len);
if (rc != cyc)
return (FALSE);
if (dd)
SetYcPara((struct YCPara_t*)buf);
//同时默认读取正常整定值
memcpy ((INT8U*)&YCPara, &buf[tt], len);
SysCfg.ParaValid = TRUE;
return (TRUE);
}
if (Flag == YCPARANORMAL)
{
tt = 0;
rc = (INT16U)buf[tt+len+1];
rc = (rc<<8) & 0xFF00;
rc += buf[tt+len];
cyc = dnpcrc(&buf[tt], len);
}
else if (Flag == YCPARAHIGH)
{
tt = len + 2;
rc = (INT16U)buf[tt+len+1];
rc = (rc<<8) & 0xFF00;
rc += buf[tt+len];
cyc = dnpcrc(&buf[tt], len);
}
else if (Flag == YCPARALOW)
{
tt = len * 2 + 4;
rc = (INT16U)buf[tt+len+1];
rc = (rc<<8) & 0xFF00;
rc += buf[tt+len];
cyc = dnpcrc(&buf[tt], len);
}
else
return (FALSE);
if (rc != cyc)
{
ReadEEprom(0x00, buf, YCPARABUFLEN);
rc = (INT16U)buf[tt+len+1];
rc = (rc<<8) & 0xFF00;
rc += buf[tt+len];
cyc = dnpcrc(&buf[tt], len);
if (rc != cyc)
return (FALSE);
}
memcpy ((INT8U*)&YCPara, &buf[tt], len);
SysCfg.ParaValid = TRUE;
return (TRUE);
}
/*------------------------------------------------------------------*/
/*函数名称:SetYcPara() */
/*函数功能:设置遥测整定参数 */
/*输入说明: */
/*输出说明:成功返回TRUE */
/*------------------------------------------------------------------*/
BOOL SetYcPara(struct YCPara_t *Para)
{
INT16U rc, len, cyc;
INT32U tmp, temp;
struct FileInfo info;
struct YCPara_t *ptmp;
INT8U buf[YCPARABUFLEN];
len = sizeof (struct YCPara_t);
strcpy(info.Name, "ycpara.sys");
info.Length = YCPARABUFLEN;
rc = FRead(buf, 0x8000, YCPARABUFLEN, &info);
if (rc != YCPARABUFLEN)
ReadEEprom(0x00, buf, YCPARABUFLEN);
if ((Para->Flag & YCPARANORMAL) == YCPARANORMAL)
{
ptmp = (struct YCPara_t*)buf;
if ((Para->Flag & YCPARAZERO) == YCPARAZERO)
{
ptmp->Value[5] = Para->Value[5];
ptmp->Value[15] = Para->Value[15];
}
else
{
tmp = ptmp[0].Value[5];
temp = ptmp[0].Value[15];
memcpy ((INT8U*)ptmp, (INT8U*)Para, len);
ptmp->Value[5] = tmp;
ptmp->Value[15] = temp;
}
cyc = dnpcrc((INT8U*)ptmp, len);
memcpy ((INT8U*)(ptmp+1), (INT8U*)&cyc, 2);
}
else if ((Para->Flag & YCPARAHIGH) == YCPARAHIGH)
{
ptmp = (struct YCPara_t*)&buf[len+2];
if ((Para->Flag & YCPARAZERO) == YCPARAZERO)
{
ptmp->Value[5] = Para->Value[5];
ptmp->Value[15] = Para->Value[15];
}
else
{
tmp = ptmp[0].Value[5];
temp = ptmp[0].Value[15];
memcpy ((INT8U*)ptmp, (INT8U*)Para, len);
ptmp->Value[5] = tmp;
ptmp->Value[15] = temp;
}
cyc = dnpcrc((INT8U*)ptmp, len);
memcpy ((INT8U*)(ptmp+1), (INT8U*)&cyc, 2);
}
else if ((Para->Flag & YCPARALOW) == YCPARALOW)
{
ptmp = (struct YCPara_t*)&buf[len*2+4];
if ((Para->Flag & YCPARAZERO) == YCPARAZERO)
{
ptmp->Value[5] = Para->Value[5];
ptmp->Value[15] = Para->Value[15];
}
else
{
tmp = ptmp[0].Value[5];
temp = ptmp[0].Value[15];
memcpy ((INT8U*)ptmp, (INT8U*)Para, len);
ptmp->Value[5] = tmp;
ptmp->Value[15] = temp;
}
cyc = dnpcrc((INT8U*)ptmp, len);
memcpy ((INT8U*)(ptmp+1), (INT8U*)&cyc, 2);
}
else
return (FALSE);
WriteEEprom(0x00, buf, YCPARABUFLEN);
rc = FWrite(buf, 0x8000, YCPARABUFLEN, &info);
at91_irq_open ( WDI_ID, INTWATCHDOG, AIC_SRCTYPE_INT_EDGE_TRIGGERED, Tmr_TickISR );
if (rc != YCPARABUFLEN)
return (FALSE);
return (TRUE);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -