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

Вниз

послать на rs232 17kb данных   Найти похожие ветки 

 
Asmadei ©   (2006-03-20 19:05) [0]

послать на rs232 17kb данных,данные не текстовые.
вопросов несколько:
как посылать значения в хексе на порт, если объем данных большой?
не теряется ли значения если использовать char string для хранения hex значений, (типа считывать из файла по 255 символов(значений) и посылать на порт)?


 
tesseract ©   (2006-03-20 21:52) [1]


> послать на rs232 17kb данных,данные не текстовые.

Встречный вопрос, а чем данные тестовые отличаются от двоичных?

Rs232 существенно до фонаря что по нему шлют и куда.


 
Asmadei ©   (2006-03-20 22:35) [2]

я правильно понимаю, достаточно посимвольно считывать из файла символ и передавать его?
а есть возможность не держать данные в файле, а включить в тело программы? и как тогда к ним обращаться?
в модулях которые есть у меня
посылать данные можно или посимвольно (Char)
либо посылается строка (макс 255 символов)
либо посылается переменная имеющая тип Pchar - что это за зверь и как с ним работать применимо к моей задаче не знаю. Посему и обратился за помощью.


 
tesseract ©   (2006-03-20 22:38) [3]


> либо посылается переменная имеющая тип Pchar

строка заканчивающаяся нулём. Как правило применяется как заменитель указателя/дин массива.

посимвольно данные передавать - гемор. Лучше сразу буфером по паре - тройке килобайт.


 
Asmadei ©   (2006-03-20 22:58) [4]

если не трудно, просьба подсказать как это сделать?
считывается весь файл в переменную типа ansistring?
а как сделать так, что бы все 17 кб были изначально в теле программы?


 
tesseract ©   (2006-03-20 23:01) [5]

Если это строки то см Resourcestring. можно дописать в ресурсы. Можно просто "навесить" в конец exe.

17 kb - отправить можно только вопрос, куда?


 
Asmadei ©   (2006-03-20 23:14) [6]

нет это не строки
файл одним куском(вернее содержимое файла) 17 kb  резидентная программа исполняемая на arm проце.
работа с телом идет через последовательный интерфейс
а что за Resoursestring? или как навесить в конец exeшника, какбудет происходить в этом случае обращение к файлу?


 
tesseract ©   (2006-03-20 23:22) [7]


> какбудет происходить в этом случае обращение к файлу?

А как sfx архивы  работают ?  Так же.  Просто отступает от конца нашего файла на размер архива  - сам код такая дописка  не затронет,  распаковываем, потом можно прочитать из него по 1 кб в массив и пинать в порт.


 
Asmadei ©   (2006-03-20 23:42) [8]

у меня нет опыта в этом, посему для меня темный лес
в коде обращение к файлу надо как то особенно обставлять?
если изначально подразумевалось нахождение файла в той же директории
то как здесь?


 
tesseract ©   (2006-03-20 23:48) [9]

Не понял - если хочешь отдельно файл ложить - ложи отдельно.
А так просто - ты ведь знаешь, что твой блок - 17Кб.  поэтому seek(размер файла-17 Кб) - вот твой кусок (можешь просто total commander-ом его приклеить).   и BlockREad(MyFile,temparray,1024)  (имеется в виду что Reset(myFile,1) выполнен ).

