Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.02.20;
Скачать: [xml.tar.bz2];

Вниз

Com port + TBits   Найти похожие ветки 

 
Sheriff   (2002-12-20 08:42) [0]

Здравствуйте! Проблема в следующем:
есть структура 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 08:49) [1]

Отправляешь ты не собственно данные, хранимые объектом TBits, а адрес объекта класса TBits в памяти.

И - что есть в дан.случае CPort1 ?


 
Digitman   (2002-12-20 08:50) [2]

TBits - это не структура ! Это класс !


 
Sheriff   (2002-12-20 09:08) [3]

Извиняюсь за расхлябанность в терминах.
Нужно объявлять указатель на 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 09:41) [4]

Не пойдет TBits для этой цели. Нет у этого класса свойств/методов доступа к данным.

Используй, например

var

buf: array[...] of Byte;



 
Sheriff   (2002-12-20 09:44) [5]

buf: array[0..8] of Byte;
Это уже работает.
Хотелось поэлегантней изголиться. ;) Впрочем, читать с порта все равно придется байтами.
Большое спасибо.


 
Digitman   (2002-12-20 10:11) [6]

Конкретно с TBits "поэлегантней" не получится
Хотя ничто не мешает тебе взять исходники класса за основу и чуть-чуть доработать их в части опубликования св-ва, возвращающего значение поля FBits




Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2003.02.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
3-63500
Ламер
2003-02-05 09:36
2003.02.20
Как в IBDataSet сделать Commit?


14-63826
Snake2000
2003-02-04 13:42
2003.02.20
CD на 5 гигов


8-63692
XHelp
2002-11-03 20:56
2003.02.20
Поворот рисунка


1-63651
vasilly
2003-02-11 19:48
2003.02.20
Как в рантайме заменить один комп. на другой с таким же именем?


1-63620
shodan
2003-02-11 14:54
2003.02.20
Печать





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский