Форум: "Начинающим";
Текущий архив: 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.014 c