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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2007, 08:25   #1
Blondinka
Пользователь
 
Регистрация: 14.09.2007
Сообщений: 16
Вопрос Строка символов в виде байтов

Пишем программу управления прибором через СОМ-порт.
Данные принимаем в виде строки из данных разных типов(Float,unsigned int, unsigned long, unsigned char). Как правильнее и проще представить эту строку в виде последовательности байтов или бит для её дальнейшей обработки.
Blondinka это моё мироощущение при програмировании...
Blondinka вне форума Ответить с цитированием
Старый 14.09.2007, 09:18   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А в чем заключается дальнейшая обработка?

P.S. Строку в байты переводить не обязательно если очень уж хоцца то мона так <переменка байтовая>:=byte(s[i])
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.09.2007, 09:49   #3
Blondinka
Пользователь
 
Регистрация: 14.09.2007
Сообщений: 16
По умолчанию Пояснения!!!

Прибор регулярно посылает данные о своём состоянии(20-30 параметров) разных типов в виде длинной строки символов.
Вот пример строки: ?y?yI.?.....?O.A¦?D<4?7;Ao.Bq=.B??. B?e@B??gB®GXB..*A..*A?u??Ay3Axg&A+? 8A¤?O?.....................I..,
Где первые 4 байта заголовок, 5-й идентификатор, в следующих 2 байтах передаётся 16 параметров(каждый бит да-нет),далее числа разных типов в перемешку.
Правила построения строки знаем.
Проблема в том, как всё это разобрать по переменным(каждому параметру прибора своя переменная).
Blondinka это моё мироощущение при програмировании...
Blondinka вне форума Ответить с цитированием
Старый 14.09.2007, 09:53   #4
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Я в своей проге делал следующим образом
....
str:='';
for i:=1 to Rxbytes do begin
str:=str+'$'+format('%.2x',[buffer[i]])+',';
memo1.Text:=memo1.Text+str;
end;
где RXBytes-кол-во принятых байтж
buffer-массив принятых байт
SERG1980 вне форума Ответить с цитированием
Старый 14.09.2007, 10:01   #5
Blondinka
Пользователь
 
Регистрация: 14.09.2007
Сообщений: 16
По умолчанию Ответ SERG1980

Меня интересуют не символы, а представление уже принятой строки в виде байтов!
Потому как встречаются и неотображаемые символы!
Blondinka это моё мироощущение при програмировании...
Blondinka вне форума Ответить с цитированием
Старый 14.09.2007, 10:04   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Блондинка, можеш попробовать сделать переменку типа запись где

=record
Zagolovok:array[1..4] of byte
id:byte;
param:word;

Ну и так далее по типам, поскольку Правила построения строки знаем,

end;

ну и присваивать приведением типов эту строку в переменную типа эта запись

P.S. ну я так делал на контроллерах.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.09.2007, 10:08   #7
Blondinka
Пользователь
 
Регистрация: 14.09.2007
Сообщений: 16
Радость

А можно поподробнее, я ж блондинка...
Blondinka это моё мироощущение при програмировании...
Blondinka вне форума Ответить с цитированием
Старый 14.09.2007, 10:29   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Блондинок уважаю и люблю )

Вот например так :
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
r=record // определяем тип, который поможет отделить нужные байты
  // по полям
 Zagolovok:array[1..4] of byte;
 id:byte;
 param:word;
 k:real;
 i:integer;
end;

  TForm1 = class(TForm)
    ListBox1: TListBox;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var kr:r; s:string; // это переменки куда и откуда будут данные //передаваться
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
// Предположим получаеш строку вида :
s:=' ?y?yI.?.....?O.A¦?D<4?7;Ao.Bq=.B??.B?e@B??gB®GXB.. *A..*A?u??
move(s[1],kr,sizeof(kr)); // а это ты строку переносиш в переменку, 
 // в которой данные из этой строки распределятся по полям
// ессно ты поля определи по условиям

end;

end.
Идея яснышка? )
I'm learning to live...

Последний раз редактировалось mihali4; 08.12.2009 в 14:14.
Stilet вне форума Ответить с цитированием
Старый 14.09.2007, 10:35   #9
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Цитата:
Сообщение от Blondinka Посмотреть сообщение
Прибор регулярно посылает данные о своём состоянии(20-30 параметров) разных типов в виде длинной строки символов.
Вот пример строки: ?y?yI.?.....?O.A¦?D<4?7;Ao.Bq=.B??. B?e@B??gB®GXB..*A..*A?u??Ay3Axg&A+? 8A¤?O?.....................I..,
параметру прибора своя переменная).
Я так понял эту строку ты видишь где у себя в программе, если да то можно привести кусок кода где ты считываешь данные с сом порта. И если не трудно какой компонент порта ты используешь(если вообще ты его используешь)?
SERG1980 вне форума Ответить с цитированием
Старый 14.09.2007, 10:35   #10
Blondinka
Пользователь
 
Регистрация: 14.09.2007
Сообщений: 16
Радость Спасибо!!!!

Спасибо!
Пойду попробую!
Blondinka это моё мироощущение при програмировании...
Blondinka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строка больше 255 символов? TwiX Общие вопросы Delphi 6 07.12.2009 16:53
Строка длинною более 255 символов Kuzya59 Общие вопросы Delphi 7 27.09.2009 20:29
Как узнать состоит ли строка из одных числовых символов DarkEvil Общие вопросы Delphi 12 13.08.2009 08:44
Данные из буфера обмена в виде массива байтов eda Microsoft Office Excel 10 12.08.2009 17:00
C++,строка символов Alik-Soldier Помощь студентам 1 01.05.2009 16:57