|
原始以太网数据收发也非常方便,方便大家做自定义协议。多个板子直接做数据透传也极其方便,速度快,距离远等优点。
RL-TCPnet V7.X专门提供了函数netETH_ReceiveRaw和netETH_SendRaw
发送:
- char SourceMAC[6] = {0x1E,0x30,0x6C,0xA2,0x45,0x5E};
- char DestinationMAC[6] = {0x1E,0x30,0x6C,0xA2,0x45,0x50};
- char buffer[2000] = {0x49};
- void DM9162TCPnetTest(void)
- {
- int32_t iCount;
- uint8_t *sendbuf;
- netStatus res;
- const uint16_t usMaxBlockTime = 2; /* 延迟周期 */
- uint32_t EvtFlag;
- uint32_t t1, t2;
- udp_sock = netUDP_GetSocket (udp_cb_func);
- if (udp_sock >= 0)
- {
- netUDP_Open (udp_sock, Local_NUM);
- //netUDP_SetOption (udp_sock, netUDP_OptionInterface, NET_IF_CLASS_ETH | 0);
- }
- while (1)
- {
- EvtFlag = osThreadFlagsWait(0x00000007U, osFlagsWaitAny, usMaxBlockTime);
- switch (EvtFlag)
- {
- /* 接收到K1键按下,给远程TCP客户端发送数据 */
- case KEY1_BIT0:
- iCount = 100;
- t1 = osKernelGetTickCount ();
- printf("------%d\r\n", t1);
- do
- {
- memcpy (&buffer[0], &DestinationMAC[0], 6);
- memcpy (&buffer[6], &SourceMAC[0], 6);
- buffer[12] = 0x88;
- buffer[13] = 0x8E;
- res = netETH_SendRaw (0, (const uint8_t *)buffer, 1500);
- if(res == netOK)iCount--;
- }while(iCount > 0);
- t2 = osKernelGetTickCount ();
- printf("测试速度 = %4.1fMB/S\r\n", (float)(100.0*1500)/(t2-t1) * 1000/1024/1024);
- break;
- /* 其他的键值不处理 */
- default:
- break;
- }
- }
- }
复制代码
接收端:
- void netETH_ReceiveRaw (uint32_t if_num, const uint8_t *buf, uint32_t len) {
- static uint32_t i = 0;
- i++;
- printf("%d %d\r\n", i, len);
- }
复制代码
|
评分
-
查看全部评分
|