Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.28;
Скачать: CL | DM;

Вниз

устройство возвращает через com порт данные. Как хранить?   Найти похожие ветки 

 
Zilog ©   (2004-11-11 15:19) [0]

устройство возвращает через com порт данные.
если пихнуть их в стринг - глючит, т.к. данные самые разные, и начинает прыгать длина стринга (если попадается ноль).

предложите pls, как правильно обработать эти данные?


 
Rem ©   (2004-11-11 15:37) [1]

Уважаемый!!!!

Если Вы работаете с COM портами, то должны разбираться в различиях между строкой и массивом! Зачем Вы беретесь за то, в чем ничерта не разбираетесь, и пытаетесь сохранить в строке то, что строкой не является?!!!

>>Как хранить?
>>предложите pls, как правильно обработать эти данные?

Так хранить или обрабатывать?!


 
Gun Expert   (2004-11-11 15:53) [2]

используется string или null-terminated string? Если string, то каким именно образом ты их туда "пихаешь"?


 
Rem ©   (2004-11-11 15:58) [3]

Gun Expert   (11.11.04 15:53)
 Чем, по-Вашему, отличаются приведенные Вами типы данных в контексте вопроса?

Zilog ©   (11.11.04 15:19)  
 Вы что, не знаете, что такое массив?


 
Zilog ©   (2004-11-11 16:03) [4]

Удалено модератором
Примечание: Не груби


 
Gun Expert   (2004-11-11 16:04) [5]

всего лишь интерпретацией их компилятором: "начинает прыгать длина стринга (если попадается ноль)."


 
Владислав ©   (2004-11-11 17:54) [6]

Строкой вполне можно пользоваться, если не хотите самостоятельно заботиться о высвобождении памяти. Просто перед использованием данных нужно сделать соответствующее приведение типов.
Но для того, чтобы этим пользоваться, нужно четко понимать, что есть строки, и как они "обрабатываются" компилятором, и какой код в итоге получается.
Судя по фразе "начинает прыгать длина стринга (если попадается ноль)", Вы это себе слабо представляете.
Так в чем вопрос то? Как, конкретно, нужно обрабатывать данные?
Например, размер данных можно хранить в отдельной переменной, а обращаться к данным так PByte(Pointer(MyString))^, или так PByte(Cardinal(Pointer(MyString)) + ByteNumberN)^.


 
mike-d ©   (2004-11-11 22:10) [7]

вообще-то для этого используется достаточно длинный (4096 например) буфер байтов, работающий по принципу FIFO.
Есть неплохие библиотеки на sourceforge.net - Turbopower Systools - исходники открыты. Тексты хорошо оформлены и документированы... Также, для работы с портом - ищи там же Turbopower AsyncProfessional...


 
Германн ©   (2004-11-12 03:15) [8]

2 Zilog ©   (11.11.04 15:19)
Если некое устройство "возвращает через com порт данные", то либо вы должны знать, что это за данные, и запоминать их в соответствуюших структурах. Либо сохраняйте эти данные в Hex - формате в  текстовый файл (или в бинарный файл - просто байты данных). Потом можно будет разобраться, может быть.

А для начала, учтите mike-d ©   (11.11.04 22:10) [7]
Только про FIFO не читайте. Достаточно array[0..4095] of Byte;


 
jack128 ©   (2004-11-12 03:56) [9]

Длинной строкой как буффером для нетипизированных данных пользоваться можно и может даже нужно.  Очень удобно + гарантированное отсутствие мемликов..
Владислав ©   (11.11.04 17:54) [6]
PByte(Cardinal(Pointer(MyString)) + ByteNumberN)^.

byte(MyString[ByteNumberN]) ??? ;-)



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

Текущий архив: 2004.11.28;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.06 c
14-1100295907
ZDDR
2004-11-13 00:45
2004.11.28
Народ помогите найти дрова на


1-1100628428
Змей
2004-11-16 21:07
2004.11.28
Form>bolderstyle


1-1100061003
officeman
2004-11-10 07:30
2004.11.28
про tStringList.Create


8-1093358756
redlord
2004-08-24 18:45
2004.11.28
как стереть изображение в компоненте Image


4-1097682747
Hmm
2004-10-13 19:52
2004.11.28
isql.exe или как выполнить команду в консольном приложении... ?