Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26160
Рейтинг: 2127
#16: 2011-01-21 09:00:02 ЛС | профиль | цитата
AVladM писал(а):
при неизменной входной строке при каждом нажатии кнопки выдает разный байт CRC

Гы, а сам не догодался, что накопители очищать надо

code_22244.txt
------------ Дoбавленo в 09.00:
AVladM писал(а):
"...на математическом методе расчета CRC8" выдает ошибку "List index out of bounds(40)"

Ну да, все правильно. Я использую последние компоненты, с последними добавлениями и правками. А если используется версия из коробки, то так оно и будет. В моей схеме, в Math, содержиться метод Odd, которой в коробочной версии нет, а будет только в следующей версии. Для полной совместимости с моими схемами надо обновлять HiAsm и все компоненты
карма: 22

0
файлы: 1code_22244.txt [3.5KB] [196]
Ответов: 55
Рейтинг: 0
#17: 2011-01-21 12:04:14 ЛС | профиль | цитата
Спасибо! Продолжаю учиться.
Последние компоненты это в ночных сборках? Потому что я сейчас скачал через wiki Math но там нет этого метода.
карма: 0

0
Ответов: 1528
Рейтинг: 57
#18: 2011-01-21 16:56:49 ЛС | профиль | цитата
http://www.hiasm.com/forum.html?q=3&p=131563
карма: 0

0
Ответов: 55
Рейтинг: 0
#19: 2011-01-24 15:02:45 ЛС | профиль | цитата
Спасибо! Мне помогла ночная сборка.
Вот что получилось
code_22287.txt
Не смог найти элемент, который выводит данные из потока.Может можно как-то оптимизировать?
карма: 0

0
файлы: 1code_22287.txt [4.7KB] [143]
Разработчик
Ответов: 26160
Рейтинг: 2127
#20: 2011-01-24 15:27:06 ЛС | профиль | цитата
AVladM писал(а):
Не смог найти элемент, который выводит данные из потока

А я не смог понять -- что конкретно надо

------------ Дoбавленo в 15.27:
А зачем там применется входной StrEnum Или данные передаются не по 7-мь байтов, а потоком, в несколько последовательностей, но тогда предыдущие последовательности надо удалять из потока
карма: 22

0
Ответов: 55
Рейтинг: 0
#21: 2011-01-24 17:02:51 ЛС | профиль | цитата
Из-за неопытности я искал что-то похожее на DoData, только наоборот. И нашел Memory.
Я уже писал что данные у меня идут через секунду и на выходе из конвертера периодически пропадают, а после StrEnum
стоят стабильно. В процессе перебора вариантов, не до конца понимая смысл,пришел к такому варианту.
Мне сейчас нужно данные заносить в файл в виде отдельных цифровых значений. Я воспользовался ранее полученной программой и вот что получилось:
code_22288.txt
Нужно ли что-нибудь править?
карма: 0

0
файлы: 1code_22288.txt [1.1KB] [145]
Разработчик
Ответов: 26160
Рейтинг: 2127
#22: 2011-01-24 17:44:59 ЛС | профиль | цитата
AVladM, покажи твою схему чтения порта
------------ Дoбавленo в 17.44:
Я так думаю, что вот так будет работать без пропадания



Add(MainForm,2953706,154,245)
{
}
Add(Copy,7091940,336,105)
{
Position=13
Count=2
link(onCopy,2219263:doValue,[])
}
Add(Copy,10229256,287,154)
{
Position=1
Count=12
link(onCopy,11622617:doWork1,[])
}
Add(Stream2Hex,12920966,196,147)
{
Mode=2
link(onResult,11231031:doEvent1,[])
}
Add(MultiElement,11622617,336,154)
{
@Hint=#13:Расчетный CRC|
link(onEvent1,4727916:doCompare,[(387,160)(387,251)])
AddHint(-151,51,95,13,@Hint)
}
BEGIN_SDK
Add(EditMulti,278799,21,21)
{
EventCount=1
WorkCount=1
DataCount=1
VarCount=1
Width=517
Height=172
VOffset=49
HOffset=21
link(doWork1,10934012:doValue,[])
link(Var1,4573655:Var2,[])
}
Add(StrList,11855802,469,56)
{
Strings=#1:0|2:94|3:188|3:226|2:97|2:63|3:221|3:131|3:194|3:156|3:126|2:32|3:163|3:253|2:31|2:65|3:157|3:195|2:33|3:127|3:252|3:162|2:64|2:30|2:95|1:1|3:227|3:189|2:62|2:96|3:130|3:220|2:35|3:125|3:159|3:193|2:66|2:28|3:254|3:160|3:225|3:191|2:93|1:3|3:128|3:222|2:60|2:98|3:190|3:224|1:2|2:92|3:223|3:129|2:99|2:61|3:124|2:34|3:192|3:158|2:29|2:67|3:161|3:255|2:70|2:24|3:250|3:164|2:39|3:121|3:155|3:197|3:132|3:218|2:56|3:102|3:229|3:187|2:89|1:7|3:219|3:133|3:103|2:57|3:186|3:228|1:6|2:88|2:25|2:71|3:165|3:251|3:120|2:38|3:196|3:154|3:101|2:59|3:217|3:135|1:4|2:90|3:184|3:230|3:167|3:249|2:27|2:69|3:198|3:152|3:122|2:36|3:248|3:166|2:68|2:26|3:153|3:199|2:37|3:123|2:58|3:100|3:134|3:216|2:91|1:5|3:231|3:185|3:140|3:210|2:48|3:110|3:237|3:179|2:81|2:15|2:78|2:16|3:242|3:172|2:47|3:113|3:147|3:205|2:17|2:79|3:173|3:243|3:112|2:46|3:204|3:146|3:211|3:141|3:111|2:49|3:178|3:236|2:14|2:80|3:175|3:241|2:19|2:77|3:206|3:144|3:114|2:44|3:109|2:51|3:209|3:143|2:12|2:82|3:176|3:238|2:50|3:108|3:142|3:208|2:83|2:13|3:239|3:177|3:240|3:174|2:76|2:18|3:145|3:207|2:45|3:115|3:202|3:148|3:118|2:40|3:171|3:245|2:23|2:73|1:8|2:86|3:180|3:234|3:105|2:55|3:213|3:139|2:87|1:9|3:235|3:181|2:54|3:104|3:138|3:212|3:149|3:203|2:41|3:119|3:244|3:170|2:72|2:22|3:233|3:183|2:85|2:11|3:136|3:214|2:52|3:106|2:43|3:117|3:151|3:201|2:74|2:20|3:246|3:168|3:116|2:42|3:200|3:150|2:21|2:75|3:169|3:247|3:182|3:232|2:10|2:84|3:215|3:137|3:107|2:53|
Point(onGetString)
Point(doGetString)
link(onGetString,5700483:doValue,[(513,69)(513,27)(389,27)(389,48)])
}
Add(Str_Enum,1546758,294,133)
{
Delimiter=" "
link(onEnum,15167751:doConvert,[(340,139)(340,104)])
link(onEndEnum,2997465:doEvent1,[])
}
Add(Memory,5700483,406,42)
{
Default=Integer(0)
}
Add(Convertor,15167751,350,98)
{
Mode=5
link(onResult,4051713:doOperation,[])
}
Add(Math,4051713,406,98)
{
OpType=6
ResultType=0
link(onResult,11855802:doGetString,[])
link(Op1,12000724:Var2,[])
}
Add(Hub,2997465,350,140)
{
OutCount=3
link(onEvent1,15212944:doConvert,[])
link(onEvent2,5700483:doClear,[(395,153)(395,55)])
link(onEvent3,15839016:doClear,[(394,160)(394,175)(223,175)(223,83)])
}
Add(GetDataEx,12000724,406,77)
{
link(Data,5700483:Value,[])
}
Add(Convertor,15212944,448,140)
{
Mode=6
link(onResult,278799:onEvent1,[(518,146)(518,76)])
link(Data,12000724:Var3,[(454,82)])
}
Add(Length,15539805,84,70)
{
link(onLength,3158290:doFor,[])
}
Add(For,3158290,133,70)
{
Start=1
Step=2
IncludeEnd=1
InData=0
link(onEvent,14093344:doCopy,[])
link(onStop,7179363:doTrim,[(177,83)(177,139)])
}
Add(Copy,14093344,182,70)
{
Count=2
link(onCopy,15839016:doStrCatDlm,[])
link(Str,4573655:Var3,[(188,55)(124,55)(124,117)])
}
Add(Memory,10934012,42,70)
{
Point(Data)
link(onData,15539805:doLength,[])
}
Add(StrCatDelim,15839016,245,70)
{
Delimiter=" "
Point(doClear)
link(Str1,2941308:Var1,[(251,58)(240,58)(240,117)])
}
Add(GetDataEx,2941308,245,112)
{
link(Data,15839016:Result,[])
}
Add(Trim,7179363,245,133)
{
Char=" "
link(onTrim,1546758:doEnum,[])
link(Text,2941308:Var2,[])
}
Add(GetDataEx,4573655,42,112)
{
link(Data,10934012:Value,[])
}
END_SDK
Add(Hub,11231031,245,147)
{
link(onEvent1,7091940:doCopy,[(274,153)(274,111)])
link(onEvent2,10229256:doCopy,[])
}
Add(If_else,4727916,406,245)
{
@Hint=#55:Если расчетный CRC равен переданному, то выводим данные|
link(onTrue,12144612:doData,[])
link(Op2,2219263:Value,[])
AddHint(58,47,174,26,@Hint)
}
Add(Memory,2219263,413,105)
{
@Hint=#14:Переданный CRC|
AddHint(48,49,104,13,@Hint)
}
Add(DoData,12144612,462,245)
{
link(Data,11622617:Var1,[(468,215)(342,215)])
}
Add(Case,14202382,147,147)
{
@Hint=#49:Если данные не равны пустой строке, то пропустить|
Value=String()
link(onNextCase,12920966:doConvert,[])
AddHint(53,-81,171,26,@Hint)
}

карма: 22

0
Гость
Ответов: 17029
Рейтинг: 0
#23: 2011-01-25 14:31:35 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-04 20:51:15
карма: 0

0
Ответов: 4630
Рейтинг: 749
#24: 2011-01-25 14:40:03 ЛС | профиль | цитата
Метод doSave в StrList так работает.
Вариант решения: перед сохранением загружать содержимое файла,
прибавлять к нему новое содержимое StrList и сохранять.
карма: 26

0
Ответов: 55
Рейтинг: 0
#25: 2011-01-25 14:42:43 ЛС | профиль | цитата
Забыл войти. А проще нельзя?
карма: 0

0
Разработчик
Ответов: 26160
Рейтинг: 2127
#26: 2011-01-25 14:52:17 ЛС | профиль | цитата
Netspirit писал(а):
прибавлять к нему новое содержимое StrList и сохранять

Млин, вы хоть на точки-то смотрите и изучаете их работу --
doAppend=Добавляет список строк к файлу

Те, текущее содержимое StrList-a, добавляется к уже существующему файлу. Эnот метод используется вместо doSave именно для создани log файлов
карма: 22

0
Ответов: 4630
Рейтинг: 749
#27: 2011-01-25 14:58:02 ЛС | профиль | цитата
О, точно
карма: 26

0
Ответов: 55
Рейтинг: 0
#28: 2011-01-25 15:20:32 ЛС | профиль | цитата
Спасибо!Надо тщательнее изучать.
карма: 0

0
Ответов: 55
Рейтинг: 0
#29: 2011-01-26 15:47:45 ЛС | профиль | цитата
Записываю данные строками в файл.Данные идут часто и файл стремительно разрастается. Как записывать в файл строки при событии сначала первую, а потом каждую десятую? Пробовал использовать Цикл с условием, таймер и счетчик, но не получается.

карма: 0

0
Разработчик
Ответов: 26160
Рейтинг: 2127
#30: 2011-01-26 16:04:00 ЛС | профиль | цитата
AVladM писал(а):
Пробовал использовать Цикл с условием, таймер и счетчик, но не получается

Нафиг тебе там таймер, отсчитывай doAdd на StrList
карма: 22

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