Консультация № 187080
05.01.2013, 11:31
133.87 руб.
0 2 0
Здравствуйте! Прошу помощи в следующем вопросе:
Делаю приложение с использованием ClientSocket, два ClientSocket. Использую их для связи с устройством 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. Если подключать по одному устройству, то проблем с отключением нет. Работает без ошибок. Если включить оба устройства в хаб, то практически сразу ошибка.

Обсуждение

Неизвестный
05.01.2013, 17:51
общий
Адресаты:
10053 Программа на вашем хост-компьютере разорвала установленное подключение.

антивирус?
давно
Посетитель
352040
133
05.01.2013, 18:28
общий
Да нет. Антивирус не причем. Сейчас включил, работает без вопросов и ошибок. Не пойму в чем проблема. Буду код проверять.Не бывает чудес.
Об авторе:
Пользуюсь Delphi Enterprise Version7.
Форма ответа