OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3486|回复: 0

求救:USART2接收过来的数据和CAN口接收过来的数据,统一放在一个数组里面,然后用以太网转发出去,以太网掉线

[复制链接]

6

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2017-1-19
在线时间
23 小时
发表于 2017-2-18 20:24:28 | 显示全部楼层 |阅读模式
15金钱
求救:USART2接收过来的数据和CAN口接收过来的数据,统一放在一个数组里面,然后用以太网转发出去,以太网掉线!




/****************************************Copyright (c)****************************************************
**                                      
**                                 
**
**--------------File Info---------------------------------------------------------------------------------
** File name:              
** Descriptions:            
**
**--------------------------------------------------------------------------------------------------------
** Created by:              
** Created date:            
** Version:                 
** Descriptions:            
**
**--------------------------------------------------------------------------------------------------------
** Modified by:            
** Modified date:           
** Version:                 
** Descriptions:            
**
*********************************************************************************************************/

/* Includes ------------------------------------------------------------------*/
#include <includes.h>
/* lwIP includes. */
#include "ip.h"
#include "lwip/api.h"
#include "lwip/tcpip.h"
#include "lwip/memp.h"
#include "lwip/stats.h"
#include "netif/loopif.h"
#include "search.h"
#include "sockets.h"
#include "lwIP.h"
#include "netif.h"
#include "ecuobd.h"
/* Private variables ---------------------------------------------------------*/
static  OS_STK         AppLWIPModBusTaskStk[APP_TASK_LWIPModBus_STK_SIZE];
//static  OS_STK         AppLWIPModBusReceiveTaskStk[APP_TASK_LWIPReceive_STK_SIZE];
static  void    uctsk_LWIPModBus        (void *pdata);
//static void     uctsk_LWIPModBusReceive(void *pdata) ;

extern char gas[20];


int socket;
uint8_t StatusCount,blnEngRunning;
extern float PedalPerent;
extern  ECUOBDArrary  ECUA;       

uint16_t DATAPLC;
void  App_LWIPModBusTaskCreate (void)
{
    CPU_INT08U  os_err;

        os_err = os_err; /* prevent warning... */

        os_err = OSTaskCreate((void (*)(void *)) uctsk_LWIPModBus,                               
                          (void          * ) 0,                                                       
                          (OS_STK        * )&AppLWIPModBusTaskStk[APP_TASK_LWIPModBus_STK_SIZE - 1],               
                          (INT8U           ) APP_TASK_LWIPModBus_PRIO  );                                                       

        #if OS_TASK_NAME_EN > 0
            OSTaskNameSet(APP_TASK_LWIPModBus_PRIO, "Task LWIP ModBus", &os_err);
        #endif
}
/*******************************************************************************
* Function Name  :
* Description    :
* Input          :
* Output         : None
* Return         : FRESULT
* Attention                 :
*******************************************************************************/
static  void  uctsk_LWIPModBus(void *pdata)
{

   int err;
   struct ip_addr ipaddr;

   char recvbuff[100];
   struct sockaddr_in sin;
   //struct sockaddr_in adressClient;
   struct sockaddr    sockaddr_name;
   uint8_t dataH=0,dataL=0;
   uint16_t        pedal=0;
   //uint16_t count=0;

   Ethernet_Initialize();

   Init_lwIP();

   lwip_socket_init();
  // SpeedTansducer_Init();
   IP4_ADDR(&ipaddr, 192, 168, 0, 12 );
   socket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
   sin.sin_len = sizeof(sin);
   sin.sin_family = AF_INET;
   sin.sin_port = htons(2600);
   sin.sin_addr.s_addr = ipaddr.addr;
   sockaddr_name=  *((const struct sockaddr*)&sin);  

  // listen(socket,5);
   err=connect(socket,(const struct sockaddr*)&sin,sizeof( struct sockaddr));
   for(;;)
   {   
           if (err==0)
           {
            
                recvbuff[0]=10;
               
                dataH=ECUA.ChannelNameValue[0]>>8;
          dataL=ECUA.ChannelNameValue[0]&0xff;
                recvbuff[1]=dataH;
                recvbuff[2]=dataL;//PedalPerent;
                pedal=(uint16_t)(PedalPerent);
                dataH=pedal>>8;
                dataL=pedal&0xff;
                recvbuff[3]=dataH;
                recvbuff[4]=dataL;//PedalPerent;
                  
                  // recvbuff[0]=gas[0];
                 
                recvbuff[8]=gas[8];
                recvbuff[9]=gas[9];//CO

                recvbuff[10]=gas[10];
                recvbuff[11]=gas[11];//HC

                recvbuff[12]=gas[12];
                recvbuff[13]=gas[13];//CO2

                recvbuff[14]=gas[14];
                recvbuff[15]=gas[15];//O2

                recvbuff[16]=gas[16];
                recvbuff[17]=gas[17];//NO

                recvbuff[18]=gas[18];
                recvbuff[19]=gas[19];//lambad

                send(socket,recvbuff,20,0);
                OSTimeDlyHMSM(0, 0, 0, 100);                 //100毫秒

           }          
   }
}



这是什么原因呢?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-9 01:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表