Вверх ↑
Этот топик читают: Гость
Ответов: 704
Рейтинг: 7
#1: 2014-02-05 20:42:17 ЛС | профиль | цитата
В общем упростил схему для понимания. Ошибка сохранилась. Ошибка "Код исключения: c0000005". Попеременно чередуются с "эксепшн, кеннот рид мемори трын-дын-тын". Поиск секретным компилятором с кодом -Fадрес_ошибки ссылается на system.pas .
ComAsync удобен именно тем, что умеет отслеживать символ окончания посылки и знает сколько символов пришло. Видимо виноват он, но может можно как-то его приструнить? На одноядерном компе проблем не заметил. Буду рад любым подсказкам...

code_32984.txt
карма: 0

0
файлы: 1code_32984.txt [3.5KB] [291]
Ответов: 8948
Рейтинг: 824
#2: 2014-02-05 21:45:02 ЛС | профиль | цитата
[b]Neo[/b], а такой есть?

Add(COMEX,15471183,259,329)
{
}
карма: 19

1
Голосовали:Neo
Ответов: 704
Рейтинг: 7
#3: 2014-02-06 00:20:43 ЛС | профиль | цитата
Леонид, сейчас поставлю и проверю на нем.
------------ Дoбавленo в 23.00:
Может я не знаю чего-то? Вроде начинает работать, и все заканчивается разрывом ответов даже в синхронном режиме приема. Может ему буфер какой нужно соорудить? А иногда тупо не отвечает ничего на сообщение. Видать буферы забиваются обрывками... ComAsync в в этой же схеме таких ошибок не дает. Только с двумя ядрами у него проблемы.
------------ Дoбавленo в 00.20:
Выходит что ответ режется иногда. И дальше программа шлет новую команду, пока еще передается старая - ошибка на девайсе. COMEX неправильно определяет конец ответа.
карма: 0

0
Ответов: 8948
Рейтинг: 824
#4: 2014-02-06 00:25:01 ЛС | профиль | цитата
Neo, почитайте соседнюю тему COM с управлением потоком XON/XOFF, вдруг поможет
карма: 19

0
Ответов: 704
Рейтинг: 7
#5: 2014-02-06 16:18:33 ЛС | профиль | цитата
Эта схема решает проблему когда com режет ответы. Тестирую на баги с COMEX
code_32985.txt
------------ Дoбавленo в 16.18:
Глупости это были, то неправильная схема. Вот кубик, который ставится на выходе из порта и выпрямляет кривые ответы. Окончание здесь по символу 13.
Add(MultiElement,1411718,511,497)
{
}
BEGIN_SDK
Add(EditMulti,626668,21,21)
{
EventCount=1
WorkCount=1
link(doWork1,10520091:doEnum,[(95,27)(95,55)])
}
Add(Convertor,10490795,189,49)
{
Mode=3
link(onResult,2779598:doCompare,[])
}
Add(Str_Enum,10520091,105,49)
{
Delimiter=""
link(onEnum,11406171:doEvent1,[])
}
Add(If_else,2779598,238,49)
{
Op2=Integer(13)
link(onTrue,11649065:doEvent1,[(284,55)(284,125)(88,125)(88,160)])
}
Add(StrCat,12129821,112,105)
{
Point(doClear)
link(Str1,16773958:Var1,[(118,96)(104,96)(104,145)])
}
Add(DoData,13436611,140,154)
{
link(onEventData,626668:onEvent1,[(291,160)(291,27)])
link(Data,16773958:Var3,[(146,145)])
}
Add(GetDataEx,16773958,112,140)
{
link(Data,12129821:Result,[])
}
Add(Hub,11649065,98,154)
{
link(onEvent1,13436611:doData,[])
link(onEvent2,12129821:doClear,[(123,167)(123,181)(81,181)(81,118)])
}
Add(Hub,11406171,147,49)
{
link(onEvent1,12129821:doStrCat,[(172,55)(172,90)(95,90)(95,111)])
link(onEvent2,10490795:doConvert,[(179,62)(179,55)])
}
END_SDK


карма: 0

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