#include "CH392_PARAM.H" #include "delay.h" #include "string.h" /* 常用变量定义 */ struct _SOCK_INF SockInf[SOCKET_COUNT]; // 保存Socket信息 UINT8 MyBuffer[SOCKET_COUNT][1024] = {{0}}; // 数据缓冲区 struct _CH392_SYS CH392Inf; // 保存CH392信息 网卡 // CH392相关定义 本地网卡设置 const UINT8 CH392IPAddr[4] = {192, 168, 61, 10}; // CH392IP地址 const UINT8 CH392GWIPAddr[4] = {192, 168, 61, 100}; // CH392网关 const UINT8 CH392IPMask[4] = {255, 255, 255, 0}; // CH392子网掩码 #if 0 // socket 相关定义 //const UINT8 Socket0DesIP[4] = {255,255,255,255}; // Socket 0目的IP地址 //SERVER广播 const UINT8 Socket0DesIP[4] = {192, 168, 61, 100}; // Socket 0目的IP地址 const UINT16 Socket0SourPort = 5000; // Socket 0源端口 const UINT16 Socket0DesPort = 10002; // Socket 0目的端口 const UINT8 Socket0ProtoType = PROTO_TYPE_UDP; // Socket0 模式 ; #endif #if 1 SOCK_PARAM sock_params[] = { { .dstIP = {230, 1, 1, 1}, //组播 //.dstIP = {255, 255, 255, 255}, //广播 //.dstIP = {192, 168, 61, 100}, //单播 .SrcPort = 5003, .DstPort = 65003, .ProtoType = PROTO_TYPE_UDP, .TCP_SERVER_CLIENT = NONE }, { .dstIP = {192,168,61,100}, .SrcPort = 5004, .DstPort = 37393, .ProtoType = PROTO_TYPE_UDP, .TCP_SERVER_CLIENT = NONE }, { //.dstIP = {255,255,255,255}, //广播 .dstIP = {192,168,61,100}, //单播 .SrcPort = 5001, .DstPort = 61001, .ProtoType = PROTO_TYPE_TCP, //.TCP_SERVER_CLIENT = TCP_CLIENT .TCP_SERVER_CLIENT = TCP_SERVER }, { //.dstIP = {255,255,255,255}, //广播 .dstIP = {192,168,61,100}, //单播 .SrcPort = 5002, .DstPort = 61002, .ProtoType = PROTO_TYPE_TCP, .TCP_SERVER_CLIENT = TCP_CLIENT }, }; /* // socket 相关定义 const UINT8 Socket0DesIP[4] = {230, 1, 1, 1}; // Socket 0目的IP地址 const UINT16 Socket0SourPort = 5000; // Socket 0源端口 const UINT16 Socket0DesPort = 37393; // Socket 0目的端口 const UINT8 Socket0ProtoType = PROTO_TYPE_UDP; // Socket0 模式 */ #endif /********************************************************************************** * Function Name : InitCH392InfParam * Description : 初始化CH392Inf参数 * Input : None * Output : None * Return : None **********************************************************************************/ void InitCH392InfParam(void) { memset(&CH392Inf,0,sizeof(CH392Inf)); // 将CH392Inf全部清零 memcpy(CH392Inf.IPAddr,CH392IPAddr,sizeof(CH392IPAddr)); // 将IP地址写入CH392Inf中 memcpy(CH392Inf.GWIPAddr,CH392GWIPAddr,sizeof(CH392GWIPAddr)); // 将网关IP地址写入CH392Inf中 memcpy(CH392Inf.MASKAddr,CH392IPMask,sizeof(CH392IPMask)); // 将子网掩码写入CH392Inf中 } /********************************************************************************** * Function Name : CH392Init * Description : 配置CH392的IP,GWIP,MAC等参数,并初始化 * Input : None * Output : None * Return : 函数执行结果 **********************************************************************************/ UINT8 CH392Init(void) { UINT8 i; i = CH392CMDCheckExist(0x65); if(i != 0x9A) return CH392_ERR_UNKNOW; /* 测试命令,如果无法通过返回0XFA */ /* 返回0XFA一般为硬件错误或者读写时序不对 */ #if (CH392_OP_INTERFACE_MODE == 5) #ifdef UART_WORK_BAUDRATE CH392CMDSetUartBaudRate(UART_WORK_BAUDRATE); /* 设置波特率 */ delay_ms(10); Set_MCU_BaudRate(); i = xReadCH392Data(); /* 如果设置成功,CH392返回CMD_ERR_SUCCESS */ if(i == CMD_ERR_SUCCESS)printf("Set Success\r\n"); #endif #endif DEBUG_SHOW_VALUE(i) CH392CMDSetIPAddr(CH392Inf.IPAddr); /* 设置CH392的IP地址 */ CH392CMDSetGWIPAddr(CH392Inf.GWIPAddr); /* 设置网关地址 */ CH392CMDSetMASKAddr(CH392Inf.MASKAddr); /* 设置子网掩码,默认为255.255.255.0*/ i = CH392CMDInitCH392(); /* 初始化CH392芯片 */ DEBUG_SHOW_VALUE(i) return i; } /********************************************************************************** * Function Name : mStopIfError * Description : 调试使用,显示错误代码,并停机 * Input : iError * Output : None * Return : None **********************************************************************************/ void mStopIfError(UINT8 iError) { if (iError == CMD_ERR_SUCCESS) return; // 操作成功 printf("Error: %02X\r\n", (UINT16)iError); //显示错误 while ( 1 ) { delay_ms(200); delay_ms(200); } } void InitSockets (void) { uint8_t r = 0; for(int i=0;i