Модераторы: stron
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Внешняя компонента для 1С 7.7 WinSock, Зависает на recv 
V
    Опции темы
WantToProg
Дата 13.4.2009, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 13.4.2009

Репутация: нет
Всего: нет



Доброго времени суток. Возникла необходимость разработки клиента winsock для работы со сканером штрихкодов. Сканер является winsock сервером tcp.
Компоненту для работы, а это подключение, передача, прием, отключение разрабатываю на delphi, хотя язык не принципиален.
Основная проблема это функция recv. То есть, connect, send, disconnect отрабатывается отлично, а вот ожидание приема данных вешает 1С. 
Конкретно не работает в данном месте кода:
Код

 function T_Socket.RecvData: String;
  var res: Integer;
    begin
    if Connected=False then begin
       Error('Host not found');
    end;

    Result:='';

    repeat

    res := recv(Sock, buff, SizeOf(buff), 0);
    if res=SOCKET_ERROR then begin
       Error('socket error');
       buff[1]:=#0;
    end else begin
       buff[res+1]:=#0;
    end;
    Result:=Result+String(pchar(@buff[1]));
    if EndOfLine='' then break;
    if pos(EndOfLine, Result)>0 then break; 
    Until False; 
  end;


Сокет работает в неблокирующем режиме и при отсутствии данных выдает ошибку SOCKET_ERROR, WSAGetLastError()=WSAEWOULDBLOCK.
То есть в принципе отрабатывает правильно, но по какой причине зависает 1С, я к сожалению понять не могу.
Хоть какие то варианты подскажите, или куда думать, а то уже весь мозг сломал пытаясь решить проблему.
С уважением WantToProg!
PM MAIL   Вверх
WantToProg
Дата 13.4.2009, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 13.4.2009

Репутация: нет
Всего: нет



Так, проблема была решена усилиями воспаленного мозга. Если интересно, могу посвятить.
Правда есть еще один вопрос, но он скорее всего не к этой теме. Хотя задам здесь
Код

unsigned char SendData[] =
            {
                0x1b,'$',
                'H', 'e', 'l', 'l', 'o', ' ',
                'W', 'o', 'r', 'l', 'd',
            };



Надо этот код переделать в delphi.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "1C: Предприятие, SAP, ERP и учётные системы"
stron

Запрещается!

1. Обсуждение крэков, кейгенов и других подобных программ

Пробуйте искать сами или обращайтесь в приват к участникам форума.

Темы с подобными вещами будут немедленно удаляться, а нарушители - получать предупреждения.

Также запрещается обсуждение проблем работы этих программ (что куда вписать, куда что скопировать и т.п...)

2. Давать ссылки на взломанные продукты

  • Пожалуйста, пользуйтесь поиском перед тем, как задать вопрос - возможно ответ уже есть на форуме.
  • Название темы должно отражать её суть
  • Действия модераторов можно обсудить здесь

С уважением, stron, Pegas.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | 1C: Предприятие, SAP, ERP и учётные системы | Следующая тема »


 




[ Время генерации скрипта: 0.0388 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.