потом соответсвенно : WriteFile(hCom,temparray............

вроде не проблема. Только если мне не изменяет память процы прошиваются как правило через X-modem.


 
Asmadei ©   (2006-03-20 23:58) [10]

temparray это ansistring?
я прошу извинения за глупые вопросы
по поводу того как шьется тело, то здесь по другому
я могу прошить даже через терминал, если он допускат ввод команд в хексе, и при этом произвольной длинны.
захотелось зделать прогу одним файлом и без использования терминалов


 
tesseract ©   (2006-03-21 00:04) [11]

Объясни мне, зачем тебе string??????
Ты-же Raw-Data пишешь. Причём я не помню чтобы string нормально с APi функциями работал.

temparray это например

type TbyteArray:[0..32267] of byte // объявлен в systils.


 
Asmadei ©   (2006-03-21 00:21) [12]

я наверное торможу
просто ориентируюсь на библиотеки по работе с com портами
Зачем тогда они нужны если все так просто?


 
tesseract ©   (2006-03-21 09:15) [13]


> Зачем тогда они нужны если все так просто?

не знаю у меня свой компонент.


 
Asmadei ©   (2006-03-21 23:08) [14]

а что за компонент если не секрет?


 
Германн ©   (2006-03-22 02:14) [15]


> Asmadei ©   (21.03.06 00:21) [12]
>
> я наверное торможу
> просто ориентируюсь на библиотеки по работе с com портами
> Зачем тогда они нужны если все так просто?
> <Цитата>
> tesseract ©   (21.03.06 09:15) [13]
>
>
> > Зачем тогда они нужны если все так просто?
>
> не знаю у меня свой компонент.
> <Цитата>
> Asmadei ©   (21.03.06 23:08) [14]
>
> а что за компонент если не секрет?
> <Цитата>
>


Дык ведь если "всё так просто", зачем забивать голову всякой ерундой типа,  кто каким компонетом пользуется?


 
Asmadei ©   (2006-03-22 18:25) [16]

Воспользовался статьей с этого сайта по работе с ком портом,
засада заключается в том, что у меня несколько раз происходит обращение.
пытаюсь сделать между ними паузу (sleep) но либо не работает, либо не всегда срабатывает, записи в порт идут без паузы, кроме того сделал индикацию с помощью прогресс бар, при каждой записи в порт меняется значение.(должно)
на деле запись всего объема не прошла еще, а проресс бар уже пробежался до конца. и никак это безобразие не запаузить.
Есть подозрение что это изза того что запись осуществляется в потоке


 
Asmadei ©   (2006-03-22 19:19) [17]

Сразу же вопрос, как сделать так, что бы пока передача данных не произошла, следующие команды не начинались?


 
tesseract ©   (2006-03-22 21:38) [18]


> а что за компонент если не секрет?

Сам писал. Для себя.
Ну там из вкусностей - поддержка прямого доступа к драйверу в Win2k+. Поддержка масок приёма/передачи. Tread-safe и др.


 
Asmadei ©   (2006-03-22 22:51) [19]

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

А то бред какой-то: данные еще передаются а порт закрывается, или данные накладываются


 
tesseract ©   (2006-03-23 09:36) [20]


> А то бред какой-то: данные еще передаются а порт закрывается,
>  или данные накладываются

Используй асинхронный доступ.

и GetOverlappedResult. +GetLastError после него.

Так для примера (не взумай в рабочий вставлять)

succ :=WriteFile(hCom,buffer,size,result,@REadOL);
      if not succ then
            begin
             tmp:=GetLastError;
              if tmp=ERROR_IO_PENDING then
              if WaitForSingleObject(ReadOl.hEvent,WaitInt)=WAIT_OBJECT_0 then
               if GetOverlappedResult(hCom, ReadOL, fREad,true)  then
                Succ:=true;
              end; // if not succ
 end // if fComWait


 
Asmadei ©   (2006-03-25 09:50) [21]

Осваиваю книгу Агурова, есть у кого диск с программами?
Нужен листинг программы из 2 главы, под Win с асинхронным доступом и т.д.


 
tesseract ©   (2006-03-25 13:26) [22]

Писать самому лень ?

главное не вторая глава, а 12. Пошло



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

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

Наверх





Память: 0.5 MB
Время: 0.012 c
8-1130620561
MegaGaga
2005-10-30 01:16
2006.04.09
Как использовать функции для рисованмя на Canvas`е на битмапе?


2-1143224598
Locke
2006-03-24 21:23
2006.04.09
замена формы на картинку


2-1143500522
Da Stranger
2006-03-28 03:02
2006.04.09
Изменение размера массива


10-1115966812
Irishka
2005-05-13 10:46
2006.04.09
TIMAGE и WORD


2-1143049354
Fenix
2006-03-22 20:42
2006.04.09
С чего начать





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