Гость
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Корректный прием данных от устройства / 8 сообщений из 8, страница 1 из 1
27.01.2022, 11:37
    #40129843
STestS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректный прием данных от устройства
Здравствуйте.
Возникла проблема при приеме сообщений от устройства. Использую SocketClient

Отправляю
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
procedure TForm1.Button5Click(Sender: TObject);
var
  Buf: array[0..7] of Byte;
  res: string;
begin
  Buf[0] := $01;
  Buf[1] := $03;
  Buf[2] := $10;
  Buf[3] := $09;
  Buf[4] := $00;
  Buf[5] := $02;
  Buf[6] := $10;
  Buf[7] := $C9;

  Memo1.Lines.Add('Size - ' + IntToStr(SizeOf(Buf)));
  ClientSocket1.Socket.SendBuf(Buf, SizeOf(Buf))
end;


Читаю
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
var
  res: AnsiString;
  val: Single;
  i, n: Integer;
begin
  i := 0;
  n := 0;
  res := '';
  i := Socket.ReceiveLength;
  Sleep(100);
  res := Socket.ReceiveText;

  Memo1.Lines.Add(res);
end;


В Мемо вижу такое
Код: pascal
1.
2.
Size - 8
A·Ч


А в дэбаге строки такое
Код: pascal
1.
#1#3#4'AРf'#0'ДV'


Мне нужно что бы ответ выглядит вот так
Код: pascal
1.
0103000A0002


Подскажите что я не так делаю... Спасибо.
...
Рейтинг: 0 / 0
27.01.2022, 12:34
    #40129855
goldmi45
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректный прием данных от устройства
STestS,

вы отправляете как буфер, а читаете, как текст.
...
Рейтинг: 0 / 0
27.01.2022, 13:00
    #40129868
STestS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректный прием данных от устройства
goldmi45,

Тут думаю вы правы... Когда я пробую отправить просто текст устройство не отвечает а когда буфер тогда работает. Как тогда принять буфер?
...
Рейтинг: 0 / 0
27.01.2022, 14:17
    #40129901
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректный прием данных от устройства
STestS
Как тогда принять буфер?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
var
  buf: array of Byte;
  len, read: Integer;
  res: string;
begin
  len := Socket.ReceiveLength;
  SetLength(buf, len)
  read := Socket.ReceiveBuf(buf[0], len);
  SetLength(res, read * 2);
  BinToHex(@Buf[0], PChar(res), Length(res) * SizeOf(Char))
  Memo1.Lines.Add(res);
end;
...
Рейтинг: 0 / 0
27.01.2022, 15:30
    #40129940
STestS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректный прием данных от устройства
_Vasilisk_,

Спасибо за ответ.
До вашего ответа я пробовал свой вариант
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
  SetLength(buf, (Socket.ReceiveLength));
  for i := 0 to High(buf) do
  begin
    Socket.ReceiveBuf(buf[i], 1);
  end;
  for n := 0 to High(buf) do
  begin
    Memo1.Lines.Add(ByteToHex(buf[n]));
  end;



он у меня срабатывает каждый раз а ваш через раз как то...
...
Рейтинг: 0 / 0
27.01.2022, 16:15
    #40129963
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректный прием данных от устройства
STestS
а ваш через раз как то...
анализировать значение переменной read - это задание на дом.

А вообще, при отсутствии информации о размере пакета, все сетевые приемники будут работать через раз.
...
Рейтинг: 0 / 0
27.01.2022, 16:30
    #40129972
STestS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректный прием данных от устройства
_Vasilisk_,

я понимаю о чем вы.
Получается либо проблемы со связью либо с прибором...
...
Рейтинг: 0 / 0
27.01.2022, 18:41
    #40130032
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректный прием данных от устройства
STestS
_Vasilisk_,

я понимаю о чем вы.
Получается либо проблемы со связью либо с прибором...
Нет, проблемы с логикой вычитывания в первую очередь.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Корректный прием данных от устройства / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]