![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Я делаю проект на управление оборудованием через модуль Ethernet Jerome и столкнулся с рядом проблем:
1)Кодировка сообщений которые приходят с модуля. как приходит: ![]() как должно приходить: ![]() проблема именно в Buider'e 2009 т.к в Borland Delphi 7 такой проблемы нет, но чисто эстетически мне нравится Bulder. 2)После подключения примерно через 15-20 секунд выводится ошибка: Error 10060 ![]() искал в интернете решение проблемы, нашел только смутное объяснение о том , что программа превысила время данное ей на ответ. 3)Если я подключился к модулю каким либо образом (через браузер/стандартный терминал/свою программу) то на попытку подключиться к ней через мою программу снова выскакивает ошибки: ![]() или http://s1.ipicture.ru/uploads/20130208/C6qFwDJE.jpg но при этом я могу подключиться к модулю через браузер или стандартный терминал и ошибки не выскакивают. Код:
procedure TForm1.B1Click(Sender: TObject);
begin
CS1.Socket.SendText('$KE,PSW,SET,Jerome'+#13+#10);
end;
procedure TForm1.B2Click(Sender: TObject);
begin
CS1.Socket.SendText('$KE'+#13+#10);
end;
procedure TForm1.CS1Connect(Sender: TObject; Socket: TCustomWinSocket);
begin
Memo1.Lines.Add('Connect');
end;
procedure TForm1.CS1Read(Sender: TObject; Socket: TCustomWinSocket);
begin
Memo1.Lines.Add(CS1.Socket.ReceiveText);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
CS1.Close;
CS1.Active:=False;
CS1.Destroy;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Clear;
CS1.Active:=True;
CS1.Open;
end;
procedure TForm1.N1Click(Sender: TObject);
begin
CS1.Socket.SendText('$KE,WR,1,0'+#13+#10);
end;
procedure TForm1.N2Click(Sender: TObject);
begin
CS1.Socket.SendText('$KE,WR,1,1'+#13+#10);
end;
end.Последний раз редактировалось Dzman, 09.02.2013 в 11:33. |
|
#2
|
||||
|
||||
|
Скорее всего первое - это все та же ошибка D2009 и выше: String стало синонимом WideString. Попробуй в коде заменить все String на AnsiString.
|
|
#3
|
|||
|
|||
|
Цитата:
не помогло Реализовал: Код:
procedure TForm1.CS1Read(Sender: TObject; Socket: TCustomWinSocket); var S: AnsiString; begin S:=''; S:= CS1.Socket.ReceiveText; Memo1.Lines.Add(S); end; ![]() |
|
#4
|
|||
|
|||
|
вторая проблема:
вроде бы решил, но убого ![]() решил выключать и включать ClientSocket каждые 15 секунд. ошибка все равно есть, но программа после ошибки продолжает работать. Код:
procedure TForm1.Timer1Timer(Sender: TObject); begin m:=m+1; f:=m Mod 16; if f=15 then begin CS1.Active:=False; end; if f=1 then begin CS1.Active:=True end; end; Последний раз редактировалось Dzman, 08.02.2013 в 23:49. |
|
#5
|
|||
|
|||
|
решение второй проблемы:
1)модифицировал ClientSocket, закомментировал строку, которая выводила ошибки отдельными сообщениями. 2)в событие "Error" добавил подключение. Это по-быдловски и у меня потом могут быть какие-нибудь проблемы? Программа больше не выдает ошибку: 10060. версия без error 10060: V.3. опа и остальных ошибок нету, шикарно.)) Тема больше не актуальна, буду писать в Delphi 7. Последний раз редактировалось Dzman, 09.02.2013 в 13:34. |