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

Вниз

устройство возвращает через 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.036 c
14-1100011016
cjkorg
2004-11-09 17:36
2004.11.28
Программа, удаляющая из матрицы [A] строку и столбец, содержащие


1-1100558142
Поручик
2004-11-16 01:35
2004.11.28
Потоки


4-1097774650
ALex B.
2004-10-14 21:24
2004.11.28
Win Api функция чтения из регистра.


6-1095342619
kukuikar
2004-09-16 17:50
2004.11.28
Определяю IP


14-1100075555
}|{yk
2004-11-10 11:32
2004.11.28
Вышел Thunderbird 0.9





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский