初级会员

- 积分
- 135
- 金钱
- 135
- 注册时间
- 2017-1-19
- 在线时间
- 23 小时
|
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毫秒
}
}
}
这是什么原因呢?
|
|