![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Всех с наступающим Новым Годом.
Делаю приложение с использованием ClientSocket. Я уже задавал вопрос по работе с этим устройством http://www.delphisources.ru/forum/sh...ghlight=Jerome, там разобрался все работает прекрасно. Сейчас у меня в "конструкторе" установленны два устройства Jerome, соединены через хаб с компом. При подключении все нормально, но через какое то время то один Jerom, то другой отваливаются. В логе Код:
31.12.2012 10:24:48 Команда на подключение к хосту 31.12.2012 10:24:48 Отправлен запрос авторизации-$KE,PSW,SET 31.12.2012 10:24:48 Получен ответ на авторизацию 31.12.2012 10:24:48 Команда на подключение к хосту 31.12.2012 10:24:48 Отправлен запрос авторизации-$KE,PSW,SET 31.12.2012 10:24:48 Получен ответ на авторизацию 31.12.2012 10:24:49 Подключение к хосту 192.168.10.51 установлено 31.12.2012 10:24:49 Подключение к хосту 192.168.10.52 установлено 31.12.2012 10:25:52 Ошибка №10053 31.12.2012 10:25:52 Подключение к хосту 192.168.10.52 потерянно 31.12.2012 10:25:56 Ошибка №10053 31.12.2012 10:25:58 Ошибка №10053 Соответсвенно выдается ошибка, что соединение закрыто. Так у меня происходит подключение устройства. Код:
procedure TForm1.Connection1;///Подключение первого хоста begin if Form1.N14.Checked = true then logs('Команда на подключение к хосту'); CS1.Port := StrToInt(LabeledEdit2.text);///Порт CS1.Address :=LabeledEdit1.text;///IP адрес CS1.Active :=True;///Открываем порт Sleep(100); CS1.Socket.SendText('$KE,PSW,SET,Jerome'#13#10);///Отправляем пароль logs('Отправлен запрос авторизации-$KE,PSW,SET'); Memo1.Text:=s; logs('Получен ответ на авторизацию '+(s)+''); end; procedure TForm1.CS1Read(Sender: TObject;Socket: TCustomWinSocket); begin s := Socket.ReceiveText; end; procedure TForm1.Connection2;///Подключение второго хоста begin if Form1.N14.Checked = true then logs('Команда на подключение к хосту'); CS2.Port := StrToInt(LabeledEdit4.text); CS2.Address :=LabeledEdit3.text; CS2.Active :=True; Sleep(100); CS2.Socket.SendText('$KE,PSW,SET,Jerome'#13#10);ю logs('Отправлен запрос авторизации-$KE,PSW,SET'); Memo2.Text:=s1; logs('Получен ответ на авторизацию '+(s1)+''); end; procedure TForm1.CS2Read(Sender: TObject;Socket: TCustomWinSocket); begin s1:= Socket.ReceiveText; end; На включение или отключение команды отсылаю так. Код:
CS1.Socket.SendText('$KE,WR,1,1'#13#10);///Вкл. канала на первом хосте CS1.Socket.SendText('$KE,WR,1,0'#13#10);///Откл. канала на первом хосте CS2.Socket.SendText('$KE,WR,1,1'#13#10);///Второй хост P.S. Если подключать по одному устройству, то проблем с отключением нет. Работает без ошибок. Если включить оба устройства в хаб, то практически сразу ошибка. Последний раз редактировалось fofka, 31.12.2012 в 11:38. |