core.c 添加激活后发送当前缓存文件的功能--待测试
func.c 中 setCommWindow 添加取值核验 isManualWindow 逻辑更新 parseRS232 更新ASCII判断逻辑(数据有\r\n但是前期采集未体现) 更新岸基地址为ADDR_ANJI = 0x3E 增加tcpRecMQ堆栈
This commit is contained in:
parent
4dba0a67bc
commit
710ffb8e62
@ -57,6 +57,7 @@ static rt_err_t uart485_input(rt_device_t dev, rt_size_t size)
|
|||||||
cachecnt += size;
|
cachecnt += size;
|
||||||
if (cachecnt < 63) {
|
if (cachecnt < 63) {
|
||||||
// LOG_W("not enough data[%d byte(s)], cached and waiting...",size);//处理半包
|
// LOG_W("not enough data[%d byte(s)], cached and waiting...",size);//处理半包
|
||||||
|
LOG_D("%d byte(s)",size);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
msg.dev = dev;
|
msg.dev = dev;
|
||||||
@ -199,7 +200,7 @@ static void serial485_thread_entry(void *parameter)
|
|||||||
parseBattInfo(rx_buffer, rx_length);
|
parseBattInfo(rx_buffer, rx_length);
|
||||||
}
|
}
|
||||||
|
|
||||||
rt_thread_mdelay(30*1000);
|
rt_thread_mdelay(9*60*1000);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ void initCfgMutex()
|
|||||||
isCfgOk = rt_mutex_create("cfg", RT_IPC_FLAG_FIFO);
|
isCfgOk = rt_mutex_create("cfg", RT_IPC_FLAG_FIFO);
|
||||||
isTosendOk = rt_mutex_create("tosend", RT_IPC_FLAG_FIFO);
|
isTosendOk = rt_mutex_create("tosend", RT_IPC_FLAG_FIFO);
|
||||||
}
|
}
|
||||||
//INIT_APP_EXPORT(initCfg);
|
INIT_APP_EXPORT(initCfgMutex);
|
||||||
|
|
||||||
static void setLock()
|
static void setLock()
|
||||||
{
|
{
|
||||||
|
@ -215,7 +215,7 @@ void sysSemInit()
|
|||||||
// rt_event_init(&chkSta, "chkSta", RT_IPC_FLAG_FIFO);//检查天通状态
|
// rt_event_init(&chkSta, "chkSta", RT_IPC_FLAG_FIFO);//检查天通状态
|
||||||
// rt_sem_release(cfgUpdate); //上电更新值
|
// rt_sem_release(cfgUpdate); //上电更新值
|
||||||
|
|
||||||
initCfgMutex();
|
// initCfgMutex();
|
||||||
// void reportINFO();
|
// void reportINFO();
|
||||||
reportINFO();
|
reportINFO();
|
||||||
/* 创建 serial 线程 */
|
/* 创建 serial 线程 */
|
||||||
@ -256,10 +256,12 @@ void sysInit(void)
|
|||||||
{
|
{
|
||||||
sysSemInit();
|
sysSemInit();
|
||||||
initCfg();
|
initCfg();
|
||||||
|
checkManualWindow();
|
||||||
if (isInWindowZone() || isManualWindow()) {//开机检查是否在开窗区间内,是则给TT开机
|
if (isInWindowZone() || isManualWindow()) {//开机检查是否在开窗区间内,是则给TT开机
|
||||||
initTT();
|
initTT();
|
||||||
setWindowMode();
|
setWindowMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
//INIT_COMPONENT_EXPORT(sysInit);
|
//INIT_COMPONENT_EXPORT(sysInit);
|
||||||
|
|
||||||
@ -328,6 +330,11 @@ void resetTM(void)
|
|||||||
LOG_W("TIMEOUT stopped.[isWindowMode]");
|
LOG_W("TIMEOUT stopped.[isWindowMode]");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (isManualWindow()) {
|
||||||
|
stopTM();
|
||||||
|
LOG_W("TIMEOUT stopped.[isManualMode]");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
rt_tick_t t= rt_tick_from_millisecond(scfg.timeout*60*1000);
|
rt_tick_t t= rt_tick_from_millisecond(scfg.timeout*60*1000);
|
||||||
rt_timer_control(tmrToPNTT, RT_TIMER_CTRL_SET_TIME,(void*) &t);
|
rt_timer_control(tmrToPNTT, RT_TIMER_CTRL_SET_TIME,(void*) &t);
|
||||||
@ -485,6 +492,19 @@ void d_upSendFile(int argc, char **argv)
|
|||||||
*/
|
*/
|
||||||
void getAndSendFile()
|
void getAndSendFile()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
//优先发送未达指定大小的文件
|
||||||
|
char fnow[50];
|
||||||
|
getLstCacheFileName(fnow);
|
||||||
|
if (getFileSize(fnow)) {//有数据才发
|
||||||
|
updateCacheFileName();
|
||||||
|
LOG_I("send latest data first");
|
||||||
|
// rt_sem_release(okTosend);//初始赋值
|
||||||
|
upSendFile(fnow,0);
|
||||||
|
rt_thread_mdelay(10*1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int index[MAX_KEY_LEN];
|
static int index[MAX_KEY_LEN];
|
||||||
static char f[5][MAX_KEY_LEN];
|
static char f[5][MAX_KEY_LEN];
|
||||||
int cnt = getFilesToSend(f, index);
|
int cnt = getFilesToSend(f, index);
|
||||||
|
@ -153,7 +153,7 @@ return 0x63;
|
|||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
rt_uint8_t len;
|
rt_uint8_t len;
|
||||||
rt_uint8_t data[];
|
rt_uint8_t data[200];
|
||||||
|
|
||||||
} SMSG;//single messgae
|
} SMSG;//single messgae
|
||||||
|
|
||||||
@ -185,7 +185,7 @@ void upSend_thread_entry(void* parameter)
|
|||||||
|
|
||||||
|
|
||||||
//打包数据
|
//打包数据
|
||||||
uint8_t dout[200];
|
uint8_t dout[300];
|
||||||
static MSG cfg;
|
static MSG cfg;
|
||||||
rt_memset(&cfg, 0, sizeof(MSG)); // 分配空间
|
rt_memset(&cfg, 0, sizeof(MSG)); // 分配空间
|
||||||
char fin[30];
|
char fin[30];
|
||||||
@ -198,7 +198,9 @@ void upSend_thread_entry(void* parameter)
|
|||||||
//crypt before pack
|
//crypt before pack
|
||||||
uint8_t tmp[200];
|
uint8_t tmp[200];
|
||||||
uint8_t len = cryptSingleMsg(msg->data, msg->len, tmp);
|
uint8_t len = cryptSingleMsg(msg->data, msg->len, tmp);
|
||||||
|
if (len>170) {
|
||||||
|
LOG_W("length of msg is too long.[%d->%d]",msg->len,len);
|
||||||
|
}
|
||||||
size_t rst = packMsg(&cfg, tmp, len, dout);//packMsgs
|
size_t rst = packMsg(&cfg, tmp, len, dout);//packMsgs
|
||||||
#else
|
#else
|
||||||
size_t rst = packMsg(&cfg, tmpmsg->data, msg->len, dout);//packMsgs
|
size_t rst = packMsg(&cfg, tmpmsg->data, msg->len, dout);//packMsgs
|
||||||
@ -359,8 +361,13 @@ extern void updateAlarm(uint8_t *t, size_t len);
|
|||||||
void setCommWindow(uint8_t *t, size_t len)
|
void setCommWindow(uint8_t *t, size_t len)
|
||||||
{
|
{
|
||||||
LOG_I("FUNC = setCommWindow");
|
LOG_I("FUNC = setCommWindow");
|
||||||
|
size_t cnt = sizeof(scfg.openWindowTime);
|
||||||
|
if (len>cnt) {
|
||||||
|
LOG_W("only support %d windows",cnt/4);
|
||||||
|
len = cnt;
|
||||||
|
}
|
||||||
|
len= len/4*4;//窗口需要成对
|
||||||
|
|
||||||
// extern void updateAlarm(uint8_t *t, size_t len);
|
|
||||||
updateAlarm(t,len);
|
updateAlarm(t,len);
|
||||||
memcpy(scfg.openWindowTime,t,len);
|
memcpy(scfg.openWindowTime,t,len);
|
||||||
rt_sem_release(cfgUpdate);
|
rt_sem_release(cfgUpdate);
|
||||||
@ -382,6 +389,7 @@ void d_sw(void)
|
|||||||
*/
|
*/
|
||||||
void setManualWindow(int isManualWindow)
|
void setManualWindow(int isManualWindow)
|
||||||
{
|
{
|
||||||
|
scfg.isMaWin = isManualWindow;
|
||||||
set_cfg("isMaWin", isManualWindow);
|
set_cfg("isMaWin", isManualWindow);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -393,13 +401,26 @@ void closeWindow(void);
|
|||||||
*/
|
*/
|
||||||
int isManualWindow(void)
|
int isManualWindow(void)
|
||||||
{
|
{
|
||||||
int rst = get_cfg("isMaWin");
|
int rst = scfg.isMaWin;
|
||||||
if (rst < 0) {//none
|
if (rst >= 0) {
|
||||||
return 0;
|
rst = 1;
|
||||||
|
LOG_I("is in manual open mode.");
|
||||||
}
|
}
|
||||||
LOG_I("is in manual window.");
|
else {
|
||||||
|
rst = 0;
|
||||||
|
}
|
||||||
|
return rst;
|
||||||
|
}
|
||||||
|
void checkManualWindow(void)
|
||||||
|
{
|
||||||
|
int rst = get_cfg("isMaWin");
|
||||||
|
scfg.isMaWin = rst;
|
||||||
|
if (rst < 0) {//none
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (rst == 0) {//manual open without auto close
|
if (rst == 0) {//manual open without auto close
|
||||||
return 1;
|
return;
|
||||||
}
|
}
|
||||||
//设置定时器,定时器到则关窗
|
//设置定时器,定时器到则关窗
|
||||||
/* 创建定时器,单次定时器 */
|
/* 创建定时器,单次定时器 */
|
||||||
@ -413,7 +434,7 @@ int isManualWindow(void)
|
|||||||
rt_timer_start(timer1);
|
rt_timer_start(timer1);
|
||||||
LOG_D("手动开窗完成,%d分钟后自动关窗。",rst);
|
LOG_D("手动开窗完成,%d分钟后自动关窗。",rst);
|
||||||
}
|
}
|
||||||
return 1;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -535,11 +556,7 @@ int reportDepth(uint8_t *din,size_t len)
|
|||||||
|
|
||||||
rt_memcpy(dout+10, din, len);//5aa5从第11字节开始,共len个字节
|
rt_memcpy(dout+10, din, len);//5aa5从第11字节开始,共len个字节
|
||||||
LOG_HEX("depth",16,dout,len+10);
|
LOG_HEX("depth",16,dout,len+10);
|
||||||
//加密。因加密后数据长度会变化,故不能只加密位置数据。
|
upSend(dout, len+10);
|
||||||
nlen = cryptSingleMsg(din, len+10, dout);
|
|
||||||
LOG_HEX("crypt",16,dout,nlen);
|
|
||||||
// LOG_D("位置数据加密完成");
|
|
||||||
upSend(dout, nlen);
|
|
||||||
}
|
}
|
||||||
//天通指令类型:0x70 0x01
|
//天通指令类型:0x70 0x01
|
||||||
/**
|
/**
|
||||||
@ -579,7 +596,7 @@ void updateAllSysCfg(uint8_t *cfg, size_t len)
|
|||||||
rst &= set_cfg("minTTsinal",scfg.minTTsinal);
|
rst &= set_cfg("minTTsinal",scfg.minTTsinal);
|
||||||
rst &= set_cfg("timeout",scfg.timeout);
|
rst &= set_cfg("timeout",scfg.timeout);
|
||||||
|
|
||||||
char tmpstr[20];
|
char tmpstr[sizeof(scfg.commMode)*4];
|
||||||
bytes2str(scfg.openWindowTime, 8, 10, ",", tmpstr);
|
bytes2str(scfg.openWindowTime, 8, 10, ",", tmpstr);
|
||||||
rst &= set_cfgs("openWindowTime",tmpstr);
|
rst &= set_cfgs("openWindowTime",tmpstr);
|
||||||
|
|
||||||
@ -677,10 +694,12 @@ static int packLocMsg(uint8_t *dout)
|
|||||||
}
|
}
|
||||||
static void d_packLocMsg(void)
|
static void d_packLocMsg(void)
|
||||||
{
|
{
|
||||||
uint8_t tmp[200];
|
// uint8_t tmp[200];
|
||||||
size_t len = packLocMsg(tmp);
|
// size_t len = packLocMsg(tmp);
|
||||||
// len = cryptSingleMsg(tmp, len, tmp);
|
// len = cryptSingleMsg(tmp, len, tmp);
|
||||||
LOG_HEX("c",16,tmp,len);
|
uint8_t din[]={0x5A,0xA5,0x3E,0x32,0x06,0x08,0x00,0x0A,0x17,0x09,0x05,0x0F,0x24,0x0B,0xFF,0xFF,0xFF,0xFF,0x33,0xED};
|
||||||
|
reportDepth(din, sizeof(din));
|
||||||
|
// LOG_HEX("c",16,tmp,len);
|
||||||
// upSend(tmp, len);
|
// upSend(tmp, len);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@ -1030,7 +1049,7 @@ RT_WEAK int formatAndSendTo3S(uint8_t * din, size_t len)
|
|||||||
sendTo3S(str, strlen(str));//作为字符串发送
|
sendTo3S(str, strlen(str));//作为字符串发送
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
//#define CHECK_3S_DATA
|
||||||
int chk3SDataValid(uint8_t *din, size_t count)
|
int chk3SDataValid(uint8_t *din, size_t count)
|
||||||
{
|
{
|
||||||
uint8_t head[]={0x5A,0xA5};
|
uint8_t head[]={0x5A,0xA5};
|
||||||
@ -1071,7 +1090,9 @@ void parse3SData(uint8_t *din, size_t count)
|
|||||||
+--------+--------+------------+------------+---------+--------+------+------+-------+-----+-------+---------+------+
|
+--------+--------+------------+------------+---------+--------+------+------+-------+-----+-------+---------+------+
|
||||||
*/
|
*/
|
||||||
if (chk3SDataValid(din, count) != RT_EOK) {
|
if (chk3SDataValid(din, count) != RT_EOK) {
|
||||||
return;
|
#ifdef CHECK_3S_DATA
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
//有效的数据才能复位超时
|
//有效的数据才能复位超时
|
||||||
|
|
||||||
@ -1099,7 +1120,10 @@ void parse3SData(uint8_t *din, size_t count)
|
|||||||
int cmd = (din[4] << 8) + din[5];
|
int cmd = (din[4] << 8) + din[5];
|
||||||
switch (cmd)
|
switch (cmd)
|
||||||
{
|
{
|
||||||
case _CMD_DEPTH_REQUEST:
|
// case _CMD_DEPTH_REQUEST:
|
||||||
|
// reportDepth(din, count);
|
||||||
|
// break;
|
||||||
|
case _INFO_DEPTH_ANSWER:
|
||||||
reportDepth(din, count);
|
reportDepth(din, count);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -1339,6 +1363,22 @@ void d_getFileSize(int argc, char ** argv)
|
|||||||
LOG_D("size = %d Byte.",size);
|
LOG_D("size = %d Byte.",size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断文件是否存在,参数为文件完整路径
|
||||||
|
* @param f
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
int isFileExit(char *f)
|
||||||
|
{
|
||||||
|
int rst = 0;
|
||||||
|
int fd = open(f, O_RDONLY);
|
||||||
|
if (fd > 0)
|
||||||
|
{
|
||||||
|
rst = 1;
|
||||||
|
close(fd);
|
||||||
|
}
|
||||||
|
return rst;
|
||||||
|
}
|
||||||
extern SYS_CFG scfg;
|
extern SYS_CFG scfg;
|
||||||
static uint8_t iscdlock=0;
|
static uint8_t iscdlock=0;
|
||||||
/**
|
/**
|
||||||
@ -1513,14 +1553,14 @@ void parseRS232(uint8_t *din, size_t len)
|
|||||||
//有HEX有ASCII,统一按HEX解析
|
//有HEX有ASCII,统一按HEX解析
|
||||||
//部分数据以10字节(20字符)的0数据开始,如深度查询,心跳包等
|
//部分数据以10字节(20字符)的0数据开始,如深度查询,心跳包等
|
||||||
//处理思路是先不管前导0,对应指令手动加前导数据
|
//处理思路是先不管前导0,对应指令手动加前导数据
|
||||||
// uint8_t asciiHead[]={0x41, 0x54, 0x2B, 0x53, 0x4E, 0x44,};//"AT+SND"
|
uint8_t asciiHead[]={0x41, 0x54, 0x2B, 0x53, 0x4E, 0x44,};//"AT+SND"
|
||||||
uint8_t hexHead[]={0x5a, 0xa5};//"5AA5"
|
uint8_t hexHead[]={0x5a, 0xa5};//"5AA5"
|
||||||
//由于帧头有多种,且ascii和hex混发,无法处理粘包
|
//由于帧头有多种,且ascii和hex混发,无法处理粘包
|
||||||
|
|
||||||
// LOG_D("data is %s",isDataASCII(din, len)?"ASCII":"BIN");
|
// LOG_D("data is %s",isDataASCII(din, len)?"ASCII":"BIN");
|
||||||
//check
|
//check
|
||||||
// if (memcmp(din,asciiHead,sizeof(asciiHead)) == 0) {
|
if (memcmp(din,asciiHead,sizeof(asciiHead)) == 0) {
|
||||||
if (isDataASCII(din, len)) {
|
// if (isDataASCII(din, len) || memcmp(din,asciiHead,sizeof(asciiHead)) == 0) {
|
||||||
//ascii
|
//ascii
|
||||||
LOG_I("type = ASCII");
|
LOG_I("type = ASCII");
|
||||||
trDataTolog(din, len, 0);
|
trDataTolog(din, len, 0);
|
||||||
@ -1531,7 +1571,7 @@ void parseRS232(uint8_t *din, size_t len)
|
|||||||
size_t n=isInByte(din, len, tmpHead, sizeof(tmpHead), index);
|
size_t n=isInByte(din, len, tmpHead, sizeof(tmpHead), index);
|
||||||
// LOG_D("n=%d",n);
|
// LOG_D("n=%d",n);
|
||||||
if (!n) {
|
if (!n) {
|
||||||
LOG_W("RS232中无匹配帧");
|
LOG_W("RS232中无匹配帧[ASCII]");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (size_t i = 0; i < n; i++)
|
for (size_t i = 0; i < n; i++)
|
||||||
@ -1542,10 +1582,12 @@ void parseRS232(uint8_t *din, size_t len)
|
|||||||
memcpy(ndin,din+index[i],cnt);
|
memcpy(ndin,din+index[i],cnt);
|
||||||
ndin[cnt]='\0';
|
ndin[cnt]='\0';
|
||||||
uint8_t tmp[200];
|
uint8_t tmp[200];
|
||||||
size_t ncnt = str2Byte(ndin, 2, 16, tmp);
|
size_t ncnt = str2Byte(ndin, 2, 16, tmp)-1;//结尾有\r\n
|
||||||
LOG_HEX("frame",16,tmp,ncnt);
|
LOG_HEX("frame",16,tmp,ncnt);
|
||||||
if (chk3SDataValid(tmp, ncnt) != RT_EOK) {
|
if (chk3SDataValid(tmp, ncnt) != RT_EOK) {
|
||||||
|
#ifdef CHECK_3S_DATA
|
||||||
return;
|
return;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
parse3SData(tmp,ncnt);
|
parse3SData(tmp,ncnt);
|
||||||
}
|
}
|
||||||
@ -1561,7 +1603,7 @@ void parseRS232(uint8_t *din, size_t len)
|
|||||||
uint8_t index[10];
|
uint8_t index[10];
|
||||||
size_t n=isInByte(din, len, hexHead, sizeof(hexHead), index);
|
size_t n=isInByte(din, len, hexHead, sizeof(hexHead), index);
|
||||||
if (!n) {
|
if (!n) {
|
||||||
LOG_W("RS232中无匹配帧");
|
LOG_W("RS232中无匹配帧[BIN]");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (size_t i = 0; i < n; i++)
|
for (size_t i = 0; i < n; i++)
|
||||||
@ -1572,7 +1614,9 @@ void parseRS232(uint8_t *din, size_t len)
|
|||||||
memcpy(ndin,din+index[i],cnt);
|
memcpy(ndin,din+index[i],cnt);
|
||||||
LOG_HEX("frame",16,ndin,cnt);
|
LOG_HEX("frame",16,ndin,cnt);
|
||||||
if (chk3SDataValid(ndin, cnt) != RT_EOK) {
|
if (chk3SDataValid(ndin, cnt) != RT_EOK) {
|
||||||
|
#ifdef CHECK_3S_DATA
|
||||||
return;
|
return;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
parse3SData(ndin,cnt);
|
parse3SData(ndin,cnt);
|
||||||
}
|
}
|
||||||
|
@ -74,10 +74,11 @@ enum
|
|||||||
//3S
|
//3S
|
||||||
#define _CMD_DEPTH_REQUEST 0x0601
|
#define _CMD_DEPTH_REQUEST 0x0601
|
||||||
#define _CMD_RTC_REQUEST 0x410F
|
#define _CMD_RTC_REQUEST 0x410F
|
||||||
|
//需补充信息
|
||||||
|
#define _INFO_DEPTH_ANSWER 0x0608 //深度回复
|
||||||
|
|
||||||
//
|
//
|
||||||
#define ADDR_ANJI 0x42 //0x42?
|
#define ADDR_ANJI 0x3E //0x42?
|
||||||
#define ADDR_TT 0x41
|
#define ADDR_TT 0x41
|
||||||
#define ADDR_3S 0x32
|
#define ADDR_3S 0x32
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ void show_version(void)
|
|||||||
char str[30];
|
char str[30];
|
||||||
uint8_t t[10];
|
uint8_t t[10];
|
||||||
size_t len=time2Byte(t);
|
size_t len=time2Byte(t);
|
||||||
rt_kprintf("SW Version: %s, build-%s\n","1.8d",bytes2str(t, 3, 10, "", str));
|
rt_kprintf("SW Version: %s, build-%s\n","1.9d",bytes2str(t, 3, 10, "", str));
|
||||||
}
|
}
|
||||||
|
|
||||||
MSH_CMD_EXPORT(show_version,显示版本号);
|
MSH_CMD_EXPORT(show_version,显示版本号);
|
||||||
|
@ -202,7 +202,7 @@ void tcpRecMQ_thread_entry(void)
|
|||||||
void tcpRecMQ(void)
|
void tcpRecMQ(void)
|
||||||
{
|
{
|
||||||
/* 创建 serial 线程 */
|
/* 创建 serial 线程 */
|
||||||
rt_thread_t thread = rt_thread_create("tcpRecMQ", tcpRecMQ_thread_entry, RT_NULL, 1024*1, 25, 10);
|
rt_thread_t thread = rt_thread_create("tcpRecMQ", tcpRecMQ_thread_entry, RT_NULL, 1024*10, 25, 10);
|
||||||
/* 创建成功则启动线程 */
|
/* 创建成功则启动线程 */
|
||||||
if (thread != RT_NULL)
|
if (thread != RT_NULL)
|
||||||
{
|
{
|
||||||
|
@ -50,7 +50,7 @@ typedef struct
|
|||||||
uint8_t minTTPeriCnt;
|
uint8_t minTTPeriCnt;
|
||||||
uint8_t minTTsinal;
|
uint8_t minTTsinal;
|
||||||
uint8_t timeout;
|
uint8_t timeout;
|
||||||
uint8_t openWindowTime[20];
|
uint8_t openWindowTime[60];
|
||||||
uint16_t maxSizePerFile;
|
uint16_t maxSizePerFile;
|
||||||
uint8_t commMode;
|
uint8_t commMode;
|
||||||
uint8_t selfDesSW;
|
uint8_t selfDesSW;
|
||||||
|
@ -67,7 +67,7 @@ INIT_COMPONENT_EXPORT(w25q128_mount);
|
|||||||
|
|
||||||
void sdmnt_init(void)
|
void sdmnt_init(void)
|
||||||
{
|
{
|
||||||
rt_thread_mdelay(100);//这段延时必须加上,系统上电过程中存在延时,否则会出现先挂载后注册块设备sd0的情况
|
rt_thread_mdelay(300);//这段延时必须加上,系统上电过程中存在延时,否则会出现先挂载后注册块设备sd0的情况
|
||||||
// mkfs("elm","sd0");//挂在前需格式化
|
// mkfs("elm","sd0");//挂在前需格式化
|
||||||
if(dfs_mount("sd0","/sd","elm",0,0)==0) //挂载文件系统,参数:块设备名称、挂载目录、文件系统类型、读写标志、私有数据0
|
if(dfs_mount("sd0","/sd","elm",0,0)==0) //挂载文件系统,参数:块设备名称、挂载目录、文件系统类型、读写标志、私有数据0
|
||||||
{
|
{
|
||||||
@ -75,7 +75,8 @@ void sdmnt_init(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LOG_E("dfs mount failed\r\n");
|
LOG_E("dfs mount failed");
|
||||||
|
// mkfs("elm","sd0");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* 导出到自动初始化 */
|
/* 导出到自动初始化 */
|
||||||
|
Loading…
Reference in New Issue
Block a user