Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.09.2013, 18:46   #1
Plumazh
 
Регистрация: 09.09.2010
Сообщений: 5
По умолчанию управление через Socket

Добрый день! Никогда не работал с Socket-ами, да вот пришлось. Есть устройство подключенное как SocketServer.
Обмен информацией осуществляется пакетами. Запросный пакет от ПК к
модулю далее называется «команда», пакет от модуля называется «событие».
Команды и события делятся на общие, которые поддерживаются каждым
модулем и индивидуальные, которые поддерживаются только конкретным
типом модуля.
Любая команда и событие состоит из следующих частей:
- 1 байт идентификатора (ID);
- 0-3 байт данные команды или события.


Пример :

ID команды - 0x04 (410)
Назначение: Запросить серийный номер изделия

ID события - 0x04 (410)
Назначение: Серийный номер изделия
Данные: 0 байт серийный номер (Hi);
1 байт серийный номер (Lo);


Создал в Делфи7 проект положил на форму ClientSocket1 выполнил
подключение (как ни странно удачно) но на посылку текста сервер возвращает тот же текст и не реагирует на команды. Может поможет кто-нибудь?
Plumazh вне форума Ответить с цитированием
Старый 09.09.2013, 19:06   #2
asmprog
Пользователь
 
Регистрация: 10.08.2013
Сообщений: 67
По умолчанию

может сервер ждет не текст, а бинарные данные - пакуйте данные в структуры и шлите серверу.
asmprog вне форума Ответить с цитированием
Старый 09.09.2013, 19:55   #3
Plumazh
 
Регистрация: 09.09.2010
Сообщений: 5
По умолчанию

Наверняка вы правы, спасибо, а как это сделать не подскажите?
Plumazh вне форума Ответить с цитированием
Старый 09.09.2013, 20:40   #4
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

кусочек кода выложи поправим
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 09.09.2013, 20:49   #5
asmprog
Пользователь
 
Регистрация: 10.08.2013
Сообщений: 67
По умолчанию

как то так:
Код:
  SomeStruct = packed record

    _id : Byte;
    _data : array[0..2] of Byte;
  end;
...
procedure TForm1.FormCreate(Sender: TObject);
var
  ss : SomeStruct;
begin
...
  ss._id := $04;
  cs1.Socket.SendBuf(ss,SizeOf(SomeStruct));//cs1 := ClientSocket1
...
end;
asmprog вне форума Ответить с цитированием
Старый 10.09.2013, 00:29   #6
Plumazh
 
Регистрация: 09.09.2010
Сообщений: 5
По умолчанию

Спасибо, очень помогло! Я думал, что меня, как неопытного закозлят, оказывается ми не без ДОБРЫХ людей! Еще раз спасибо.
Plumazh вне форума Ответить с цитированием
Старый 10.09.2013, 02:31   #7
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

...ну да, ну да . А вы такой дескать наивный партизан: не буду сам читать доку на описание Ethernet-модулей http://vkmodule.com.ua/Ethernet/pdf/...t-модулями.pdf и не скажу, где взял и не буду смотреть шарповские исходники, приложенные к каждому из 4-х релейных гаджетов, пусть форумчане пороют, авось и прокатит работа. Тестовое задание что-ли?

Кстати, для посылки команд общего назначения (в которую $4 входит) размер структуры должен быть один байт и содержит только ID, читайте внимательнее протокол. Это ответ может содержать несколько байт и не общие команды. Да это и из исходников видно.



Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 10.09.2013 в 02:36.
raxp вне форума Ответить с цитированием
Старый 10.09.2013, 13:35   #8
Plumazh
 
Регистрация: 09.09.2010
Сообщений: 5
По умолчанию

Я конечно из города ПАРТИЗАНСКОЙ СЛАВЫ, но партизанничать и не думал. Видимо на прибор не зря деньги потратил, раз он такой знаменитый, я думал если модель напишу, то меня не поймут поэтому цитировал мануал. "книжецу переворошив ..." (прочитав мануал) как написать в Делфях, к стыду своему не понял, а в С не разбираюсь. Задания как такового нету - творю для души. Спасибо форумчанам, извиняюсь за дремучесть.
Plumazh вне форума Ответить с цитированием
Старый 10.09.2013, 14:07   #9
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

Вы поймите, что тема телепатов на форумах столь стара, что уже не смешно. Если это надо вам, а это надо вам, то привыкайте выкладывать информацию полностью. Потому как человек, не сталкивавшийся с "вашим" изделием (или допустим, такую ситуацию, когда доков нет в Интернете, а только по запросу от фирмы-производителя, что не так уж редко), ничем помочь вам не сможет.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 10.09.2013, 14:39   #10
Plumazh
 
Регистрация: 09.09.2010
Сообщений: 5
По умолчанию

Критика вполне конструктивная, УЧТУ.
Plumazh вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача данных через socket TCP/IP hidalgo C# (си шарп) 1 10.07.2012 19:03
передать массив через Socket.SendBuf(); raketa161 Работа с сетью в Delphi 14 19.05.2012 15:01
ip через socket xil C# (си шарп) 2 28.07.2011 19:14
Socket не отсылает сообщения через SEND и не принимает vaan.sk C/C++ Сетевое программирование 1 22.06.2011 20:57
Как передать структуру через socket moiav Общие вопросы C/C++ 6 18.05.2011 16:27