Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

послать на rs232 17kb данных [D7, D2005, XP]


Страницы:   1 2

Asmadei ©   (2006-03-20 19:05:00) 

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


tesseract   (2006-03-25 13:26:00) [1]

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

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


Asmadei   (2006-03-25 09:50:00) [2]

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


tesseract   (2006-03-23 09:36:00) [3]


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

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

и 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-22 22:51:00) [4]

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

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


tesseract   (2006-03-22 21:38:00) [5]


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

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


Asmadei   (2006-03-22 19:19:00) [6]

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


Asmadei   (2006-03-22 18:25:00) [7]

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


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


> 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-21 23:08:00) [9]

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


tesseract   (2006-03-21 09:15:00) [10]


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

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


Asmadei   (2006-03-21 00:21:00) [11]

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


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

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

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

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


Asmadei   (2006-03-20 23:58:00) [13]

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


tesseract   (2006-03-20 23:48:00) [14]

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

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

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


Asmadei   (2006-03-20 23:42:00) [15]

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


tesseract   (2006-03-20 23:22:00) [16]


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

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


Asmadei   (2006-03-20 23:14:00) [17]

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


tesseract   (2006-03-20 23:01:00) [18]

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

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


Asmadei   (2006-03-20 22:58:00) [19]

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


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


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

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

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо