Вверх ↑
Этот топик читают: Гость
Ответов: 5
Рейтинг: 0
#1: 2017-01-16 12:23:49 ЛС | профиль | цитата
Доброго времени суток!
Никак не удаётся сделать запись файла в COM-порт. Везде в примерах только чтение из COM-порта или в лучшем случае запись одного байта.
Прошу помощи у коллективного разума.
карма: 0

0
Ответов: 8923
Рейтинг: 823
#2: 2017-01-16 13:55:43 ЛС | профиль | цитата
vas31, так передать файл или принять И в том и в другом случае нужен какой-то протокол, чтобы обозначить начало, характеристики и окончание файла
Схема


Add(MainForm,2953706,672,168)
{
}
Add(Button,10609792,119,91)
{
Left=5
Top=25
Width=70
Caption="Откр. файл"
link(onClick,7855913:doExecute,[])
}
Add(LED,7789952,679,84)
{
Left=355
Top=25
}
Add(Edit,15163121,476,35)
{
Left=90
Top=25
Text="1"
DataType=2
}
Add(Edit,15461485,518,35)
{
Left=155
Top=25
Text="9600"
DataType=2
}
Add(ODialog,7855913,168,91)
{
link(onExecute,12614718:doEvent1,[])
}
Add(FileStream,8706425,294,105)
{
Point(doPosition)
}
Add(Hub,12614718,217,91)
{
OutCount=4
link(onEvent1,9679773:doClear,[(515,97)(515,181)])
link(onEvent2,16118127:doOperation,[])
link(onEvent3,8706425:doOpen,[])
link(onEvent4,4825980:doData,[(242,118)(242,125)])
}
Add(DataToFile,472602,294,203)
{
link(onGet,14799729:doConvert,[])
link(Stream,8706425:Stream,[])
}
Add(DoData,4825980,252,119)
{
link(onEventData,8706425:doPosition,[])
}
Add(COM,13898442,476,168)
{
link(onWrite,9679773:doOperation,[])
link(Port,15163121:Text,[])
link(BaudRate,14231271:Var1,[(489,75)])
}
Add(Hub,4410691,623,98)
{
link(onEvent1,7789952:doOn,[])
link(onEvent2,12316447:doEvent1,[(648,111)(648,156)(46,156)(46,188)])
}
Add(MathParse,15239014,574,98)
{
MathStr="1050*(10*%2)/%1"
ResultType=0
link(onResult,4410691:doEvent1,[])
link(X1,14231271:Var3,[(580,75)])
}
Add(GetDataEx,14231271,518,70)
{
link(Data,15461485:Text,[])
}
Add(Edit,1705103,560,35)
{
Left=220
Top=25
Text="256"
DataType=2
}
Add(Label,5613966,420,35)
{
Left=95
Top=5
Width=285
Caption="№СОМ Скорость Байт/Данные Байт/Контроль"
AutoSize=1
}
Add(StrCat,11437738,392,203)
{
Point(doClear)
link(Str1,9627575:Var3,[(398,194)(412,194)(412,243)])
}
Add(Convertor,14799729,343,203)
{
Mode=4
link(onResult,11437738:doStrCat,[])
}
Add(Edit,9806918,602,35)
{
Left=295
Top=25
Text="0"
DataType=2
}
Add(Thread,16194867,147,196)
{
Point(doDelay)
link(onExec,16145863:doEvent1,[])
}
Add(Timer,4948394,91,196)
{
Interval=10
Enable=1
AutoStop=1
link(onTimer,16194867:doStart,[])
}
Add(Hub,12316447,56,182)
{
OutCount=3
link(onEvent1,13898442:doOpen,[(178,188)(178,174)])
link(onEvent2,16194867:doDelay,[(131,195)(131,216)])
link(onEvent3,4948394:doTimer,[])
}
Add(Timer,7403038,63,231)
{
Interval=10
Enable=1
AutoStop=1
link(onTimer,15978316:doEvent1,[])
}
Add(For,9526170,238,210)
{
IncludeEnd=1
link(onEvent,472602:doGet,[])
link(onStop,14518926:doData,[(277,223)(277,265)])
link(End,4284252:Var1,[(251,83)])
}
Add(Math,9679773,539,168)
{
Point(doClear)
link(onResult,3089437:doCompare,[])
link(Op1,9679773:Result,[(545,159)(531,159)(531,207)(545,207)])
}
Add(DoData,14518926,392,259)
{
link(onEventData,13898442:doWrite,[(431,265)(431,195)])
link(Data,9627575:Var2,[])
}
Add(GetDataEx,9627575,392,238)
{
link(Data,11437738:Result,[])
}
Add(Hub,16145863,196,196)
{
link(onEvent1,11437738:doClear,[(383,202)(383,216)])
link(onEvent2,9526170:doFor,[(228,209)(228,216)])
}
Add(Math,16118127,525,98)
{
ResultType=0
link(onResult,15239014:doCalc,[])
link(Op1,4284252:Var2,[])
link(Op2,9806918:Text,[(538,89)(608,89)])
}
Add(If_else,3089437,581,168)
{
Type=2
link(onTrue,2953706:doCaption,[])
link(onFalse,7403038:doTimer,[(620,181)(620,272)(53,272)(53,237)])
link(Op1,8706425:Size,[(587,152)(307,152)])
link(Op2,8706425:Position,[(594,145)(314,145)])
}
Add(Hub,15978316,105,231)
{
OutCount=3
link(onEvent1,16194867:doStop,[(137,237)(137,209)])
link(onEvent2,13898442:doClose,[(185,244)(185,181)])
link(onEvent3,7789952:doOff,[(655,251)(655,97)])
}
Add(GetDataEx,4284252,525,78)
{
Angle=1
link(Data,1705103:Text,[(566,83)])
}
карма: 19

0
Ответов: 9906
Рейтинг: 351
#3: 2017-01-16 15:43:15 ЛС | профиль | цитата
Да проще все...
Чего вы проблемы изобретаете все время.
И гордитесь их преодолением

Add(Button,10609792,287,147)
{
Left=5
Top=25
Width=70
Caption="Откр. файл"
link(onClick,7855913:doExecute,[])
}
Add(ODialog,7855913,336,147)
{
link(onExecute,12614718:doEvent1,[])
}
Add(FileStream,8706425,420,154)
{
Point(doPosition)
link(onLoad,14284061:doConvert,[])
}
Add(Hub,12614718,385,147)
{
OutCount=3
link(onEvent1,13898442:doOpen,[(410,153)(410,139)])
link(onEvent2,8706425:doOpen,[])
link(onEvent3,8706425:doClose,[])
}
Add(Convertor,14284061,469,154)
{
Mode=11
link(onResult,13898442:doWrite,[])
}
Add(Edit,15163121,469,77)
{
Left=90
Top=25
Text="1"
DataType=2
}
Add(Edit,15461485,525,77)
{
Left=155
Top=25
Text="9600"
DataType=2
}
Add(COM,13898442,518,133)
{
link(Port,15163121:Text,[(524,124)(475,124)])
link(BaudRate,15461485:Text,[])
}
карма: 9

0
Ответов: 8923
Рейтинг: 823
#4: 2017-01-16 16:56:05 ЛС | профиль | цитата
Galkov, конечно и проще и быстрее, я-то имел ввиду полученных контроль кусочков, получение ответа и регулировка скорости в развитии схемки.
карма: 19

0
Ответов: 5
Рейтинг: 0
#5: 2017-01-17 17:18:45 ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2017-01-17 17:28:55
карма: 0

0
Ответов: 8923
Рейтинг: 823
#6: 2017-01-17 18:10:06 ЛС | профиль | цитата
vas31, а что сказать-то хотели
карма: 19

0
Ответов: 5
Рейтинг: 0
#7: 2017-01-17 20:35:59 ЛС | профиль | цитата
Galkov писал(а):
Да проще все...


Большое спасибо за пример!

--- Добавлено в 2017-01-17 20:38:39

Леонид писал(а):
vas31, а что сказать-то хотели


Движок форумный здесь какой-то неполноценный... т.е. я хотел сказать не привычный (например нельзя удалить свое сообщение), ещё не привык к нему.

Редактировалось 1 раз(а), последний 2017-01-17 20:38:39
карма: 0

0
Ответов: 5
Рейтинг: 0
#8: 2017-01-18 17:20:27 ЛС | профиль | цитата
Galkov писал(а):
Да проще все...


А существует возможность распараллелить событие (один вход -> два выхода), чтобы оно поступило сразу на входы двух компонентов ?.
Хаб не подходит, по-крайней мере в работе с компонентом COM-порта. Хотелось бы прикрутить горящий светодиод, пока идет запись в COM-порт,
а после окончания записи (достигли конца файла) гасить светодиод. Пробывал разные варианты, но везде компонент COM-порта "стопорит" генерацию
второго события и "отпускает" только после записи всего файла. В итоге светодиод загорается только, когда файл полностью запишется в ком-порт.
Если не использовать компонент COM-порта, то распараллеливание события (через Хаб) отрабатывает нормально. Или с компонентом COM-порта мою хотелку не прикрутить (может фитча у него такая) ?
карма: 0

0
Ответов: 8923
Рейтинг: 823
#9: 2017-01-18 19:20:41 ЛС | профиль | цитата
vas31, надо чуть задержать выполнение таймером или Thread с автостопом:
схема


Add(MainForm,2953706,644,196)
{
}
Add(Button,10609792,252,189)
{
Left=5
Top=25
Width=70
Caption="Откр. файл"
link(onClick,7855913:doExecute,[])
}
Add(ODialog,7855913,301,189)
{
link(onExecute,12614718:doEvent1,[])
}
Add(FileStream,8706425,455,231)
{
Point(doPosition)
link(onLoad,14284061:doConvert,[])
link(FileName,8358801:Value,[])
}
Add(Hub,12614718,350,189)
{
OutCount=3
link(onEvent1,8358801:doValue,[])
link(onEvent2,11398203:doOn,[(440,202)(440,160)])
link(onEvent3,1156715:doTimer,[(375,209)(375,237)])
}
Add(Convertor,14284061,504,231)
{
Mode=11
link(onResult,13898442:doWrite,[(543,237)(543,216)])
}
Add(Edit,15163121,518,133)
{
Left=90
Top=25
Text="1"
DataType=2
}
Add(Edit,15461485,560,133)
{
Left=155
Top=25
Text="9600"
DataType=2
}
Add(COM,13898442,553,189)
{
link(onWrite,11769587:doEvent1,[])
link(Port,15163121:Text,[(559,180)(524,180)])
link(BaudRate,15461485:Text,[])
}
Add(Memory,8358801,455,189)
{
link(onData,13898442:doOpen,[])
}
Add(Hub,9963237,427,231)
{
link(onEvent1,8706425:doOpen,[])
link(onEvent2,8706425:doClose,[])
}
Add(LED,11398203,455,140)
{
Left=235
Top=30
}
Add(Timer,1156715,385,231)
{
Interval=10
Enable=1
AutoStop=1
link(onTimer,9963237:doEvent1,[])
}
Add(Hub,11769587,609,189)
{
link(onEvent1,11398203:doOff,[(634,195)(634,125)(445,125)(445,153)])
link(onEvent2,2953706:doCaption,[])
}

карма: 19

0
Ответов: 5
Рейтинг: 0
#10: 2017-01-19 12:35:26 ЛС | профиль | цитата
Леонид писал(а):
vas31, надо чуть задержать выполнение таймером или Thread с автостопом


Спасибо! Будем дальше ковырять HiAsm Да, как ни крути, а выходит, что самое главное - это мелочи.
карма: 0

0
10
Сообщение
...
Прикрепленные файлы
(файлы не залиты)