Ведущим в шине является компьютер, соответственно общение происходит циклически:
запрос устройству 1 - ответ устройства 1
запрос устройству 2 - ответ устройства 2
...
запрос устройству N - ответ устройства N
Работа ведется через компонент Synaser.
Наконец то добрался до вопроса - между ответом устройства n и запросом устройству n+1, внедряется пауза длительностью примерно 3,5 миллисекунды.
Вот отрывок осцилограммы:
ЗУ1_ОУ1________________ 3,5мс ________________ЗУ2_ОУ2___________
где ЗУ-запрос устройству
ОУ-ответ устройства
и код который выполняется в отдельном потоке
- Код: Выделить всё
- ...
 ser:=TBlockserial.Create; //создаем устройство
 ser.RaiseExcept:=false; //не обрабатываем исключения ошибок связи
 ser.Connect('com2'); //соединяемся с портом
 ser.Config(115200,8,'N',0,false,false);//настраиваем скорость, стоп биты, паритет
 repeat
 ser.SendInteger((_data[1] shl 0)or(_data[2] shl 8)or(_data[3] shl 16)or(_data[4] shl 24));
 ser.RecvInteger(1);//очистка приемного буфера
 a:=ser.RecvByte(1);//читаем ответ
 until Terminated;
 ser.Free;
 end;
Откуда берется пауза в 3,5 миллисекунды?
И как от нее избавиться? (Если это конечно возможно...)




 . (Т.е.LastError=0)  И только при попытке записать что либо в порт - отбивает - Access violation.
 . (Т.е.LastError=0)  И только при попытке записать что либо в порт - отбивает - Access violation.


 .
 .