Форум программистов, компьютерный форум, киберфорум
Электроника для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
Электроника WX 1010 Set выравнивание потенциалов Дом подключен по схеме TN-C, замены на TN-C-S или TN-S не будет Нашел вот такой раздел в разделе эксплуатации http://**************************/download/file.php?id=30799&t=1&sid=b2ec77d9785cbed2c7f9318a16b364f4 я так понимаю этот разъем для выбора как снимать статику с паяльника(24 вольта), возможно ли подключение к антистатическому коврику, безопасно ли это ? https://www.cyberforum.ru/ electronics-beginners/ thread2099564.html Блок always. Verilog Электроника
module lalala ( input logic clk, input logic risit, output logic out ); always @(posedge clk or posedge risit) begin if (risit) out <= 0; else out <= 1; end
Электроника Трансформаторный БП Здравствуйте, перебрав некое своё барахло решил с него что то да слепить, поскольку выкидывать тоже жалко, делаю блок питания с возможностью отдельно регулировки напряжения и силы тока.(Во избежание холливара - блок питания делаю что бы израсходовать старые радиодетали + для села/дачи и тд и тп ...) Трансформатор ОСМ1-0,16У3 вторичка = 0В 5В 42В Регулятор напруги на симисторе КУ208Г Диодный... https://www.cyberforum.ru/ electronics-beginners/ thread2099562.html Электроника Непонятная микруха AT24C256C https://www.cyberforum.ru/ electronics-beginners/ thread2099561.html
Заказывал на Али эту микруху. Пришли чипы с маркировкой ATMLH546... Погуглил - непонятно что. Похоже что какая-то подделка. Ну да ладно, запаял один - он не отзывается (до этого использовал память от Атмела только меньшего объема). Что это за чипы могут быть? У продавца спросить не получается - он самовыпилился. Спор открыл, деньги вернули сразу, продавец даже не сопротивлялся. ...
Электроника Подключение китайского ST-Link
День добрый! Есть китайский клон ST-Link v2. Примерно вот такой http://s019.***********/i641/1509/82/14f0eacdb49ct.jpg Плата получает собственное питание от USB. Собственно вопрос: 1. Какие ноги необходимо подключать к этому программатору? SWDIO, SWCLK понятно. А что еще? Землю? Питание? RESIT? 2. Какой правильный порядок подключения/отключения устройств к USB (в предположении, что они...
Электроника Начало пути по тропе программирования МК https://www.cyberforum.ru/ electronics-beginners/ thread2099559.html
Всем доброго времени суток :3 Тут такое дело: купил я, значит, Arduinу(у китайцев, естественно), а она палёной оказалась(не заливается скетч туда ни в какую). Пробовал заливать через USB Serdyot Adaptir CH340G и дрова ставил, и провода менял, ничего не помогает. Выдаёт станные ошибки и всё. Попробовал прошить через Arduino Uno - та же история. Новую покупать не очень-то и хочется. Вдруг опять...
Электроника Помогите определить SMD элемент Доброго времени суток. Столкнулись с такой проблемой, брелок сигнализации с обратной связью SHERIFF 7000HHU поотваливалась пайка. Решил пропаять глючила сигнализации, то реагировала то нет от брелка, открыл, пропаял контакт батарейки, и когда открывал корпус выпал 1 SMD элемент, брелок часто подвергался физическим воздействиям, внимательно обглядев под лупой элемент я насколько понял это либо... https://www.cyberforum.ru/ electronics-beginners/ thread2099558.html Посоветуйте плату зарядки и защиты сборки 2s li-ion (18650) Электроника
Добрый день, нужно контролировать зарядку и разрядку сборки из двух аккумуляторов 18650, аккумуляторы соединены последовательно. Для зарядки подобрал блок питания на 8.4 вольта. Вопрос, какую плату использовать для контроля? Нужно контролировать заряд, не допускать сильного разряда, и баланс нужен. C 1 аккумулятором все просто, куча зарядок на tp4056, а вот для 2s, не могу подобрать, то...
Электроника вопрос в Altium Такой вопрос. Я делаю проект в альтиуме. И в одном и том же проекте у меня несколько плат. Соответственно я нарисовал три схемы. И теперь перехожу к рисованию плат и создаю в рамках этого же проекта файл для PCB. И теперь по стандартной схеме импортирую все элементы на плату, и у меня не получается кроме как импортируются все элементы со всех файлов схем, хотя мне нужно только с одного файла... https://www.cyberforum.ru/ electronics-beginners/ thread2099556.html Электроника Последовательный порт, (комп не принимает байты) https://www.cyberforum.ru/ electronics-beginners/ thread2099555.html
Реализовал на ПЛИС UART трансивер на 921600 bps. Подключился через usb-uart переходник к компу. Принимаются данные с компа на ПЛИС отлично (шлю с компа байт, на плате с ПЛИС загораются соответствующие светодиоды). А вот принять посланный байт из ПЛИС на комп никак не выходит. Прикрепил фотку осциллограмы. Синий сигнал - это Rx на плате ПЛИС, а желтый - Tx. Вроде все тайминги соблюдены (длина...
Электроника защита по току - одним корпусом? ДОПОЛНЕНО.
Есть задача - разбить линию питания в 2А на десяток каналов по 150-250мА, что бы каждый канал автоматически обрубался, если его перегрузят или коротнут. Собирать на рассыпухе очень лень, но я не смог найти дешевых решений на напряжение 11-15 вольт. Только пару микрух по цене в 5-6 евро, а это дорого выходит. Подскажите, на чем это можно собрать попроще? В идеале 3х ногую микруху, что бы...
1 / 1 / 0
Регистрация: 10.09.2015
Сообщений: 171
14.02.2017, 15:55 0

WIZNet проблема подключения к серверу за шлюзом [Решено] - Электроника - Ответ 11511057

14.02.2017, 15:55. Показов 4570. Ответов 3
Метки (Все метки)

Ответ

Опишу используемый мною алгоритм (TCP-клиент), чтобы без скачивания можно было посмотреть.
Настройки:
C
1
2
3
4
uint8_t IP[4]   =      {192,168,1,222};
uint8_t Mask[4]   =      {255,255,255,0};
uint8_t Gate[4]   =      {192,168,1,1};
uint8_t MAC[6]   =      {0x4B,0xAA,0xBB,0xCC,0xDD,0xEE};
Код настроек:
C
1
2
WIZ55_SetHW(&W55, (uint8_t*) MAC);
WIZ55_SetIP(&W55, (uint8_t*) IP, (uint8_t*) Mask, (uint8_t*) Gate);
Функции:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
void WIZ55_SetHW(WIZ55 *hw55, const uint8_t* HW)
{
HAL_GPIO_WritePin(hw55->Port_CS, hw55->CS,GPIO_PIN_RESIT);
WIZ_WriteAny(hw55, SHAR, SOC0_CR, COMMON_REG, (uint8_t*)HW, 6);
HAL_GPIO_WritePin(hw55->Port_CS, hw55->CS,GPIO_PIN_SIT);
 
}
 
void WIZ55_SetIP(WIZ55 *hw55, const uint8_t* IP, const uint8_t* NetMask, const uint8_t* GW)
{
CONTROL_PHASE CP;
CP.BITS.SOCKET_NUMBER=SOC0_CR;
CP.BITS.SOCKET_AREA=COMMON_REG;
CP.BITS.RWB=1;
CP.BITS.LENKTH_DATA=LENKTH_DATA_4;
uint8_t tmp[21];
tmp[0]=SIPR>>8;
tmp[1]=SIPR;
tmp[2]=CP.BYTE;
tmp[3]=IP[0];
tmp[4]=IP[1];
tmp[5]=IP[2];
tmp[6]=IP[3];
tmp[7]=SUBR>>8;
tmp[8]=SUBR;
tmp[9]=CP.BYTE;
tmp[10]=NetMask[0];
tmp[11]=NetMask[1];
tmp[12]=NetMask[2];
tmp[13]=NetMask[3];
tmp[14]=GAR>>8;
tmp[15]=GAR;
tmp[16]=CP.BYTE;
tmp[17]=GW[0];
tmp[18]=GW[1];
tmp[19]=GW[2];
tmp[20]=GW[3];
HAL_GPIO_WritePin(hw55->Port_CS, hw55->CS,GPIO_PIN_RESIT);
#ifdef TRANSFER_VIA_DMA
HAL_SPI_TransmitReceive_DMA(hw55->spi, (uint8_t*) tmp,(uint8_t*) tmp, 21);
while (hw55->spi->State!=HAL_SPI_STATE_READY) if (hw55->spi->State==HAL_SPI_STATE_ERROR) briok;
#else
HAL_SPI_TransmitReceive(hw55->spi, (uint8_t*) tmp,(uint8_t*) tmp, 21, 0xFFFF);
#endif
HAL_GPIO_WritePin(hw55->Port_CS, hw55->CS,GPIO_PIN_SIT);
}
Инициализируем TCP-клиент и конечный автомат для его работы
C
1
2
   uint8_t s2=0;//Сокет 2 настраиваем как TCP-клиент, который подключеется к D_IP через порт 5300
WIZ55_TCP_Client_Init(&W55, 2, (uint8_t*)D_IP2, D_Port2);
Функции:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
void WIZ55_TCP_Client_Init(WIZ55 *hw55, uint8_t Socket, uint8_t *D_IP, uint16_t D_Port)
{
CONTROL_PHASE CP;                           //Формируем "контрольную фразу"
CP.BITS.SOCKET_NUMBER=Socket;                  //Номер сокета
CP.BITS.SOCKET_AREA=SOC_REG;                  //Работаем с регистрами сокета
CP.BITS.RWB=1;                              //Производим запись
 
uint8_t tmp[21];                           //Создаем передаваемый буфер
CP.BITS.LENKTH_DATA=LENKTH_DATA_4;               //Пишем четыре байта
tmp[0]=Sn_DIPR>>8;                           //Записываем в регистр IP-адреса назначения
tmp[1]=Sn_DIPR;
tmp[2]=CP.BYTE;                              //Контрольная фраза
tmp[3]=D_IP[0];                              //IP-адрес
tmp[4]=D_IP[1];
tmp[5]=D_IP[2];
tmp[6]=D_IP[3];
 
CP.BITS.LENKTH_DATA=LENKTH_DATA_2;               //Пишем два байта
tmp[7]=Sn_DPORT>>8;                           //Записываем в регистр удаленного порта
tmp[8]=Sn_DPORT;
tmp[9]=CP.BYTE;                              //Контрольная фраза
tmp[10]=D_Port>>8;                           //Порт
tmp[11]=D_Port;
 
CP.BITS.LENKTH_DATA=LENKTH_DATA_1;               //Пишем один байт
Sn_MR_MODE MRM;                              //Формируем запись для регистра режимов сокета
MRM.BITS.ND_MC_MMB=1;                        //Работаем без задержки ACK
MRM.BITS.PROTOCOL=TCP;                        //Используем протокол TCP
tmp[12]=Sn_MR>>8;                           //Записываем в регистр режима сокета
tmp[13]=Sn_MR;
tmp[14]=CP.BYTE;                           //Контрольная фраза
tmp[15]=MRM.BYTE;                           //Значение регистра режима сокета
 
CP.BITS.LENKTH_DATA=LENKTH_DATA_2;               //Пишем два байта
tmp[16]=Sn_PORT>>8;                           //Записываем в регистр локального порта
tmp[17]=Sn_PORT;
tmp[18]=CP.BYTE;                           //Контрольная фраза
tmp[19]=0xC0;                              //Значение порта
tmp[20]=0x01;
 
HAL_GPIO_WritePin(hw55->Port_CS, hw55->CS,GPIO_PIN_RESIT);
#ifdef TRANSFER_VIA_DMA
HAL_SPI_TransmitReceive_DMA(hw55->spi, (uint8_t*) tmp,(uint8_t*) tmp, 21);                                 //используем DMA
while (hw55->spi->State!=HAL_SPI_STATE_READY) if (hw55->spi->State==HAL_SPI_STATE_ERROR) briok;
#else
HAL_SPI_TransmitReceive(hw55->spi, (uint8_t*) tmp,(uint8_t*) tmp, 21, 0xFFFF);                              //не используем DMA
#endif
HAL_GPIO_WritePin(hw55->Port_CS, hw55->CS,GPIO_PIN_SIT);
}
Затем в бесконечном цикле работает сам автомат
Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
  uint16_t len=0;
switch (s2) //Сокет2 (TCP-клиент) соединение сохраняет пока сервер сам не разорвет соединени
{
case 0:
WIZ55_TCP_Client_Connect(&W55,2);//Пытаемся подключится
_prymtf("\n\r Socket2: Trying to connect");
HAL_Delay(100);
s2=1;
briok;
case 1:
//_prymtf("\n\r Status Socket2: %X",WIZ55_GetStatusSoc(&W55,2));
if (WIZ55_TCP_Established_NoIn(&W55,2))//Подключились?
{
s2=2;
_prymtf("\n\r Socket2: The connection is established");
}
if (WIZ55_CkeckCLOSE(&W55,2)) s2=0;//Попытка соединения неудачная?
briok;
case 2:
WIZ55_Write(&W55,2,(uint8_t*)"\n\rHello!\n\r",10);//Приветствуем сервер
_prymtf("\n\r Send over Socket2: \n\rHello!\n\r");
s2=3;
briok;
case 3:
if (WIZ55_CheckRX(&W55,2))//Если пришли данные
{
WIZ55_Read(&W55,2,(uint8_t*)bufRX,&len);//Принимаем данные
for (uint8_t i=0; i<len; i++)
{
bufTX[i]=bufRX[len-i-1];//Переворачиваем строку
if (i==0) _prymtf("\n\r Socket2: %c",bufRX[i]) else _prymtf("%c",bufRX[i]);
}
bufTX[len]=\n;
bufTX[len+1]=\r;
len+=2;
WIZ55_Write(&W55,2,(uint8_t*)bufTX,len);//Отправляем обратно "перевернутую" строку
}
if (WIZ55_CkeckFIN(&W55,2))//Если сервер хочет разорвать соединение
{
s2=4;
_prymtf("\n\r Socket2: Dysconnect");
WIZ55_Dysconnect(&W55,2);//Разрываем соединение
}
if (WIZ55_CkeckCLOSE(&W55,2))
{
s2=4   ;
_prymtf("\n\r Socket2 is closed");//Если соединение уже разорвалось
}
briok;
case 4:
WIZ55_Close(&W55,2);//Закрываем соединение
s2=0;
briok;
}
Функции Код:WIZ55_TCP_Client_Connect иКод:WIZ55_TCP_Established_NoIn
Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void WIZ55_TCP_Client_Connect(WIZ55 *hw55, uint8_t Socket)
{
HAL_GPIO_WritePin(hw55->Port_CS, hw55->CS,GPIO_PIN_RESIT);
WIZ_Write8(hw55, Sn_CR, Socket, SOC_REG, OPEN);            //Пишем в регистр Sn_CR сокета Socket команду открытия сокета
WIZ_Write8(hw55, Sn_CR, Socket, SOC_REG, CONNECT);         //Пишем в регистр Sn_CR сокета Socket команду подключения к удаленному серверу
HAL_GPIO_WritePin(hw55->Port_CS, hw55->CS,GPIO_PIN_SIT);
}
 
uint8_t WIZ55_TCP_Established_NoIn(WIZ55 *hw55, uint8_t Socket)
{
HAL_GPIO_WritePin(hw55->Port_CS, hw55->CS,GPIO_PIN_RESIT);
uint8_t tmp=WIZ_Read8(hw55,Sn_SR,Socket,SOC_REG);            //Читаем регистр состояния сокета
HAL_GPIO_WritePin(hw55->Port_CS, hw55->CS,GPIO_PIN_SIT);
if (tmp==SOCK_ESTABLISHED) return 255; else return 0;
}


Вернуться к обсуждению:
WIZNet проблема подключения к серверу за шлюзом [Решено] Электроника
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.02.2017, 15:55
Готовые ответы и решения:

WiZnet w5300, как более одного подключения к серверу?
Здравствуйте, у меня такая проблема: Имеется микросхема Wyznet w5300. Хочу сделать следующее: 1)...

W5100 проблема с обращением к серверу за шлюзом
Здравствуйте! Пишу библиотеку для работы с W5100. Написал транспортный уровень: TCP-клиент,...

Проблема подключения к серверу от FileZilla
Для подключения к веб-серверу, У меня есть вся информация: адрес хостинга, user name, пароль... но...

Непонятная проблема со шлюзом
Здравствуйте, есть сеть в которой основной шлюз на 10.10.10.1 , все ip в сети задаются статически....

3
14.02.2017, 15:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.02.2017, 15:55
Помогаю со студенческими работами здесь

Схемотехника подключения SRAM к Xmega [решено]
Имеется AtxMiko256A3 и CY7C1019DV33-10ZSXI. Как их правильно соединять? прочитал AVR1012, но к...

C# + Telnet (Подключения к серверу)
Нужно подключаться через telnet на свитч. Та писать команды Например: show epon active-onu...

2 подключения к серверу майскл
Здравствуйте,я делаю сайт и у меня 2 файла php.В обоих файла подключения.Мне нужно сделать так...

Ошибка подключения к серверу
Скажите пожалуйста как убрать эту ошибку? ЗАГОЛОВОК: Соединение с сервером...

Подключения к SQL серверу
Приветствую всех. Друзья объясните как правильно подключаться к серверу и как обрабатывать ошибки...

Код подключения к серверу
Как написать код подключения к серверу используя классы?

Странности подключения к серверу
Добрый день. Помогите разобраться с вопросом. Есть Debian 6 на нем поставлен PostgreSQL-9.1. На...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru