![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Com port + TBits [D5, WinXP]
Sheriff © (2002-12-20 08:42:00)Здравствуйте! Проблема в следующем:
есть структура TBits, она заполняется и отправляется в порт
var
Buf1: TBits;
begin
Buf1:=TBits.Create;
Buf1.Size:=80;
...
заполнение
...
if CPort1.Write(Buf1,sizeOf(Buf1))>0 then
Memo1.Lines.Add(IntToStr(bt));
Buf1.Free;
end;
на приемной стороне:
var Buf: Byte;
begin
while CPort1.Read(Buf,sizeOf(Buf))>0 do begin
//перевод байта в двоичное представление
Memo1.Lines.Add(DecToBin(Buf,8));
end;
end;
Несовпадают отправленная принятая информация.
Вот и вопрос: как реально отправляется в порт структура TBits и стоит ли вообще связываться с TBits? Может может проще работать с массивом байт?
Спасибо.
Digitman (2002-12-20 10:11:00) [1]Конкретно с TBits "поэлегантней" не получится
Хотя ничто не мешает тебе взять исходники класса за основу и чуть-чуть доработать их в части опубликования св-ва, возвращающего значение поля FBits
Sheriff (2002-12-20 09:44:00) [2]buf: array[0..8] of Byte;
Это уже работает.
Хотелось поэлегантней изголиться. ;) Впрочем, читать с порта все равно придется байтами.
Большое спасибо.
Digitman (2002-12-20 09:41:00) [3]Не пойдет TBits для этой цели. Нет у этого класса свойств/методов доступа к данным.
Используй, например
var
buf: array[...] of Byte;
Sheriff (2002-12-20 09:08:00) [4]Извиняюсь за расхлябанность в терминах.
Нужно объявлять указатель на TBits? PBits = ^TBits, а затем работать с ним?
CPort1: TComPort;
procedure TForm1.CPort1RxChar(Sender: TObject; Count: Integer);
var Buf: Byte;
begin
while CPort1.Read(Buf,sizeOf(Buf))>0 do begin
Memo1.Lines.Add(DecToBin(Buf,8));
end;
end;
Digitman (2002-12-20 08:50:00) [5]TBits - это не структура ! Это класс !
Digitman (2002-12-20 08:49:00) [6]Отправляешь ты не собственно данные, хранимые объектом TBits, а адрес объекта класса TBits в памяти.
И - что есть в дан.случае CPort1 ?