Есть ли контроллеры которые могут мониторить интернет на выходах LAN?
Для эксперимента есть роутер ZBT Wi-fi MAGIC с USB разъемом под модем.
Код: Выделить всё
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////TX_ARP_router: (запрос)
void TX_ARP_router(void)
{
/////////////////////////////////////////////// TX: 0xFF > Destination MAC:
TX_int[0] = 0xFF;
TX_int[1] = 0xFF;
TX_int[2] = 0xFF;
TX_int[3] = 0xFF;
TX_int[4] = 0xFF;
TX_int[5] = 0xFF;
/////////////////////////////////////////////// TX: Source MAC:
TX_int[6] = 0x00;
TX_int[7] = 0x08;
TX_int[8] = 0xdc;
TX_int[9] = 0x01;
TX_int[10] = 0x02;
TX_int[11] = 0x03;
/////////////////////////////////////////////// TX: Type: ARP (0x0806)
TX_int[12] = 0x08;
TX_int[13] = 0x06;
/////////////////////////////////////////////// TX: Hardware type: Ethernet (1)
TX_int[14] = 0x00;
TX_int[15] = 0x01;
/////////////////////////////////////////////// TX: Protocol type: IP (0x0800)
TX_int[16] = 0x08;
TX_int[17] = 0x00;
/////////////////////////////////////////////// TX: Hardware size: 6
TX_int[18] = 0x06;
/////////////////////////////////////////////// TX: Protocol size: 4
TX_int[19] = 0x04;
/////////////////////////////////////////////// TX: Opcode: request (1) (запрос)
TX_int[20] = 0x00;
TX_int[21] = 0x01;
/////////////////////////////////////////////// TX: Opcode: reply (2) (ответ)
//TX_int[20] = 0x00;
//TX_int[21] = 0x02;
/////////////////////////////////////////////// TX: 0x00 > Target MAC address:
TX_int[32] = 0x00;
TX_int[33] = 0x00;
TX_int[34] = 0x00;
TX_int[35] = 0x00;
TX_int[36] = 0x00;
TX_int[37] = 0x00;
/////////////////////////////////////////////// TX: Target IP address:
TX_int[38] = 192; // router
TX_int[39] = 168; // router
TX_int[40] = 0; // router
TX_int[41] = 1; // router
/////////////////////////////////////////////// TX: Sender MAC address:
TX_int[22] = 0x00; //
TX_int[23] = 0x08; //
TX_int[24] = 0xdc; //
TX_int[25] = 0x01; //
TX_int[26] = 0x02; //
TX_int[27] = 0x03; //
/////////////////////////////////////////////// TX: Sender IP address:
TX_int[28] = 192;
TX_int[29] = 168;
TX_int[30] = 0;
TX_int[31] = 3;
/////////////////////////////////////////////// TX: Padding(18 bytes):
for (xTX=42; xTX<60; xTX++) {
TX_int[xTX] = 0;
};
///////////////////////////////////////////////
//TX_MACRAW:
/////////////////////////////////////////////// TX: W5500:
//читаем начальный адрес для записи данных Socket_0 Sn_TX_WR MACRAW:
PORTB.2=0; // SS W5500
tx=0x00; SPI(); tx=0x24; SPI(); tx=0x08; SPI(); // Address Registers + Control Registers
tx=0x00; SPI(); add=rx; // Data -Sn_TX_WR0 -начальный адрес для записи данных //сарший регистр
tx=0x00; SPI(); add=(add<<8)|rx; // Data -Sn_TX_WR1 -начальный адрес для записи данных //младший регистр
PORTB.2=1; // SS W5500
/////////////////////////////////////////////// TX: W5500:
//пишем данные с начального адреса буфера Socket 0 TX Buffer MACRAW:
PORTB.2=0; // SS W5500
tx=(add>>8); SPI(); tx=add; SPI(); tx=0x14; SPI(); // Address = add
for (xTX=0; xTX<60; xTX++) {
tx = TX_int[xTX]; SPI(); add++; // ARP > W5500, TX_len=60
};
PORTB.2=1; // SS W5500
/////////////////////////////////////////////// TX: W5500:
//пишем регистр указателя Socket 0 Sn_TX_WR до увеличенного значения MACRAW:
PORTB.2=0; // SS W5500
tx=0x00; SPI(); tx=0x24; SPI(); tx=0x0C; SPI(); // Address Registers + Control Registers
tx=(add>>8); SPI(); // Data -Sn_TX_WR0 -конечный адрес передачи данных //сарший регистр
tx=add; SPI(); // Data -Sn_TX_WR1 -конечный адрес передачи данных //младший регистр
PORTB.2=1; // SS W5500
/////////////////////////////////////////////// TX: W5500:
//пишем команду передачи SEND Socket 0 Command MACRAW:
PORTB.2=0; // SS W5500
tx=0x00; SPI(); tx=0x01; SPI(); tx=0x0C; SPI(); // Address Registers + Control Registers
tx=0x21; SPI(); // Data -0x21 (команда SEND без автоматического ARP-запроса)
PORTB.2=1; // SS W5500
/////////////////////////////////////////////// TX: W5500:
//if (Sn_CR == 0x00) по окончанию передачи статус меняется на Sn_CR = 0x00
/////////////////////////////////////////////// TX: очистка буфера TX_int:
//for (xTX=0; xTX<UDP_TX_len; xTX++) { // UDP_TX_len = UDP(42) + TX_len(48)
// TX_int[xTX] = 0;
//};
}
////////////////////////////////////////////////////////////////////////////////
мне нечего добавитьroman.com писал(а):ты если хочешь что-то добавить... то пиши сразу свой вариант... без занудств))
это реальносьМуркиз писал(а):Работающая без глюков немецкая электроника ?
Это фантастика !