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

Вниз

послать на 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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.04 c
15-1142911668
Parus
2006-03-21 06:27
2006.04.09
Тайные конференции


2-1143240003
Locke
2006-03-25 01:40
2006.04.09
перемещение региона вместе с формой которую он ограничивает


2-1143012309
SEMYONov
2006-03-22 10:25
2006.04.09
Как получить список всех пользователей копьютера в ХР


1-1141294068
caries
2006-03-02 13:07
2006.04.09
Как вычислить разницу в датах?


2-1143211969
JohnKorsh
2006-03-24 17:52
2006.04.09
Могут ли D5 и D7 сосуществовать на одном копьютере?